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

时间:2011-05-21 08:02:41

标签: linux sockets routes netlink

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

现在,我可以通过netlink套接字API获取路由表,但似乎没有网络掩码信息。我在所有rtnetlink个项目中阅读了rtattr的手册,没有网络掩码信息,只有RTA_DSTRTA_SRCRTA_GATEWAY ...已定义。< / p>

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

非常感谢。

1 个答案:

答案 0 :(得分:5)

RTA_DST相关联的前缀长度位于rtm_dst_len的{​​{1}}字段中,而不在rtmsg中。 (我猜是因为它是一个固定大小的字段,与rtattr不同,它的大小因家庭而异。)