В некоторых случаях в /etc/iftab попадают записи вида eth0.911@eth0 mac 00:07:e9:1b:ba:d7 eth1.1@eth1 mac 00:13:20:cb:d4:ef
/sbin/ip -o a l Вот что использует alterator в качестве источника. Уж если ядро заполучило такие именя интерфейсов, то извините ... это уже не проблема alterator.
И чья это тогда проблема ? Вот, например: 2: lo: <LOOPBACK,UP,10000> mtu 16436 qdisc noqueue \ link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: lo inet 127.0.0.1/8 scope host lo 4: eth0: <BROADCAST,MULTICAST,UP,10000> mtu 1500 qdisc pfifo_fast qlen 1000\ link/ether 00:07:e9:1b:ba:d7 brd ff:ff:ff:ff:ff:ff 4: eth0 inet x.x.x.x/27 brd 213.156.193.31 scope global eth0 4: eth0 inet 192.168.1.7/24 brd 192.168.1.255 scope global eth0:1 4: eth0 inet x.x.x.x/27 brd 213.156.193.31 scope global secondary eth0 6: eth1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 1000\ link/ether 00:13:20:cb:d4:ef brd ff:ff:ff:ff:ff:ff 6: eth1 inet 192.168.1.2/30 brd 192.168.1.3 scope global eth1 1: venet0: <BROADCAST,POINTOPOINT,NOARP> mtu 1500 qdisc noqueue \ link/void 8: eth0.911@eth0: <BROADCAST,MULTICAST,UP,10000> mtu 1500 qdisc noqueue \ link/ether 00:07:e9:1b:ba:d7 brd ff:ff:ff:ff:ff:ff 8: eth0.911 inet 10.1.133.1/24 scope global eth0.911 10: eth1.1@eth1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue \ link/ether 00:13:20:cb:d4:ef brd ff:ff:ff:ff:ff:ff 12: eth1.14@eth1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue \ link/ether 00:13:20:cb:d4:ef brd ff:ff:ff:ff:ff:ff 14: eth1.23@eth1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue \ link/ether 00:13:20:cb:d4:ef brd ff:ff:ff:ff:ff:ff
как вариант: /sbin/ip -o a l|grep -v @|grep link
(In reply to comment #1) > /sbin/ip -o a l > > Вот что использует alterator в качестве источника. Уж если ядро заполучило такие > именя интерфейсов, то извините ... это уже не проблема alterator. Почему, у тебя просто недостаточная фильтрация базара ядра вследствие неучтённого случая ;-) PS: у меня сейчас vlan'ов под рукой нет, подтвердить не могу, но верю.
(In reply to comment #4) > (In reply to comment #1) > > /sbin/ip -o a l > > > > Вот что использует alterator в качестве источника. Уж если ядро заполучило такие > > именя интерфейсов, то извините ... это уже не проблема alterator. > Почему, у тебя просто недостаточная фильтрация базара ядра вследствие > неучтённого случая ;-) OK, уломали ;) Тогда давайте алгоритм. eth1.1@eth1 - эти чудища имеют какие-то отличия от нормальных ethernet интерфейсов? Можно ли их отличить, например, глядя на /sys/class/net ? Например арактерный драйвер устройства?
сходу пока вижу такое отличие. у vlan-интерфейсов отсутствует симлинк /sys/class/net/<iface>/device
В udev сейчас для подобных целей используется проверка вида DRIVERS=="?*": # the DRIVERS key is needed to not match bridges and VLAN sub-interfaces if [ "$MATCHADDR" ]; then match="$match, DRIVERS==\"?*\", ATTR{address}==\"$MATCHADDR\"" fi (это скрипт, который у нас пока не используется, но занимается примерно тем же, что alterator в данном случае, но пишет не iftab, а правила udev для интерфейсов). Для 2.6.18 проверка наличия ссылки device, похоже, достаточна (хотя уже может дать ложное срабатывание для каких-то кривых устройств с древними драйверами), но в последующих ядрах может сломаться из-за изменения структуры sysfs.
Собственно, вот из man ifrename: SYSFS{device} value Valid only up to kernel 2.6.20. Same as the businfo descriptor. SYSFS{..} value Valid only from kernel 2.6.21. Same as the businfo descriptor. SYSFS{device/driver} value Valid only up to kernel 2.6.20. Same as the driver descriptor. SYSFS{../driver} value Valid only from kernel 2.6.21. Same as the driver descriptor. Т.е., в 2.6.21 симлинка device не будет, вместо этого нужно идти вверх по каталогу для поиска атрибута с именем driver.
Так как должен выглядить алгоритм на shell? Есть ли где список изменений по /sys по сравнению с 2.6.18 ?
нынче alterator-net-eth работает только с физическими интерфейсами.