我从sk_buff收集了char *缓冲区(钩子数据包并通过skb-> head到skb_>结束),将此缓冲区传输到另一台PC。现在我想从新PC重新发送这个数据包到网络。我该怎么发送?使用dev_queue_xmit()我必须从char *和数据长度重建sk_buff结构。有可能的?或者我可以使用原始套接字重新发送我的数据?
答案 0 :(得分:0)
我相信您必须构建 sk_buff
,不重建。此外,我认为从中收集char*
是不合理的。
sk_buff
只表示由不同部分组成的字节流,因此在编写数据包时不必将它们复制到整个地方。您不应该从sk_buff
收集单个缓冲区,但如果您有单个缓冲区,只需填写新的sk_buff
,其中一个部分指向缓冲区即可完成。