我已经从sk_buff收集了char*buffer(hook packet,通过skb->head to skb_end),并将这个buffer传输到另一台电脑。现在我想从一台新电脑将这个数据包重新发送到网络。我如何发送它?使用dev_queue_xmit()时,我必须从char*和数据长度重建sk_buff结构。有可能吗?或者我可以使用原始套接字重新发送数据吗?

最佳答案

我相信你必须建造,而不是重建。另外,我认为从中收集sk_buff是不合理的。
char*只是表示由单独的部分组成的字节流,这样在编写数据包时就不必把它们复制到任何地方。您不应该从sk_buff中收集一个缓冲区,但是如果您有一个缓冲区,只要用一个指向缓冲区的部分填写newsk_buff,就完成了。

关于c - 使用sk_buff从内核中的char * buf将数据包发送到网络设备,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7062692/

10-12 03:10
查看更多