No que diz respeito à parte específica do Linux, nas versões recentes do kernel, isso é definido por IFNAMSIZ para ser 16 bytes, portanto, 15 bytes visíveis ao usuário (supondo que inclua um nulo à direita).
IFNAMSIZ
é usado na definição do campo de nome do struct net_device aqui
. Para testar empiricamente, você pode usar o seguinte para ver que 16 bytes falham e 15 bytes funcionam:
# CLEAN SLATE
root# ip link ls dev 123456789012345
Device "123456789012345" does not exist.
root# ip link ls dev 1234567890123456
Device "1234567890123456" does not exist.
# FAIL
root# ip link add dev 1234567890123456 type dummy
Error: argument "1234567890123456" is wrong: "name" too long
root# ip link ls dev 1234567890123456
Device "1234567890123456" does not exist.
# PASS
root# ip link add dev 123456789012345 type dummy
root# ip link ls dev 123456789012345
40: 123456789012345: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT group default
link/ether ... brd ff:ff:ff:ff:ff:ff
# CLEAN UP
root# ip link del dev 123456789012345
(Supondo que você tenha
ip
do pacote iproute2 instalado, como é provável em qualquer distribuição Linux da última década.)