什么时候MAC头添加到linux网络堆栈的sk_buff结构中

时间:2014-02-28 21:39:32

标签: networking routing linux-kernel

我只是想知道在排队步骤之前或排队步骤之后是否将MAC头添加到sk_buff结构中?我问的原因是我在htb排队规则中做了一些内核编程,我正在尝试查看/更改mac标头。我正在通过放置printk()语句然后ping另一个IP来测试它。但是,我收到了以下信息:

MAC长度:0 IP头长度:20 macHeaderset:0 真相:768

似乎数据包一切顺利,但MAC头尚未添加。所以我的问题是,何时添加MAC头,以及系统在添加MAC时如何知道将MAC地址作为MAC地址放入? (之前我认为通过查看路由表在路由期间添加MAC头)

1 个答案:

答案 0 :(得分:1)

在打印出队列中的整个数据包字节并通过它之后,看起来确实在排队之前添加了MAC头,但由于某种原因,sk_buff中的MAC头指针没有更新。

编辑:进一步检查后,MAC头将在排队前添加到sk_buff结构中,但实际目标MAC地址在到达传出硬件接口之前不会添加。