我编写了一个用户空间程序,使用带netlink
协议的NETLINK_ROUTE
套接字轮询可用以太网接口的运行状态状态。
但是现在我想写一个内核模块,它使用NETLINK_ROUTE通道向这个用户空间程序发送自定义通知消息。
阅读netlink
和rtnetlink
的手册页后,我无法断定是否可行。任何建议将受到高度赞赏。
答案 0 :(得分:1)
NETLINK_ROUTE不是协议 - 它是netlink系列之一。从联系人页面:
netlink_family选择内核模块或netlink组 与。沟通。
Netlink最初开发用于快速简便地发送有关路由信息的消息,这就是为什么NETLINK_ROUTE是第一个家庭并且拥有自己的联机帮助页,手册等等。但是后来添加了其他家庭以发送除路由信息之外的信息,例如NETLINK_SELINUX和NETLINK_FIREWALL。
经过一段时间,开发人员发现有太多特定的家庭。如果有人想使用那种花哨的netlink协议,他需要申报另一个家庭并使其更糟糕。所以他们添加了最后一个家族 - NETLINK_GENERIC就像多路复用器一样。关于lwn的通用netlink有一本很棒的手册 - http://lwn.net/Articles/208755/。如果您想要工作示例,可以查看我的代码(https://github.com/dzeban/keymon)
因此,如果您的通知与NETLINK_ROUTE等任何特定的netlink系列相关,那么请使用它。但是,如果您只想发送自己的自定义信息 - 请使用通用网络链接。