私はipパケットを作成し、それを必要な宛先に送信するカーネルモジュールを作成しています。私はで宣言されたip_forward()
関数を使用しています。私は、コードをコンパイルしようとすると、私はエラーを取得:カーネルモジュール経由でipパケットを送信する
"ip_forward" undefined!
私はipパケットを作成し、それを必要な宛先に送信するカーネルモジュールを作成しています。私はで宣言されたip_forward()
関数を使用しています。私は、コードをコンパイルしようとすると、私はエラーを取得:カーネルモジュール経由でipパケットを送信する
"ip_forward" undefined!
ip_forward
を(なしEXPORT_SYMBOL
)エクスポートされませんので、あなたは、カーネルモジュールからそれを使用することはできません。
これはIPスタックの内部機能でもあり、直接呼び出されることはありません。それはあなたにトラブルを与えるだろう、あらゆる種類の仮定を持っているかもしれません。
恐らく、ip_queue_xmit
を試してみてください。私は100%利用可能ではないでしょう。
'ip_queue_xmit'はエラーなしでコンパイルされました。しかし、私はモジュールを挿入しようとすると、システムがハングアップし、再起動する必要があります。私は次のように関数を呼び出しています: struct flowi * fl = NULL; fl-> u.ip4.saddr = 123456; fl-> u.ip4.daddr = 234567; if(ip_queue_xmit(skb、fl)> = 0) printk(KERN_EMERG "Packet transmitted"); else printk(KERN_EMERG "Error"); – sax0406
あなたはデバッグする必要があります。しかし、 'struct flowi * fl = NULL; fl-> u.ip4.saddr = 123456'はNULLポインタの逆参照で確実にクラッシュします。 – ugoren
ヘッダファイルが宣言されています......どの関数によってあなたのIPパケットを送信していますか....... – karan421
net/ip.hで宣言され、/ net/ipv4で定義されています/ip_forward.c – sax0406