Ist es möglich, den Netzwerkschnittstellenindex nicht über / sys abzurufen?

11

Was ich also suche, ist ein Schnittstellenindex (oder Name), aber der echte. if_nametoindex(3)und ioctl(2)scheinen mir hier nicht zu helfen. Jetzt habe ich nur noch herausgefunden, wie das geht /sys. Lassen Sie mich am Beispiel zeigen, was ich brauche:

# 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

Gibt es eine Möglichkeit, dies mit einem Funktionsaufruf zu tun, oder ist die einzige Möglichkeit sysfs?

UVV
quelle
Schauen Sie sich an, was ip link show(wahrscheinlich mit der Netlink-API)
Stéphane Chazelas
Siehe auch /proc/net/vlan/configoder /proc/net/vlan/bond0.1007ob es sich um eine VLAN-Schnittstelle handelt.
Stéphane Chazelas
@ StéphaneChazelas Danke. Ich beschloss, weiter zu verwenden /sys. /procoder /syssind in diesem Sinne mehr oder weniger gleich. Ich wollte nur überprüfen, ob es einen Systemaufruf gibt, um diese Art von Informationen zu erhalten. Es stellt sich heraus, dass dies nicht der Fall ist.
UVV
1
Die Systemaufrufe wären sendmsg / recvmsg unter Verwendung der Netlink-Socket-API.
Stéphane Chazelas
1
Dokumentation zu rtnetlink: man7.org/linux/man-pages/man7/rtnetlink.7.html - RTM_GETLINKNachricht ausgeben und als IFLA_LINKAntwort nach Attributen suchen .
Ecatmur

Antworten:

1

Der Befehl ip link showist wahrscheinlich das, was Sie wollen. Der Index wird vor den Schnittstelleninformationen angezeigt. Beispiel unten aus einem System mit gebundenen NICs.

# 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
Boscoe
quelle