我正在編寫一個程序,以找出哪個網絡接口是最好的連接到指定的目標地址。爲什麼路由表中的路由項(通過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