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