当nlmsghl中nlmsg_type为链路层消息RTM_NEWLINK ,RTM_DELLINK, RTM_GETLINK,RTM_SETLINK,时,消息头为ifinfomsg。当然不同的消息类型对应的消息头不相同。此时消息的内存分布为:(pading 是为了4字节对齐,下边 pading为0说明已经对齐)
+++++++++++++++++++++++++++ ----------------------------------------------
+ struct nlmsghdr { + /|\ /|\ /|\ /|\
+ __u32 nlmsg_len; + 16 | | | |
+ ... }nlh + NLMSG_HDRLEN | | |
+++++++++++++++++++++++++++ | | | |
+ pading + 0 \|/ | | |
+++++++++++++++++++++++++++ ------ | | |
+ struct ifinfomsg { + NLMSG_LENGTH(16*)|

本文详细探讨了rtnetlink在链路层消息处理中所使用的数据结构,阐述了不同消息类型对应的消息头差异,并解释了内存分布中4字节对齐的padding原理。
最低0.47元/天 解锁文章
6572

被折叠的 条评论
为什么被折叠?



