Obtendo informações do sysfs

6

Estou criando um script para pesquisar informações sobre interfaces de rede. Para isso eu recebo alguns dados de /sysfs .

Tudo correu bem até que eu quis esclarecer todos os estados possíveis de uma interface (que são btw? Por enquanto, só sei sobre up , down e unknown ). Eu passei por /usr/src/linux/Documentation/sysfs-rules.txt e encontrei isto:

Accessing /sys/class/net/eth0/device is a bug in the application

Existe uma razão para isso? Alguém poderia me explicar se estou fazendo algo errado obtendo informações de /sysfs ?

Eu não faço iteração em todas as interfaces em /sysfs , mas obtenho todas as interfaces de rede com getifaddrs(3) . Talvez haja outro método para obter o status iface? Obrigado.

    
por UVV 14.08.2014 / 10:29

1 resposta

6

É o link device nos diretórios de classe que você não deveria usar. A idéia é que /sys/class/net/eth0 é um link simbólico para algum lugar abaixo de /sys/devices , e o link device simplesmente vincula a um diretório pai (grand -) * ; em vez de usar o link device , você deve voltar para um diretório pai, se necessário.

Acessar arquivos em /sys/class/net/eth0/ é bom.

Se você se referir ao status operacional encontrado em /sys/class/net/eth0/operstate , há mais alguns. Os nomes são definidos em net/core/net-sysfs.c e constantes em include/uapi/linux/if.h . Eles vêm de RFC 2863 .

    
por 15.08.2014 / 01:31