Qual é o significado de 'ATTR {type} == “1”' on udev?

1

Ao obter informações em um dispositivo de rede, um dos atributos listados para o dispositivo de nível superior é:

ATTR{type}=="1"

Qual é o significado disso e por que as regras fornecem nomes persistentes para as correspondências de dispositivos de rede?

    
por lvella 04.09.2018 / 21:35

1 resposta

2

ATTR{type} designa o valor da entrada correspondente em /sys , conforme filtrado pelos outros elementos nos filtros do udev. Se você fizer find /sys/ -name type , poderá ver que pode se aplicar a uma grande lista de objetos em vários subsistemas.

Como você marcou sua pergunta com linux networking , posso supor que a pergunta seja apenas sobre dispositivos de rede e, em seguida, o protocolo de interface de rede type :

What: /sys/class/net/<iface>/type
Date: April 2005
KernelVersion: 2.6.12
Contact: [email protected]
Description:
Indicates the interface protocol type as a decimal value. See include/uapi/linux/if_arp.h for all possible values.

Este arquivo , por sua vez, define os valores conhecidos:

#define ARPHRD_ETHER    1       /* Ethernet 10Mbps      */

Esse é o 1 em ATTR{type}=="1" e significa simplesmente "dispositivo Ethernet" (qualquer que seja sua velocidade, seja real, incluindo dispositivos pseudo-ethernet como wireless ou virtuais, incluindo veth ou bridges ...).

Uma outra interface comum é a interface lo com o tipo 772 (portanto, udev não se importará se alguma vez detectou uma aparecendo com o% anteriorATTR{type}=="1"), como visto lá:

#define ARPHRD_LOOPBACK 772     /* Loopback device      */

Pode ser verificado com:

$ cat /sys/class/net/lo/type
772
    
por 05.09.2018 / 00:33