使用dev_queue_xmit发送sk_buff

时间:2014-12-17 03:52:45

标签: linux networking

我想知道我的sk_buff的mac_header,transport_header是否不正确,我可以通过dev_queue_xmit()成功发送此数据包吗?

如果我想在链接层的数据之前推送一些数据,该怎么做?

2 个答案:

答案 0 :(得分:0)

  1. 为什么不呢?在大多数情况下,您几乎可以发送所有内容 - 甚至1个字节这取决于司机。
  2. 您可以使用skb_push()程序来执行此操作。

答案 1 :(得分:0)

可以。通常我会执行以下操作:

1)使用netdev_alloc_skb()分配缓冲区并避免对齐麻烦

2)使用skb_reserve()获得等于(ethhdr + iphdr + tcphdr(或其他传输头))的空间

3)在填充有效负载(传输报头后面的数据有效负载)之前使用skb_put()

4)在填充传输头之前使用skb_push()

5)使用skb_reset_transport_header()标记传输头

6)在填写网络标题之前使用skb_push()

7)使用skb_reset_network_header()标记ip标头

8)在填写eth标头之前使用skb_push()

9)使用skb_reset_mac_header()标记eth标头

10)使用dev_queue_xmit发送数据包