Vamos analisar man 5 sysfs
:
/sys/class/net
Each of the entries in this directory is a symbolic link representing
one of the real or virtual networking devices that are visible in
the network namespace of the process that is accessing the directory.
Portanto, de acordo com essa manpage, a saída de ls /sys/class/net
deve depender do namespace de rede do processo ls
. Mas ... O comportamento real não parece ser o descrito nesta manpage. Existe uma boa documentação do kernel sobre como ele funciona .
Cada sysfs
mount tem uma tag de namespace associado a isso. Esta tag é definida quando o sysfs é montado e depende do namespace de rede do processo de chamada . Cada entrada do sysfs (por exemplo, uma entrada em /sys/class/net
) também pode ter uma tag de namespace associado a ele.
Quando você faz iteração sobre o diretório sysfs, o kernel obtém a tag de namespace o sysfs mount e, em seguida, itera as entradas, filtrando aqueles que têm uma tag de namespace diferente .
Assim, os resultados de iteração sobre o /sys/class/net
dependem do namespace de rede do processo que iniciou /sys
mount em vez do namespace de rede do processo atual, portanto, você deve sempre montar /sys
no namespace de rede atual (de qualquer processo pertencente a este namespace) para ver os resultados corretos.