【发布时间】:2011-11-25 09:20:51
【问题描述】:
我正在尝试以编程方式查找名称未知的 Infiniband 接口的 inet 地址先验。
我在 Linux 上,我想避免解析 ifconfig (8) 输出。
我已经阅读了关于this 答案的第二条评论,该评论建议使用getifaddrs() 来检索接口,但是我无法选择 Infiniband 接口。
非常感谢任何帮助。
【问题讨论】:
标签: c linux rdma infiniband
我正在尝试以编程方式查找名称未知的 Infiniband 接口的 inet 地址先验。
我在 Linux 上,我想避免解析 ifconfig (8) 输出。
我已经阅读了关于this 答案的第二条评论,该评论建议使用getifaddrs() 来检索接口,但是我无法选择 Infiniband 接口。
非常感谢任何帮助。
【问题讨论】:
标签: c linux rdma infiniband
getifaddrs() 为每个接口返回一个AF_PACKET 类型的条目,其中包含硬件地址详细信息,如this answer 中所述。特别是,iface->ifa_addr 拥有一个struct sockaddr_ll,而该结构的sll_hatype 成员拥有硬件地址类型。因此,要确定哪些接口是 IPoIB,您只需检查哪些接口的硬件类型为 ARPHRD_INFINIBAND。
【讨论】:
getifaddrs返回)得到AF_INET类型的条目。
您可以尝试解析/proc/net/ 下的一些文件,例如/proc/net/if_inet6 和/proc/net/dev。你可以通过strace-ing 来了解ifconfig 的作用。
【讨论】: