gpt4 book ai didi

networking - 来自 sk_buff 的 ARP header 完全错误(linux 内核模块)

转载 作者:太空宇宙 更新时间:2023-11-04 08:05:14 27 4
gpt4 key购买 nike

我正在尝试从 nfho 函数中的 skb 中提取 ARP header 。这是我的代码:

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 嗅探时,一些数据包绕过了我的钩子(Hook),即使它显示了错误的值……

谁能告诉我这是什么问题?

最佳答案

您的函数犯了一个非正式的逻辑谬误,称为“回避问题”。返回值应该表示“这个 ARP 是否存在?”

但如果您不知道这是否属实(因为这是要确认或反驳的命题),您如何从数据包中提取 ARP header ?

arp_hdr 函数只是 skb_network_header 的包装器,它将指针转换为 arp header 类型。

关于networking - 来自 sk_buff 的 ARP header 完全错误(linux 内核模块),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43321779/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com