gpt4 book ai didi

linux - LL_ALLOCATED_SPACE 和其他注意事项

转载 作者:太空宇宙 更新时间:2023-11-04 04:00:55 25 4
gpt4 key购买 nike

我有一个内核模块,其中我在 PRE-ROUTING Hook 中捕获数据包以进行某些处理。然后我分配一个新的 skb(不能在同一个 skb 中执行)并将输入 skb 的处理后的有效负载和 ip header 放入这个新的 skb 中。然后我想为这个新的 skb 执行 netif_rx 并让它遍历内核网络堆栈。

我对应该分配的新 skb 的大小有点困惑,我的 skb->data 应该指向(network_header 或 mac header)。 skb->len 应该是什么,是否应该考虑 mac header?

len; // total length of new ip datagram
skb_new = dev_alloc_skb(len + LL_ALLOCATED_SPACE(skb->dev) + ETH_LEN);

在此之后,我应该为 LL header 和 Trailer 保留多少,以及我的 skb_new->data 应该指向哪里。

我想在skb中填写所需的详细信息后调用netif_rx(skb_new)。基本上在分配 skb 之后和调用 netif_rx 之前应该遵循什么。任何链接或描述都会有所帮助。

提前致谢。

最佳答案

套接字缓冲区 (skb) 保存当前协议(protocol)数据单元 (PDU) 的全部 信息,并说明为此 PDU 传递的全部 数据。无论您在 skb 开头留出多少空闲空间,您都可以将 skb->data 指向 YOUR 数据的开头。

关于linux - LL_ALLOCATED_SPACE 和其他注意事项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23022128/

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