2011-11-25 89 views
0

我正在嘗試以編程方式查找Infiniband界面的名稱不知道的inet地址先驗以編程方式檢索infiniband設備的IP地址

我在Linux上,我想避免解析ifconfig (8)輸出。 我讀過this答案的第二條評論,建議使用getifaddrs()來檢索接口,但是我無法選擇Infiniband。

任何幫助非常感謝。

回答

2

getifaddrs()爲每個接口返回一個類型爲AF_PACKET的條目,該條目具有硬件地址詳細信息,如this answer中所述。特別是,iface->ifa_addr包含struct sockaddr_ll,並且該結構的成員保存硬件地址類型。因此,要確定哪些接口是IPoIB,您可以檢查哪些接口具有硬件類型ARPHRD_INFINIBAND

+0

非常感謝。我恢復了ib接口名稱,然後在列表中再次迭代(由'getifaddrs'返回)以獲得類型爲'AF_INET'的條目。 –

0

你可以嘗試解析​​下的一些文件,如/proc/net/if_inet6 & /proc/net/dev。您可以通過strace瞭解ifconfig的功能。

相關問題