在最近的 RHEL7.5 之前,我们有一个为 RedHat 系列 Linux 发行版构建的内核模块。
尝试在 RHEL7.5 上构建时,我们遇到以下错误:
...错误:未声明“GENL_ID_GENERATE”...
做了一些阅读,这似乎是自内核 4.11+ 以来的一个变化,但 RHEL7.5 基于内核 3.10+。发生了什么?
反正我知道GENL_ID_GENERATE的值就是0。但是我可以用0来代替宏吗?用户模式模块与这个内核模块通信会不会有问题?
或者,解决问题的正确方法应该是什么?有什么建议吗?
谢谢和问候, 微山
查看netlink的 git 提交,似乎对 4.11 版中的结构进行了一些更改:
.id
首先,您可以在初始化程序中完全省略该字段,genl_family
因为 Linux 已经删除了静态系列 ID。同样,该
genl_register_family_with_ops
功能不再使用。相反,如netlink 的 Linux HOWTO 文档中所述: