Sockets 编译iptables模块错误
我第一次尝试测试过滤modbus协议的旧iptables模块,我使用旧的fedora 7来避免兼容性问题,我在配置内核中激活该模块,但当我尝试创建时,我遇到了一些与skbuff.h库函数相关的问题:Sockets 编译iptables模块错误,sockets,compilation,kernel,iptables,Sockets,Compilation,Kernel,Iptables,我第一次尝试测试过滤modbus协议的旧iptables模块,我使用旧的fedora 7来避免兼容性问题,我在配置内核中激活该模块,但当我尝试创建时,我遇到了一些与skbuff.h库函数相关的问题: [root@localhost linux-2.6.38.4]# make CHK include/linux/version.h CHK include/generated/utsrelease.h CALL scripts/checksyscalls.sh
[root@localhost linux-2.6.38.4]# make
CHK include/linux/version.h
CHK include/generated/utsrelease.h
CALL scripts/checksyscalls.sh
CHK include/generated/compile.h
CC [M] net/ipv4/netfilter/ipt_modbus.o
net/ipv4/netfilter/ipt_modbus.c:18: warning: data definition has no type or storage class
net/ipv4/netfilter/ipt_modbus.c:18: warning: type defaults to ‘int’ in declaration of ‘EXPORT_NO_SYMBOLS’
net/ipv4/netfilter/ipt_modbus.c: In function ‘length_check’:
net/ipv4/netfilter/ipt_modbus.c:61: warning: suggest parentheses around && within ||
net/ipv4/netfilter/ipt_modbus.c: In function ‘match’:
net/ipv4/netfilter/ipt_modbus.c:141: error: ‘const struct sk_buff’ has no member named ‘nh’
net/ipv4/netfilter/ipt_modbus.c:138: warning: unused variable ‘data’
net/ipv4/netfilter/ipt_modbus.c: In function ‘checkentry’:
net/ipv4/netfilter/ipt_modbus.c:194: error: implicit declaration of function ‘IPT_ALIGN’
net/ipv4/netfilter/ipt_modbus.c:187: warning: unused variable ‘modbusinfo’
net/ipv4/netfilter/ipt_modbus.c: At top level:
net/ipv4/netfilter/ipt_modbus.c:202: error: variable ‘modbus_match’ has initializer but incomplete type
net/ipv4/netfilter/ipt_modbus.c:202: error: extra brace group at end of initializer
net/ipv4/netfilter/ipt_modbus.c:202: error: (near initialization for ‘modbus_match’)
net/ipv4/netfilter/ipt_modbus.c:202: warning: excess elements in struct initializer
net/ipv4/netfilter/ipt_modbus.c:202: warning: (near initialization for ‘modbus_match’)
net/ipv4/netfilter/ipt_modbus.c:202: warning: excess elements in struct initializer
net/ipv4/netfilter/ipt_modbus.c:202: warning: (near initialization for ‘modbus_match’)
net/ipv4/netfilter/ipt_modbus.c:202: warning: excess elements in struct initializer
net/ipv4/netfilter/ipt_modbus.c:202: warning: (near initialization for ‘modbus_match’)
net/ipv4/netfilter/ipt_modbus.c:202: warning: excess elements in struct initializer
net/ipv4/netfilter/ipt_modbus.c:202: warning: (near initialization for ‘modbus_match’)
net/ipv4/netfilter/ipt_modbus.c:202: warning: excess elements in struct initializer
net/ipv4/netfilter/ipt_modbus.c:202: warning: (near initialization for ‘modbus_match’)
net/ipv4/netfilter/ipt_modbus.c:202: warning: excess elements in struct initializer
net/ipv4/netfilter/ipt_modbus.c:202: warning: (near initialization for ‘modbus_match’)
net/ipv4/netfilter/ipt_modbus.c: In function ‘init’:
net/ipv4/netfilter/ipt_modbus.c:206: error: implicit declaration of function ‘ipt_register_match’
net/ipv4/netfilter/ipt_modbus.c: In function ‘cleanup’:
net/ipv4/netfilter/ipt_modbus.c:211: error: implicit declaration of function ‘ipt_unregister_match’
make[3]: *** [net/ipv4/netfilter/ipt_modbus.o] Error 1
make[2]: *** [net/ipv4/netfilter] Error 2
make[1]: *** [net/ipv4] Error 2
make: *** [net] Error 2
[root@localhost linux-2.6.38.4]#
触发第一个错误的行是第141行:
iph = skb->nh.iph;
我搜索了一下,发现skbuff.h中有一些变化,一些函数不再可用。
这是显示iptabe模块文件的源
我无法更新我的内核,因为该模块届时将无法工作,因此,如果有人有解决此问题的想法或补丁,我将非常高兴。普通Linux内核2.6.38中没有文件
net/ipv4/netfilter/ipt_modbus.c
。(参见,例如)。你把它带到哪里去了?是的,ipt_modbus是一个扩展模块,你可以从这里下载,你只需将它添加到你的netfilter并重新编译de linux内核