Программно получить IP-адрес устройства Infiniband - PullRequest
0 голосов
/ 25 ноября 2011

Я пытаюсь программно найти inet-адрес интерфейса Infiniband, имя которого не известно a priori .

Я нахожусь в Linux, и я хотел бы избежать синтаксического анализа вывода ifconfig (8).Я прочитал второй комментарий к этому ответу, который предлагает использовать getifaddrs() для извлечения интерфейсов, но затем я не могу выбрать Infiniband.

Любая помощь очень ценится.

Ответы [ 2 ]

2 голосов
/ 25 ноября 2011

getifaddrs() возвращает одну запись типа AF_PACKET для каждого интерфейса, в которой указаны детали аппаратного адреса, как описано в этого ответа .В частности, iface->ifa_addr содержит struct sockaddr_ll, а член sll_hatype этой структуры содержит тип аппаратного адреса.Таким образом, чтобы выяснить, какие интерфейсы являются IPoIB, вы можете просто проверить, какие из них имеют тип оборудования ARPHRD_INFINIBAND.

0 голосов
/ 25 ноября 2011

Вы можете попробовать разобрать какой-нибудь файл в /proc/net/, например /proc/net/if_inet6 & /proc/net/dev. Вы можете узнать, что ifconfig делает, strace -ing it.

...