register_netdevice_notifier回调没有提供有效的net_device
register_netdevice_notifier callback does not provide valid net_device
我在 Ubuntu 内核模式 netfilter 模块上工作,需要有关模块代码中所有网络接口及其属性的信息。
在 init_module()
中,我使用 register_netdevice_notifier()
来达到这个目的。调用回调函数时,我可以看到正确的事件代码,如 up/down 等,但似乎第三个参数 void* casted to net_device*
提供了具有无效属性的对象。 ->name 是空字符串,->if index 是一些无意义的数字等。
我在内核 3.19 上尝试了模块的调试版本,并在 4.2 上也进行了重建。结果是一样的,我无法读取与事件相关的 net_device
的属性。
可能是什么问题?
根据我从 LXR 中看到的情况,您需要在最后一个参数上调用 netdev_notifier_info_to_dev
以获得您的 net_device *
(参见 here)
我在 Ubuntu 内核模式 netfilter 模块上工作,需要有关模块代码中所有网络接口及其属性的信息。
在 init_module()
中,我使用 register_netdevice_notifier()
来达到这个目的。调用回调函数时,我可以看到正确的事件代码,如 up/down 等,但似乎第三个参数 void* casted to net_device*
提供了具有无效属性的对象。 ->name 是空字符串,->if index 是一些无意义的数字等。
我在内核 3.19 上尝试了模块的调试版本,并在 4.2 上也进行了重建。结果是一样的,我无法读取与事件相关的 net_device
的属性。
可能是什么问题?
根据我从 LXR 中看到的情况,您需要在最后一个参数上调用 netdev_notifier_info_to_dev
以获得您的 net_device *
(参见 here)