【问题标题】:Send packet to network device from char* buf in kernel with sk_buff使用 sk_buff 从内核中的 char* buf 向网络设备发送数据包
【发布时间】:2011-08-15 07:49:09
【问题描述】:

我从 sk_buff 收集了 char * 缓冲区(hook 数据包并通过 skb->head 到 skb_>end),将此缓冲区传输到另一台 PC。现在我想将此数据包从新 PC 重新发送到网络。我怎样才能发送它?使用 dev_queue_xmit() 我必须从 char* 和数据长度重建 sk_buff 结构。有可能的?或者我可以使用原始套接字重新发送我的数据吗?

【问题讨论】:

    标签: c linux networking kernel


    【解决方案1】:

    我相信你必须构造sk_buff重构。另外,我认为从它那里收集char* 不是一个合理的想法。

    sk_buff 仅表示由单独的片段组成的字节流,因此在组成数据包时不必到处复制它们。您不应该从sk_buff 收集单个缓冲区,但如果您有单个缓冲区,只需填写新的sk_buff,其中一部分指向缓冲区即可。

    【讨论】:

    • 我必须在新的一侧重新发送我的数据包,这就是我传输数据+标头的原因......现在我想我该怎么做,我需要一个缓冲区还是不同的 char* 缓冲区用于有效负载和标题
    猜你喜欢
    • 2013-02-17
    • 2014-01-02
    • 1970-01-01
    • 2017-10-31
    • 2019-02-12
    • 1970-01-01
    • 1970-01-01
    • 2018-02-28
    • 2012-05-17
    相关资源
    最近更新 更多