netfilter捕获arp报文,求解
下面是我写的一小段代码/*#define _KERNEL_*/
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/netfilter.h>
#include <linux/skbuff.h>
#include <linux/if_arp.h>
#include <linux/netfilter_arp.h>
unsigned int arp(unsigned int hooknum,
struct sk_buff *skb,
const struct net_device *in,
const struct net_device *out,
int (*okfn)(struct sk_buff *))
{
printk("<0>com\n");
return NF_ACCEPT;
}
int init_module()
{
nfho.hook = arp;
nfho.hooknum= NF_ARP_IN;
nfho.pf = NF_ARP;
nfho.priority = NF_IP_PRI_FIRST;
nf_register_hook(&nfho);
return 0;
}
void cleanup_module()
{
nf_unregister_hook(&nfho);
}
运行后不能捕获到任何的arp报文。希望大家多多指教,谢谢了。 不知道到的话可以加 打印呀 ,报文途经的地方。 回复 2# C.J
请问,怎样打印,我不是很清楚。我不知道在其他什么地方能够获得这个报文。谢谢啦 最土最直接的就是 printk() 只要不PANIC。
1. 收到的点,网卡驱动
2. 到达net层,net core里面的处理函数(太久没看名字忘了),就是解析报文,判断类型,传递报文,都是点;
3. 还有就是调用你的这个 ARP_IN的HOOK点前面;
好像没了吧。 回复 4# C.J
谢谢了。我已经用其他的方法代替了。
但是,我还是有疑问,那就是在netfilter上面有前面两个位置的挂载点吗?还有就是,在NF_ARP的情况下,只有3个点,没有在IN前面的点啊。 你好,我也遇到了ARP hook方面的问题,但是迟迟不能解决,可以请您帮我分析一下原因吗?我的求助帖地址http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=4165048&page=1&extra=#pid24340849谢谢了!!
页:
[1]