LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 658|回复: 0

为2.6.x以上内核解放ipt_string

[复制链接]
发表于 2005-4-9 10:06:36 | 显示全部楼层 |阅读模式
很多linuxsir升级到2.6以.x上内核后都苦闷无法使用iptables的patch-matic-ng里的string扩展,有人尝试把info里的<2.6.0改成<2.7.0,的确可以使用./runme extra进行patch,但到了编译内核的时候,就会出错,偶尔,有的可能没有报错,把module文件ipt_string.ko都编译了出来,可是,根本就无法加载,一加载就会出现“无效模块格式的错误”,下面介绍一下自己的解决办法,跟大家一起分享:
1.在#include <linux/smp.h>下加入#include <linux/threads.h>
2.把smp_num_cpus都替换NR_CPUS //这个表示服务器CPU的个数,偶也刚学,资料是这么说的
----------也可以不做1、2,直接把在开始定义,int smp_num_cpus=1;
3.修改string_match使之符合2.6.x的modle格式
/*static struct ipt_match string_match
= { { NULL, NULL }, "string", &match, &checkentry, NULL, THIS_MODULE };
*/
static struct ipt_match string_match={
.name="string",
.match=&match,
.checkentry = &checkentry,
.me=THIS_MODULE
};
4.把match函数的参数定义
// const void *hdr,
// u_int16_t datalen,
去掉或注释掉
然后打内核补丁,编译内核和iptables,也可以用其他方法得到ipt_string.ko和libipt_string.so
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表