我正在寫一個內核模塊,它創建一個ip包並將其發送到所需的目的地。我正在使用在<net/ip.h>
中聲明的函數ip_forward()
。當我嘗試編譯代碼,我得到一個錯誤:通過內核模塊發送ip包
"ip_forward" undefined!
我正在寫一個內核模塊,它創建一個ip包並將其發送到所需的目的地。我正在使用在<net/ip.h>
中聲明的函數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;如果(ip_queue_xmit(skb,fl)> = 0) printk(KERN_EMERG「Packet transmit」);其他 printk(KERN_EMERG「Error」); – sax0406 2012-04-04 03:57:35
你需要調試......但是序列'struct flowi * fl = NULL; fl-> u.ip4.saddr = 123456'肯定會在NULL指針解引用時崩潰。 – ugoren 2012-04-04 06:33:58
其中頭文件被聲明......你用哪個函數發送你的ip包........ – karan421 2012-04-01 08:06:13
它在net/ip.h中聲明並在/ net/ipv4中定義/ip_forward.c – sax0406 2012-04-02 06:16:54