我已经阅读了通用netlink的使用方法,发现netlink的唯一主要缺点是协议系列的数量限制为MAX_LINKS(32),因此他们创建了通用netlink协议。这是唯一原因吗?这是否意味着它建议使用genl而不是netlink,例如,作为用户空间与内核空间之间的通信?与传统的Netlink相比,Genl是否被认为具有更高的可扩展性和可管理性?
谢谢。
Netlink协议编号ID是预定义的,因此不应重用或覆盖这些编号。同时,通用网络链接允许通过字符串ID进行动态协议解析。
这是对定制应用程序使用通用netlink协议的主要原因。
另一个区别是,在像RTNL这样的普通网络链接中,应该type
在消息头的字段中传递命令类型,而对于通用网络链接,则在此处传递协议ID:
# nlmsg header
uint32 length;
uint16 type; # command for rtnl and protocol id for genl
uint16 flags;
uint32 sequence_number;
uint32 pid;
消息数据中传递了通用的netlink命令ID:
# genlmsg data
uint8 cmd;
uint8 version;
uint16 reserved;
因此,genl的所有数据都应在NLA链中传递,而不同类型的RTNL消息也可以使用消息数据部分。
您可以在文档中找到一些其他信息
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句