/ sysを介さずにネットワークインターフェイスインデックスを取得することはできますか?


11

だから私が探しているのはインターフェイスのインデックス(または名前)ですが、実際のものです。 if_nametoindex(3)そしてioctl(2)、ここで私を助けていないように見えます。これを行う方法を見つけた唯一の方法は、を使用すること/sysです。私が必要とするものを例で示しましょう:

# cat /sys/class/net/bond0.1007/ifindex 
26
# cat /sys/class/net/bond0.1007/iflink
23                                  <-- I need either this or a reference to bond0
# cat /sys/class/net/bond0/ifindex 
23

関数呼び出しでそれを行う方法はありますか、それとも唯一の方法sysfsですか?


何を見てip link show(おそらくネットリンクAPIを使用して)ん
ステファンChazelas

また、それがVLANインターフェースである/proc/net/vlan/config/proc/net/vlan/bond0.1007どうかも参照してください。
ステファンChazelas

@StéphaneChazelasありがとう。使い続けることにしました/sys/procまたは/sys多かれ少なかれ同じような意味です。この種の情報を取得するためのシステムコールがあるかどうかを確認したいだけですが、ないことがわかりました。
UVV 2014

1
syscallsは、netlinkソケットAPIを使用したsendmsg / recvmsgです。
ステファンChazelas

1
rtnetlinkドキュメント:man7.org/linux/man-pages/man7/rtnetlink.7.html-RTM_GETLINKメッセージを発行しIFLA_LINK、返信で属性を探します。
ecatmur 2015年

回答:


1

コマンドip link showはおそらくあなたが望むものです。インターフェース情報の前にインデックスが表示されます。NICが結合されたシステムの例を以下に示します。

# ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 9214 qdisc mq master bond0 portid 000f53000000 state UP mode DEFAULT qlen 1000
    link/ether 00:0f:53:00:00:00 brd ff:ff:ff:ff:ff:ff
3: eth0: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 9214 qdisc mq master bond0 portid 000f53000001 state UP mode DEFAULT qlen 1000
    link/ether 00:0f:53:00:00:00 brd ff:ff:ff:ff:ff:ff
4: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 9214 qdisc noqueue state UP mode DEFAULT qlen 1000
    link/ether 00:0f:53:00:00:00 brd ff:ff:ff:ff:ff:ff
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.