gpt4 book ai didi

linux - 内核模块 : Netfilter hook not providing correct data via sk_buff

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:33:03 24 4
gpt4 key购买 nike

我有一个 linux 内核模块,需要将通过 netfilter 钩子(Hook)接收到的数据作为套接字缓冲区进行处理。

这就是我在回调中所做的,

unsigned char *eth = skb_mac_header(skb);
int len = skb->len + 14; //Assuming eth is 14 bytes. Neglecting VLAN case.

for (int j=0; j < len; j++)
{
printk("%X ", eth[j]);
}

在接收数据包时,我得到正确的长度。但是,某些 UDP 流量的数据包内容只有正确的 48 个字节(初始),其余字节不是我的接口(interface)接收的内容。用户空间应用程序正在接收接口(interface)上接收到的正确数据包内容。

任何人都可以帮助解释我做错了什么。帮助将不胜感激。谢谢。

最佳答案

skb_mac_header(skb) 为您提供指向 mac header 的指针。它的有效长度是 skb->mac_len。

如果你需要转储用户数据(payload),你可以打印从 skb->data 到 skb->tail 的每个字符。以下链接显示了 skb 数据布局:http://vger.kernel.org/~davem/skb_data.html .

关于linux - 内核模块 : Netfilter hook not providing correct data via sk_buff,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23903936/

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