为什么路由表中的路由项(通过netlink socket获取)没有网络掩码信息?

Cha*_*ang 2 sockets linux routes netlink

我正在编写一个程序来找出哪个网络接口最适合连接到指定的目标地址.

现在,我可以通过netlink套接字API 获取路由表,但似乎没有网络掩码信息.我读的手册rtnetlink,在所有rtattr的项目,没有网络掩码的相关信息,只是RTA_DST,RTA_SRC,RTA_GATEWAY...定义.

那么,如何检查路由表中的网络掩码信息?就像我们在route -n输出中看到的那样.

非常感谢.

小智 5

与之关联的前缀长度RTA_DST是在rtm_dst_len字段中rtmsg,而不是在字段中rtattr.(我想因为它是一个固定大小的字段,不像RTA_DST,根据家庭的不同而不同.)