【发布时间】:2017-04-09 00:39:23
【问题描述】:
我正在尝试在 nfho 函数中将 ARP 标头从 skb 中提取出来。这是我的代码:
int is_arp(struct sk_buff *skb) {
struct arphdr *hdr = arp_hdr(skb);
if(hdr->ar_pln != 4 || ar_hln != 6 || hdr->ar_hrd != ARPHRD_ETHER) {
printk("%d %d\n", pln, hln);
return NOT_ARP;
}
return ARP_PACKET;
}
函数arp_hdr() 嵌入在内核中......与打印ip长度(4字节......当然是IPV4)和硬件长度(嗯。 .. mac 地址 6 是必须的)在使用 Wireshark 嗅探时,一些数据包绕过了我的钩子,即使它显示了错误的值......
谁能告诉我是什么问题?
【问题讨论】:
标签: networking kernel c arp