É possível obter o índice da interface de rede não via / sys?

11

Então, o que estou procurando é um índice de interface (ou nome), mas o real. if_nametoindex(3)e ioctl(2)não parece me ajudar aqui. Agora, a única maneira de descobrir como fazer isso é via /sys. Deixe-me demonstrar, por exemplo, o que eu preciso:

# 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 uma maneira de fazer isso com uma chamada de função ou a única maneira é sysfs?

UVV
fonte
Olhada no que ip link showfaz (provavelmente usando a API do netlink)
Stéphane Chazelas
Veja também /proc/net/vlan/configou /proc/net/vlan/bond0.1007se é uma interface vlan.
Stéphane Chazelas
@ StéphaneChazelas Obrigado. Eu decidi continuar usando /sys. /procou /syssão mais ou menos os mesmos nesse sentido. Eu só queria verificar se existe um syscall para obter esse tipo de informação, acontece que não existe.
UVV
1
os syscalls seriam o sendmsg / recvmsg usando a API do soquete netlink.
Stéphane Chazelas
1
Documentação do rtnetlink: man7.org/linux/man-pages/man7/rtnetlink.7.html - emita a RTM_GETLINKmensagem e procure o IFLA_LINKatributo em resposta.
23415 ecatmur

Respostas:

1

O comando ip link showé provavelmente o que você deseja. Ele exibirá o índice na frente das informações da interface. Exemplo abaixo de um sistema com NICs ligadas.

# 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
fonte