我已经从 sk_buff 收集了 char * 缓冲区(hook 数据包并通过 skb->head 到 skb_>end),将这个缓冲区传输到另一台 PC。现在我想从一台新 PC 将这个数据包重新发送到网络。我怎样才能发送它?使用 dev_queue_xmit() 我不得不从 char* 和数据长度重建 sk_buff 结构。有可能的?或者我可以使用原始套接字重新发送我的数据吗?
最佳答案
我相信您必须构建 sk_buff
,而不是重建。另外,我认为从中收集 char*
不是一个合理的想法。
sk_buff
简单地表示由单独的片段组成的字节流,因此在组成数据包时不必将它们复制到各处。您不应该从 sk_buff
收集单个缓冲区,但如果您有单个缓冲区,只需填充新的 sk_buff
,其中一部分指向缓冲区即可。
关于c - 使用 sk_buff 从内核中的 char* buf 发送数据包到网络设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7062692/