Linux TCP/IP 网络技术解析
1. Netlink 数据结构
Netlink 数据结构在 Linux 内核网络通信中扮演着重要角色,主要包含nl_table和rtnetlink_link两部分。
-nl_table:
- 是一个指向sock结构的指针数组。数组的每个元素代表一个 Netlink 协议族,例如NETLINK_ROUTE、NETLINK_FIREWALL等。
- 通过特定步骤(如图 19.44 中 42 - 45 行所示)可获取nl_table的指针地址,对该指针地址进行解引用就能得到nl_table的第一个sock元素。在此过程中,主要检查sock结构中的data_ready函数指针以及它所指向的函数。
-rtnetlink_link:
- 被定义为指向rtnetlink_link数据结构的指针数组。每个rtnetlink_link数据结构对应一个rtnetlink命令,如RTM_NEWQDISC是用于添加新队列规则(qdisc)的命令。
- 图 19.45 展示了访问rtnet