向netfilter注册了NF_IP_FORWARD钩子函数,自己实现的函数如下, 目的无非就是想得到源IP地址和目的IP地址,编译后报错如下 struct iphdr *hdr = skb->nh.iph;这行dereferencing pointer to incomplete type 想不明白,请问这是怎么回事呀? static unsigned int My_ip_forward( unsigned int hooknum, struct sk_buff ** pskb, ...
by fzy8888cn - C/C++ - 2006-06-08 12:39:55 阅读(1107) 回复(1)
向netfilter注册了NF_IP_FORWARD钩子函数,自己实现的函数如下, 目的无非就是想得到源IP地址和目的IP地址,编译后报错如下 struct iphdr *hdr = skb->nh.iph;这行dereferencing pointer to incomplete type 想不明白,请问这是怎么回事呀? static unsigned int My_ip_forward( unsigned int hooknum, struct sk_buff ** pskb, const struct net_device *in, const struct net_device *out, int (*...
向netfilter注册了NF_IP_FORWARD钩子函数,自己实现的函数如下, 目的无非就是想得到源IP地址和目的IP地址,编译后报错如下 struct iphdr *hdr = skb->nh.iph;这行dereferencing pointer to incomplete type 想不明白,请问这是怎么回事呀? static unsigned int My_ip_forward( unsigned int hooknum, struct sk_buff ** pskb, const struct net_device *in, const struct net_device *out, int (*...
本帖最后由 Tinnal 于 2014-10-09 23:27 编辑 我有一台服务器有四块网卡,我需要在服务器中insmod一个模块,这个模块用来钩住各个网口的ipv6数据包,钩子点为PRE_ROUTING,具体要求如下: eth1的数据包钩住后,修改目地mac地址,然后从eth3发送出去; eth2的数据包钩住后,修改目的mac地址,然后从eth3发送出去; 现在的问题是网口eth1、网口eth2的数据包能钩住,并且能正确修改mac,修改后也能从...
1: 如果通过钩子函数注册进netfilter内核模块的话,那这个新加的钩子代码 要加在linux源码中的哪个目录下,是在net/netfilter中吗? 2: 拦截下来的数据包中如果要将目的IP地址改成要转发的IP地址,是否是在 PRE_ROUTING的HOOK点拦截?是直接将目的地址修改了就好了吗,要重 新算校验和吗? 3: 另外这个钩子函数应该要怎么测试呢?有点不明白啊? 麻烦大牛们帮忙解答一下谢谢。。。
当需要用到netfilter的钩子函数的时候,一般的流程是这样的: 在五个挂接点中的某个挂接点把数据包截取出来,然后送到数据包处理模块,然后在返回到钩子函数中,然后调用NF_ACCEPTF返回或者dorp掉。 这里在数据包的处理模块中需要注意两件事情: 1:原skb不能kfree掉。因为在钩到数据之前,skb应该在系统的发送队列中,而skb是在一个双向链表中,如果此时把skb kfree掉,那么原来的发送队列在发送的时候,发到这个数据包的时候...
netfilter简单但完整的框架程序 #ifndef __KERNEL__ #define __KERNEL__ #endif #ifndef MODULE #define MODULE #endif #include #include #include #include #include //#include #include #include #include//for IPPROTO_TCP IP ICMP #include//for ETH_P_IP ETH_P_ARP #include #include #include #include static struct nf_hook_ops mytunnel_ops; static struct nf_hook_ops mytunnel_ops_2; static struct nf_hook_op...
如题,我在POST_ROUTING中注册了一个钩子函数,实现的功能是拦截到HTTP包(目的端口是80或8080)就计数返回NF_ACCEPT。 函数体中声明: struct sk_buff *sk=NULL; 之后利用拷贝函数: sk = skb_copy(skb, 1); 结果发现,打开网页时,最开始没有问题,当我不停的点击F5刷新的时候,就会崩溃,提示oops信息。后来根据oops和objdump反汇编调试。发现有可能是指针问题。 所以开始进行容错: if(sk==NULL) {p...
自己写了一个netfilter中钩子函数 实现一个数据包转发功能,大神能看看有什么问题吗?
主要想实现的功能就是在一个端口 用钩子函数接受到数据包,然后再另外一个端口将数据
包发送出去。这里不需要过滤数据包,就是只要把接受到的数据链路层的数据报从另外一个端口发出去就好了。
#include
我想写一个可以动态加载与卸载的模块,可以向下面的代码所示,在模块中注册了两个钩子函数: int init_module() { */初始化钩子函数填充hook数据结构*/ nf_hook.hook=nfkiller; nf_hook.Pf=PF_INET; nf_hookk.hooknum=NF_IP_FORWARD;//使用Ipv4的第一个hook nf_hook.prioriyt=NF_IP_FIRST;//让添加的函数首先执行 cf_hook.hook=cfkiller; cf_hook.Pf=PF_INET; cf_hookk.hooknum=NF_IP_FORWARD;//使用Ipv4的第一个hook cf_hook.pr...