Est-il possible d'obtenir l'index de l'interface réseau non via / sys?

11

Donc ce que je recherche, c'est un index (ou un nom) d'interface mais le vrai. if_nametoindex(3)et ioctl(2)ne semblent pas m'aider ici. Maintenant, la seule façon dont j'ai trouvé comment le faire est via /sys. Permettez-moi de montrer par exemple ce dont j'ai besoin:

# 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

Existe-t-il un moyen de le faire avec un appel de fonction ou le seul moyen est sysfs?

UVV
la source
Regardez ce que ip link showfait (probablement en utilisant l'API Netlink)
Stéphane Chazelas
Voir aussi /proc/net/vlan/configou /proc/net/vlan/bond0.1007s'il s'agit d'une interface vlan.
Stéphane Chazelas
@ StéphaneChazelas Merci. J'ai décidé de continuer à utiliser /sys. /procou /syssont plus ou moins les mêmes dans ce sens. Je voulais juste vérifier s'il y a un syscall pour obtenir ce genre d'informations, il se trouve que non.
UVV
1
les syscalls seraient le sendmsg / recvmsg utilisant l'API de socket netlink.
Stéphane Chazelas
1
documentation rtnetlink: man7.org/linux/man-pages/man7/rtnetlink.7.html - émettez unRTM_GETLINK message et recherchez l' IFLA_LINKattribut en réponse.
ecatmur

Réponses:

1

La commande ip link showest probablement ce que vous voulez. Il affichera l'index devant les informations d'interface. Exemple ci-dessous d'un système avec des NIC liés.

# 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
la source