免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2562 | 回复: 4
打印 上一主题 下一主题

Netfilter的hook点声明在2.6.25的内核中被改掉了 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-07-02 15:48 |只看该作者 |倒序浏览
之前的版本是这样:
#ifndef __KERNEL__
/* IP Cache bits. */
/* Src IP address. */
#define NFC_IP_SRC                0x0001
/* Dest IP address. */
#define NFC_IP_DST                0x0002
/* Input device. */
#define NFC_IP_IF_IN                0x0004
/* Output device. */
#define NFC_IP_IF_OUT                0x0008
/* TOS. */
#define NFC_IP_TOS                0x0010
/* Protocol. */
#define NFC_IP_PROTO                0x0020
/* IP options. */
#define NFC_IP_OPTIONS                0x0040
/* Frag & flags. */
#define NFC_IP_FRAG                0x0080

/* Per-protocol information: only matters if proto match. */
/* TCP flags. */
#define NFC_IP_TCPFLAGS                0x0100
/* Source port. */
#define NFC_IP_SRC_PT                0x0200
/* Dest port. */
#define NFC_IP_DST_PT                0x0400
/* Something else about the proto */
#define NFC_IP_PROTO_UNKNOWN        0x2000
#endif /* ! __KERNEL__ */
/* IP Hooks */
/* After promisc drops, checksum checks. */
#define NF_IP_PRE_ROUTING        0
/* If the packet is destined for this box. */
#define NF_IP_LOCAL_IN                1
/* If the packet is destined for another interface. */
#define NF_IP_FORWARD                2
/* Packets coming from a local process. */
#define NF_IP_LOCAL_OUT                3
/* Packets about to hit the wire. */
#define NF_IP_POST_ROUTING        4
#define NF_IP_NUMHOOKS                5


但在2.6.25中变成了:
#ifndef __KERNEL__
/* IP Cache bits. */
/* Src IP address. */
#define NFC_IP_SRC                0x0001
/* Dest IP address. */
#define NFC_IP_DST                0x0002
/* Input device. */
#define NFC_IP_IF_IN                0x0004
/* Output device. */
#define NFC_IP_IF_OUT                0x0008
/* TOS. */
#define NFC_IP_TOS                0x0010
/* Protocol. */
#define NFC_IP_PROTO                0x0020
/* IP options. */
#define NFC_IP_OPTIONS                0x0040
/* Frag & flags. */
#define NFC_IP_FRAG                0x0080

/* Per-protocol information: only matters if proto match. */
/* TCP flags. */
#define NFC_IP_TCPFLAGS                0x0100
/* Source port. */
#define NFC_IP_SRC_PT                0x0200
/* Dest port. */
#define NFC_IP_DST_PT                0x0400
/* Something else about the proto */
#define NFC_IP_PROTO_UNKNOWN        0x2000
/* IP Hooks */
/* After promisc drops, checksum checks. */
#define NF_IP_PRE_ROUTING        0
/* If the packet is destined for this box. */
#define NF_IP_LOCAL_IN                1
/* If the packet is destined for another interface. */
#define NF_IP_FORWARD                2
/* Packets coming from a local process. */
#define NF_IP_LOCAL_OUT                3
/* Packets about to hit the wire. */
#define NF_IP_POST_ROUTING        4
#define NF_IP_NUMHOOKS                5
#endif /* ! __KERNEL__ */

都包含在#ifndef __KERNEL__中。这样导致以前编译过的模块无法重新编译,因为前面已经声明了__KERNEL__,只能还把#endif挪到前面去。
哪位大侠有研究过这方面的内容?这么做有什么好处吗?

论坛徽章:
0
2 [报告]
发表于 2008-07-02 21:44 |只看该作者
我也遇到过,看现在的include/linux//netfilter_ipv4.h等都只是为了用户空间,新版本的工具估计以后只需要包含linux/netfilter.h就可以了,不需要netfilter_*.h,更统一了,不过不清楚是不是这个目的才改的

论坛徽章:
0
3 [报告]
发表于 2008-07-03 14:20 |只看该作者
现在这么改搞得自己写的模块编译不了,这是不是个bug呢?

论坛徽章:
0
4 [报告]
发表于 2008-07-23 14:11 |只看该作者
谢楼主!
这个问题你居然发现了!太难得了!
我编译aodv时就遇到类似问题,终于找到一个有用的信息!
再谢!

论坛徽章:
0
5 [报告]
发表于 2013-04-11 15:15 |只看该作者
IP hooks 在2.6.24以后的版本里面全部放进了用户态,内核态下使用的IP hooks 是在一个枚举里面定义的,例如:以前版本使用的NF_IP_PRE_ROUTING,要改为NF_INET_PRE_ROUTING,才能使用
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP