我正在嘗試以編程方式查找Infiniband界面的名稱不知道的inet地址先驗。以編程方式檢索infiniband設備的IP地址
我在Linux上,我想避免解析ifconfig (8)
輸出。 我讀過this答案的第二條評論,建議使用getifaddrs()
來檢索接口,但是我無法選擇Infiniband。
任何幫助非常感謝。
我正在嘗試以編程方式查找Infiniband界面的名稱不知道的inet地址先驗。以編程方式檢索infiniband設備的IP地址
我在Linux上,我想避免解析ifconfig (8)
輸出。 我讀過this答案的第二條評論,建議使用getifaddrs()
來檢索接口,但是我無法選擇Infiniband。
任何幫助非常感謝。
getifaddrs()
爲每個接口返回一個類型爲AF_PACKET
的條目,該條目具有硬件地址詳細信息,如this answer中所述。特別是,iface->ifa_addr
包含struct sockaddr_ll
,並且該結構的成員保存硬件地址類型。因此,要確定哪些接口是IPoIB,您可以檢查哪些接口具有硬件類型ARPHRD_INFINIBAND
。
你可以嘗試解析下的一些文件,如/proc/net/if_inet6
& /proc/net/dev
。您可以通過strace
瞭解ifconfig
的功能。
非常感謝。我恢復了ib接口名稱,然後在列表中再次迭代(由'getifaddrs'返回)以獲得類型爲'AF_INET'的條目。 –