2011-11-25 88 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的功能。

相关问题