Bug 13350 - не следует помещать в /etc/iftab привязки к vlan-интерфейсам
Summary: не следует помещать в /etc/iftab привязки к vlan-интерфейсам
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: alterator-net-eth (show other bugs)
Version: unstable
Hardware: all Linux
: P2 normal
Assignee: Mikhail Efremov
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2007-11-08 09:20 MSK by Sergey Y. Afonin
Modified: 2008-02-20 08:56 MSK (History)
7 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Sergey Y. Afonin 2007-11-08 09:20:57 MSK
В некоторых случаях в /etc/iftab попадают записи вида

eth0.911@eth0   mac 00:07:e9:1b:ba:d7
eth1.1@eth1     mac 00:13:20:cb:d4:ef
Comment 1 inger@altlinux.org 2007-11-08 10:24:57 MSK
/sbin/ip -o a l

Вот что использует alterator в качестве источника. Уж если ядро заполучило такие
именя интерфейсов, то извините ... это уже не проблема alterator.



Comment 2 Sergey Y. Afonin 2007-11-08 12:05:01 MSK
И чья это тогда проблема ? 

Вот, например:

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
Comment 3 Sergey Y. Afonin 2007-11-08 12:10:22 MSK
как вариант:

/sbin/ip -o a l|grep -v @|grep link
Comment 4 Michael Shigorin 2007-11-08 13:39:58 MSK
(In reply to comment #1)
> /sbin/ip -o a l
> 
> Вот что использует alterator в качестве источника. Уж если ядро заполучило такие
> именя интерфейсов, то извините ... это уже не проблема alterator.
Почему, у тебя просто недостаточная фильтрация базара ядра вследствие
неучтённого случая ;-)

PS: у меня сейчас vlan'ов под рукой нет, подтвердить не могу, но верю.
Comment 5 inger@altlinux.org 2007-11-08 13:56:52 MSK
(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 ? Например
арактерный драйвер устройства?


Comment 6 Sergey Y. Afonin 2007-11-08 14:06:30 MSK
сходу пока вижу такое отличие. у vlan-интерфейсов отсутствует симлинк
/sys/class/net/<iface>/device
Comment 7 Sergey Vlasov 2007-11-08 22:04:40 MSK
В 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.
Comment 8 Sergey Vlasov 2007-11-08 22:19:16 MSK
Собственно, вот из 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.
Comment 9 inger@altlinux.org 2007-11-09 16:01:32 MSK
Так как должен выглядить алгоритм на shell?
Есть ли где список изменений по /sys по сравнению с 2.6.18 ?
Comment 10 inger@altlinux.org 2008-01-14 10:43:07 MSK
нынче alterator-net-eth работает только с физическими интерфейсами.