- 论坛徽章:
- 0
|
代码如下:
unsigned int hook_arp_in(unsigned int hooknum,
struct sk_buff **sb,
const struct net_device *in,
const struct net_device *out,
int (*okfn)(struct sk_buff *))
{
int NIC = -1;
printk(" hook_arp_in!!!\n");
if(*sb)
function(*sb);
return NF_STOLEN;
}
....
nfarp_in.hook = hook_arp_in;
nfarp_in.hooknum = NF_ARP_IN;
nfarp_in.pf = NF_ARP;
nfarp_in.owner = THIS_MODULE;
if(nf_register_hook(&nfarp_in) < 0)
printk("register_hook failed!!!!\n");
....
把代码的其他地方都注释掉了,基本就剩了上面的这点代码。加载模块之后,根本不会进到 hook_arp_in()里面,而且系统的arp的过程没受影响。
但是,我将这个nfarp_in.pf = NF_ARP 换成 nfarp_in.pf = NFPROTO_ARP 后,会进入到hook_arp_in,但是判断sb的时候,始终为空,进入不到function( )里。
我的内核版本是3.2.6。希望各位帮忙分析下 |
|