我正在编写一个程序,以找出哪个网络接口是最好的连接到指定的目标地址。为什么路由表中的路由项(通过netlink套接字获取)没有网络掩码信息?
现在,我可以通过netlink
套接字API获取路由表,但似乎没有网络掩码信息。我阅读rtnetlink
的手册,在所有rtattr
项目中,没有网络掩码信息,只是RTA_DST
,RTA_SRC
,RTA_GATEWAY
...定义。
那么,如何查看路由表中的网络掩码信息?就像我们可以在route -n
输出中看到的一样。
非常感谢。
我正在编写一个程序,以找出哪个网络接口是最好的连接到指定的目标地址。为什么路由表中的路由项(通过netlink套接字获取)没有网络掩码信息?
现在,我可以通过netlink
套接字API获取路由表,但似乎没有网络掩码信息。我阅读rtnetlink
的手册,在所有rtattr
项目中,没有网络掩码信息,只是RTA_DST
,RTA_SRC
,RTA_GATEWAY
...定义。
那么,如何查看路由表中的网络掩码信息?就像我们可以在route -n
输出中看到的一样。
非常感谢。
与RTA_DST
相关联的前缀长度是在rtmsg
的rtm_dst_len
字段,而不是在一个rtattr
。 (我猜是因为它是一个固定大小的字段,不像RTA_DST
,根据家族大小的不同而不同)。
+1但我想还有其他固定长度的字段如RTA_METRICS等。这种选择必须有另一个原因。 – JuliandotNut 2014-08-21 23:13:04
你能分享你的代码:[email protected] – 2016-05-26 19:22:38