Мне нужно настроить некоторые таблицы базы данных, чтобы разместить имена сетевых интерфейсов длиной 50+ символов. Интересно, существует ли стандарт того, как долго может быть имя интерфейса, поэтому я могу правильно его сопоставить.
Какую длину может иметь имя сетевого интерфейса?
Ответ 1
Что касается специфичной для Linux части этого, то в последних версиях ядра это определяется IFNAMSIZ как 16 байтов, то есть 15 видимых пользователю байтов (при условии, что он содержит завершающий ноль). IFNAMSIZ
используется для определения поля имени struct net_device здесь.
Для эмпирического тестирования вы можете использовать следующее, чтобы увидеть, что 16 байтов не работают и 15 байтов работают:
# 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
(Предполагается, что у вас установлен пакет ip
из пакета iproute2, как это может быть в любом дистрибутиве Linux в течение последнего десятилетия или около того.)
Ответ 2
Кроме того, если вы хотите использовать интерфейс с DHCP, имя должно иметь длину & lt; 14, из-за этой проблемы: