我正在尝试以编程方式查找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'的条目。 –