名前がアプリオリにわからないInfinibandインターフェースのinetアドレスをプログラムで見つけようとしています。
私はLinuxを使用していますが、ifconfig (8)
出力の解析は避けたいと思います。この回答の2番目のコメントを読みました。これgetifaddrs()
は、インターフェイスの取得に使用することを提案していますが、Infinibandのものを選択できません。
どんな助けでも大歓迎です。
名前がアプリオリにわからないInfinibandインターフェースのinetアドレスをプログラムで見つけようとしています。
私はLinuxを使用していますが、ifconfig (8)
出力の解析は避けたいと思います。この回答の2番目のコメントを読みました。これgetifaddrs()
は、インターフェイスの取得に使用することを提案していますが、Infinibandのものを選択できません。
どんな助けでも大歓迎です。
getifaddrs()
この回答AF_PACKET
で説明されているように、ハードウェアアドレスの詳細を含む、各インターフェイスのタイプのエントリを 1 つ返します。特に、 はを保持し、その構造体のメンバーはハードウェア アドレス タイプを保持します。したがって、どのインターフェースが IPoIB であるかを判断するには、どのインターフェースがハードウェア タイプを持っているかを確認するだけです。iface->ifa_addr
struct sockaddr_ll
sll_hatype
ARPHRD_INFINIBAND
/proc/net/
like /proc/net/if_inet6
&の下でいくつかのファイルを解析してみることができます/proc/net/dev
。-ing することで、何をするのかを知ることができますifconfig
。strace