现一个开源社区非常让人郁闷的问题,内核版本的升级过程也将一些类库升级,却不能向前兼容。
Linux下有名的防火墙iptables/netfilter就存在这样的问题,结构体sk_buff在2.6版本内核升级中进行了修改,但网上大多资料还是关于以前版本的,这都不是主要问题,我觉
得主要问题是将引起用户编写的软件不能通用,鬼知道将要部署的服务器linux内核版本是多少啊。
当然,一批优秀的人将包过滤模块从内核态迁移到用户态编写程序,使用libipq和ip_queue等实现,这样能够极大的方便用户代码的调试,不然在内核中写程序,调试时出现一>点错误可能就死机了。不得不暴力重启看log...
回到正题,最初我以为libipq已经能够很好的解决我的问题了,没想到使用libipq编写代码会出现: field 'in' has incomplete type, 着实让人郁闷,最初还以为是linux/in.h头文件没有被保护到程序中,使用#define __KERNEL明确的开启选项后依然不行,这都不是重点,重点是2.6.14以后的内核版本好像出了一个新的库代替此功能,不清楚是原先
库德升级还是新德库,反正就是应该用libnetfilter_queue,而不应该使用libipq
于是很自然的来到网站:http://netfilter.org/projects/libnetfilter_queue/
网站提供libnetfilter_queue的download,并且指出依赖libnfnetlink,幸运的是网站也提供了libnfnetlink的download,于是赶紧下载下来开始安装
Linux下有名的防火墙iptables/netfilter就存在这样的问题,结构体sk_buff在2.6版本内核升级中进行了修改,但网上大多资料还是关于以前版本的,这都不是主要问题,我觉
得主要问题是将引起用户编写的软件不能通用,鬼知道将要部署的服务器linux内核版本是多少啊。
当然,一批优秀的人将包过滤模块从内核态迁移到用户态编写程序,使用libipq和ip_queue等实现,这样能够极大的方便用户代码的调试,不然在内核中写程序,调试时出现一>点错误可能就死机了。不得不暴力重启看log...
回到正题,最初我以为libipq已经能够很好的解决我的问题了,没想到使用libipq编写代码会出现: field 'in' has incomplete type, 着实让人郁闷,最初还以为是linux/in.h头文件没有被保护到程序中,使用#define __KERNEL明确的开启选项后依然不行,这都不是重点,重点是2.6.14以后的内核版本好像出了一个新的库代替此功能,不清楚是原先
库德升级还是新德库,反正就是应该用libnetfilter_queue,而不应该使用libipq
于是很自然的来到网站:http://netfilter.org/projects/libnetfilter_queue/
网站提供libnetfilter_queue的download,并且指出依赖libnfnetlink,幸运的是网站也提供了libnfnetlink的download,于是赶紧下载下来开始安装