- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Rtnetlink描述
Rtnetlink描述
针对路由控制的netlink接口,Linux IPv4 routing sockets
Rtnetlink基于netlink,允许对内核的路由表进行读写。主要用来进行内核与用户空间的通信以及内核中子系统间的通信。Rtnetlink是Linux2.2及其以后的版本中的一个新的特征。
Rtnetlink消息在初始头后可以有一些属性。结构:
struct
{
unsigned short rta_len; //属性的长度
unsigned short rta_type; //属性类型
/*属性数据跟随在这个结构之后*/
}
这些属性用RTA_*宏或者libnetlink来进行修改。
RTA_*宏:
#define RTA_ALIGNTO 4
#define RTA_ALIGN(len) ( ((len)+RTA_ALIGNTO-1) ~(RTA_ALIGNTO-1) ) /*对齐*/
#define RTA_OK(rta,len) ((len) = (int)sizeof(struct rtattr) \
(rta)-rta_len = sizeof(struct rtattr) \
(rta)-rta_len = (len)) /*判断长度是否有len长*/
#define RTA_NEXT(rta,attrlen) ((attrlen) -= RTA_ALIGN((rta)-rta_len), \
(struct rtattr*)(((char*)(rta)) + RTA_ALIGN((rta)-rta_len))) /*下一个的首地址*/
#define RTA_LENGTH(len) (RTA_ALIGN(sizeof(struct rtattr)) + (len)) /*计算总长度*/
#define RTA_SPACE(len) RTA_ALIGN(RTA_LENGTH(len)) /*返回数据的对齐的最小数值*/
#define RTA_DATA(rta) ((void*)(((char*)(rta)) + RTA_LENGTH(0))) /*取得数据部分首地址*/
#define RTA_PAYLOAD(rta) ((int)((rta)-rta_len) - RTA_LENGTH(0)) /*payload总长度*/
除了标准的netlink消息外,rtnetlink主要由以下的消息类型组成:
1、RTM_NEWLINK, RTM_DELLINK, RTM_GETLINK 创建,删除或者获取网络设备的IFLA_ADDRESS 1 硬件MAC地址
IFLA_BROADCAST 2 硬件MAC广播地址
IFLA_IFNAME 3 接口名称
IFLA_MTU 4 最大传输单元
IFLA_LINK 5 连接类型
IFLA_QDISC 6 队列规则
IFLA_STATS 7 接口统计
IFLA_COST 8
IFLA_PRIORITY 9
IFLA_MASTER 10
IFLA_WIRELESS 11 /* Wireless Extension event - see wireless.h */
IFLA_PROTINFO 12 /* Protocol specific information for a link */
IFLA_TXQLEN 13
IFLA_MAP 14
IFLA_WEIGHT 15
IFLA_OPERSTATE 16
IFLA_LINKMODE 17
2、RTM_NEWADDR, RTM_DELADDR, RTM_GETADDR 创建,删除或者获取网络设备的IP信息 IFA_UNSPEC 0
IFA_ADDRESS 1 接口地址interface address
IFA_LOCAL 2 本地地址local address
IFA_LABEL 3 接口名称name of the interface
IFA_BROADCAST 4 广播地址broadcast address
IFA_ANYCAST 5 anycast address
IFA_CACHEINFO 6 address information
IFA_MULTICAST 7
3、RTM_NEWROUTE, RTM_DELROUTE, RTM_GETROUTE 创建,删除或者获取网络设备的路由信息 RTN_LOCAL 2 本地接收
RTN_BROADCAST 3
文档评论(0)