2011-11-25 3 views
0

이름이 인 선험적 정보을 모르는 Infiniband 인터페이스의 inet 주소를 프로그래밍 방식으로 찾으려고합니다.프로그래밍 방식으로 infiniband 장치의 IP 주소를 검색합니다.

저는 Linux를 사용 중이므로 ifconfig (8) 출력 구문 분석을 피하고 싶습니다. this 대답에 대한 두 번째 설명을 읽었습니다.이 정보는 getifaddrs()을 사용하여 인터페이스를 검색하지만 Infiniband를 선택할 수는 없습니다.

도움이 매우 감사합니다.

답변

2

getifaddrs()this answer에 설명 된대로 하드웨어 주소 세부 정보가있는 각 인터페이스에 대해 AF_PACKET 유형의 항목 하나를 반환합니다. 특히 iface->ifa_addr에는 struct sockaddr_ll이 있고 해당 구조의 구성원에는 sll_hatype이 하드웨어 주소 유형을 보유합니다. 따라서 어떤 인터페이스가 IPoIB인지 파악하려면 어떤 하드웨어 유형이 하드웨어 유형 ARPHRD_INFINIBAND인지 확인할 수 있습니다.

+0

대단히 감사합니다. ib 인터페이스 이름을 복구 한 다음 목록에서 다시 (getifaddrs'에 의해 반환 됨) AF_INET 유형의 항목을 가져 왔습니다. –

0

/proc/net/ 아래의 파일을 /proc/net/if_inet6 & /proc/net/dev과 같이 파싱 해 볼 수 있습니다. ifconfig이 수행하는 내용은 strace -ing을 통해 알 수 있습니다.

관련 문제