为什么路由表中的路由项(通过 netlink 套接字获取)没有网络掩码信息?
我正在编写一个程序来找出哪个网络接口最适合连接到指定的目标地址。
现在,我可以通过 netlink
套接字 API 获取路由表,但其中似乎没有网络掩码信息。我看了rtnetlink
的手册,在所有rtattr
项中,没有网络掩码信息,只有RTA_DST
,RTA_SRC
,RTA_GATEWAY
...已定义。
那么,如何查看路由表中的网络掩码信息呢?就像我们在 route -n
输出中看到的那样。
多谢。
I'm writing a program to find out which network interface is the best to connect to a specified target address.
Right now, I can get the route table via netlink
socket APIs, but seems there is no netmask infos in it. I read the manual of rtnetlink
, in all rtattr
items, there is no netmask infos, just RTA_DST
, RTA_SRC
, RTA_GATEWAY
... defined.
So, how to check out the netmask infos in route table? Just like we can see in route -n
outputs.
Thanks a lot.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
与
RTA_DST
关联的前缀长度位于rtmsg
的rtm_dst_len
字段中,而不是在rtattr
中。 (我猜是因为它是一个固定大小的字段,与RTA_DST
不同,RTA_DST 的大小因系列而异。)The prefix length associated with
RTA_DST
is in thertm_dst_len
field of thertmsg
, not in anrtattr
. (I guess because it's a fixed-size field, unlikeRTA_DST
, which varies in size depending on the family.)