Bug 13350 - не следует помещать в /etc/iftab привязки к vlan-интерфейсам
: не следует помещать в /etc/iftab привязки к vlan-интерфейсам
Status: CLOSED FIXED
: Sisyphus
(All bugs in Sisyphus/alterator-net-eth)
: unstable
: all Linux
: P2 normal
Assigned To:
:
:
:
:
:
  Show dependency tree
 
Reported: 2007-11-08 09:20 by
Modified: 2008-02-20 08:56 (History)


Attachments


Note

You need to log in before you can comment on or make changes to this bug.


Description From 2007-11-08 09:20:57
В некоторых случаях в /etc/iftab попадают записи вида

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

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



------- Comment #2 From 2007-11-08 12:05:01 -------
И чья это тогда проблема ? 

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

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 From 2007-11-08 12:10:22 -------
как вариант:

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

PS: у меня сейчас vlan'ов под рукой нет, подтвердить не могу, но верю.
------- Comment #5 From 2007-11-08 13:56:52 -------
(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 From 2007-11-08 14:06:30 -------
сходу пока вижу такое отличие. у vlan-интерфейсов отсутствует симлинк
/sys/class/net/<iface>/device
------- Comment #7 From 2007-11-08 22:04:40 -------
В 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 From 2007-11-08 22:19:16 -------
Собственно, вот из 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 From 2007-11-09 16:01:32 -------
Так как должен выглядить алгоритм на shell?
Есть ли где список изменений по /sys по сравнению с 2.6.18 ?
------- Comment #10 From 2008-01-14 10:43:07 -------
нынче alterator-net-eth работает только с физическими интерфейсами.