我只是想知道在排队步骤之前或排队步骤之后是否将MAC头添加到sk_buff结构中?我问的原因是我在htb排队规则中做了一些内核编程,我正在尝试查看/更改mac标头。我正在通过放置printk()语句然后ping另一个IP来测试它。但是,我收到了以下信息:
MAC长度:0 IP头长度:20 macHeaderset:0 真相:768
似乎数据包一切顺利,但MAC头尚未添加。所以我的问题是,何时添加MAC头,以及系统在添加MAC时如何知道将MAC地址作为MAC地址放入? (之前我认为通过查看路由表在路由期间添加MAC头)
答案 0 :(得分:1)
在打印出队列中的整个数据包字节并通过它之后,看起来确实在排队之前添加了MAC头,但由于某种原因,sk_buff中的MAC头指针没有更新。
编辑:进一步检查后,MAC头将在排队前添加到sk_buff结构中,但实际目标MAC地址在到达传出硬件接口之前不会添加。