A única maneira parece olhar para o atributo IFLA_INFO_KIND
retornado de um RTM_GETLINK
. Este é um atributo opcional que está faltando para dispositivos físicos e também para o dispositivo de loopback lo
.
Quando presente, contém uma string como veth
, bridge
, et cetera. Comparando isso com uma lista de tipos de links virtuais conhecidos (consulte ip link help
), identifica interfaces de rede virtual, deixando todas as outras interfaces de rede no estádio "interface de rede física".
Não é perfeito, mas funciona sem ter que consultar /sys/class/net/[IFNAME]
, que nem sempre está corretamente presente e precisa de sysfs
(re) montagem, veja também Identifique se uma interface de rede é um veth
usando /sys/class/net
?