c - 使用 sk_buff 从内核中的 char* buf 发送数据包到网络设备

标签 c linux networking kernel

我已经从 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/

相关文章:

在c中使用memcpy复制二进制数据

c++ - OpenSSL解密文本长度

java - jsch 并从特定目录运行 sudo

java - 使用 Java 检测 CPU 速度/内存/互联网速度?

c - C : UDP send() taking 6 - 260 micro sec, 中的套接字编程如何使其更快

networking - 用于网络故障的测试工具软件

c - 在 C linux 中使用管道的 2 路通信

C 从 fork 调用的多个 exec 中读取标准输出

c - 如何在C中使用特殊字符?

linux - 通过 ssh 传递外部 shell 脚本变量