Linux kernel 通过内核模块发送ip数据包
我正在编写一个内核模块,它创建一个ip数据包并将其发送到所需的目的地。我正在使用Linux kernel 通过内核模块发送ip数据包,linux-kernel,Linux Kernel,我正在编写一个内核模块,它创建一个ip数据包并将其发送到所需的目的地。我正在使用中声明的函数ip\u forward()。当我试图编译代码时,我得到一个错误: “ip_前进”未定义 ip\u-forward未导出(无EXPORT\u-SYMBOL),因此无法从内核模块使用它 它也是IP堆栈的一个内部函数,不打算直接调用。它可能有各种各样的假设,这会给你带来麻烦 也许可以试试ip\u queue\u xmit,尽管我不能100%确定它是否可用。它是在哪个头文件中声明的……由哪个函数发送ip数据包…
中声明的函数ip\u forward()
。当我试图编译代码时,我得到一个错误:
“ip_前进”未定义
ip\u-forward
未导出(无EXPORT\u-SYMBOL
),因此无法从内核模块使用它
它也是IP堆栈的一个内部函数,不打算直接调用。它可能有各种各样的假设,这会给你带来麻烦
也许可以试试
ip\u queue\u xmit
,尽管我不能100%确定它是否可用。它是在哪个头文件中声明的……由哪个函数发送ip数据包……。它在net/ip.h中声明,在编译的/net/ipv4/ip\u forward.cip\u queue\u xmit
中定义,没有任何错误。但当我试图插入模块时,系统挂起,我不得不重新启动。我按如下方式调用函数:struct flowi*fl=NULL;fl->u.ip4.SADD=123456;fl->u.ip4.daddr=234567;如果(ip_queue_xmit(skb,fl)>=0)printk(KERN_EMERG“包传输”);else printk(KERN_EMERG“错误”);您需要调试。。。但是序列struct flowi*fl=NULL;fl->u.ip4.saddr=123456
肯定会在空指针解引用时崩溃。