LinuxSir.cn,穿越时空的Linuxsir!

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

关于nf_hook_ops的疑问

[复制链接]
发表于 2004-12-1 09:30:36 | 显示全部楼层 |阅读模式
#define __KERNEL__
#define MODULE

#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/skbuff.h>
#include <linux/config.h>
#include <linux/netfilter_ipv4.h>
#include <net/ip.h>
#include <linux/inet.h>

#define PERMIT_PORT 80//只允许访问TCP的80端口

static unsigned int input(unsigned int hooknum, struct sk_buff **pskb,
const struct net_device *in, const struct net_device *out,
int (*okfn) (struct sk_buff *))
{
return NF_ACCEPT;
}

static struct nf_hook_ops filter;
//={{NULL,NULL},input,PF_INET,NF_IP_PRE_ROUTING,NF_IP_PRI_FILTER-1};

int init_module (void)
{
printk("Load Module \n");
// nf_register_hook(&filter);

return 0;
}

void cleanup_module (void)
{
printk ("UnLoad Module\n");

//nf_unregister_hook(&filter);

return;
}
MODULE_LICENSE("GPL");

编译错误如下:

gcc -I /usr/src/linux-2.4/include/ -c test1.c

test1.c:21: storage size of `filter' isn't known

网上GOOGLE了很久,找到了类似问题但都没解决,请高手指教

不过有的机子上能编译通过,但有的不行,我的机子也不行
我查了下nf_hook_ops这个结构我定义的完全正确,不知道有没人遇到过类似问题
发表于 2004-12-1 09:39:39 | 显示全部楼层
执行grep "struct nf_hook_ops" /usr/include/linux/*,把找到的头文件回到代码中试试看。
 楼主| 发表于 2004-12-1 10:06:25 | 显示全部楼层
头文件我已经找到,并加了,但还是老问题
再给你看下:
grep "struct nf_hook_ops" /usr/src/linux-2.4/include/linux/*
/usr/src/linux-2.4/include/linux/netfilter.h:struct nf_hook_ops
/usr/src/linux-2.4/include/linux/netfilter.h:   struct nf_hook_ops *elem;
/usr/src/linux-2.4/include/linux/netfilter.h:int nf_register_hook(struct nf_hook_ops *reg);
/usr/src/linux-2.4/include/linux/netfilter.h:void nf_unregister_hook(struct nf_hook_ops *reg);
把linux/netfilter.h加了还是不行.
奇怪的是我试了好几台机子,有的竟然可以通过,有的就出现和我机子一样的问题
发表于 2004-12-1 10:07:20 | 显示全部楼层
可能的原因:
你的/usr/src/linux-2.4/源代码树可能没有配置过,或者配置过但是没有配置CONFIG_NETFILTER
 楼主| 发表于 2004-12-1 10:18:08 | 显示全部楼层
kj501版主,帮帮忙啊,你编译一下看能不能通过
这个问题和我的iptable和ipsec设置是否相关?但我已经把这些模块都卸了,还是不行
最近学校的烂网国外的网都上不了了,郁闷,本来想去国外的BBS找找
 楼主| 发表于 2004-12-1 10:21:24 | 显示全部楼层
请问phyma,如何配置?
为什么需要配置?
 楼主| 发表于 2004-12-1 10:45:09 | 显示全部楼层
你说的是不是编译内核前的配置?
 楼主| 发表于 2004-12-1 10:51:36 | 显示全部楼层
版主来一下啊,我都郁闷了
发表于 2004-12-1 11:31:57 | 显示全部楼层
我只有2.6内核,你这个程序在我那里没有编译成模块。其它兄弟有兴趣就试试吧。
 楼主| 发表于 2004-12-1 14:17:36 | 显示全部楼层
我用了2.4.19pre内核就通过了,但在2.4.20-8下就通不过,但其它机子上是
2.4.20-8的也能通过
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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