如何在将数据包发送到网卡之前更改数据包

时间:2016-03-19 08:22:12

标签: packet

我想在驱动程序级别测试数据包操作。如果需要,我应该更改现有的驱动程序代码。 NIC是Realtek 8101E。

我已经看到了驱动程序的流程,并希望在通过网络发送数据包之前将其自己的数据添加到数据包中。所以到目前为止,我已经阅读了源代码,就在NIC取得数据包所有权之前。

我需要修改驱动程序代码的原因是因为稍后我可能需要使用其他硬件寄存器来填充新数据。

  1. xxx_xmit()函数是否应该是修改发送数据包的正确位置?

  2. xxx_xmit()函数中直接添加我的数据包修改代码会不会有任何其他影响?

1 个答案:

答案 0 :(得分:1)

首先,您可以在xmit回调中执行此操作。但请注意,此回调在中断上下文(SOFTIRQ)中运行,因此您无法执行阻止操作 其次,xmit函数中的任何数据包更改都应该具有类似的"撤消"接收函数中的相关代码 操纵数据包的最佳方法是在上层使用网络过滤器