rc-scripty i VLANy hardware-owe.

Blues blues w ds6.pg.gda.pl
Śro, 31 Lip 2002, 21:44:19 CEST


Wszelka sprzętowa akceleracja to jest to co tygrysy lubią najbardziej. 
Jednakże z VLAN-ami i trunkowniem interfejsów jest problem, bo pomimo iż 
karty sieciowe to obsługują robią to w bardzo porąbany sposób (będę mówił 
o tym co z nam z intelem, ale AFAIK to 3Com ma dokładnie te same 
problemy).
Mianowicie - sprzęt musi być ustawiony najpierw (załączony skrypt 
ians-start), interfejsy muszą być podniesione w najzwyklejszy sposób. One 
już będą działały w vlanach. Downowanie odbywa się w odwrotnej kolejności 
- down interfejsow (wszystkich), a potem wyłączenie sprzętowych bajerów 
(ians-stop z załącznika). Intel zaleca jeszcze usunięcie modułu ians przed 
ponownym ładowaniem ustawień.

Oto jak ja to wplotłem w /etc/init.d/network u siebie. To działa dobrze, 
ale wkurzające jest pilnowanie czy w upgrade nie ma rc-scriptów (tak, 
wiem, można wpisać hold...):

# See how we were called.
case "$1" in
  start)
        /etc/rc.d/init.d/ians-start
        network_init

        for i in $interfaces_boot $interfaces_sit_boot ; do
                run_cmd -a "$(nls 'Bringing up interface') $i" /sbin/ifup $i boot
[...]
        touch /var/lock/subsys/network
        ;;
  stop)
        # If we go to runlevel 0, 1 or 6 then umount all network fs
        if [ "$RUNLEVEL" = "6" -o "$RUNLEVEL" = "0" -o "$RUNLEVEL" = "1" ]; then
                if [ -x /etc/rc.d/init.d/netfs -a -f /var/lock/subsys/netfs ];
[...]
        network_deinit
        /etc/rc.d/init.d/ians-stop

        rm -f /var/lock/subsys/network
        ;;
  status)


Cały problem jest w tym, że w skrypcie ians-start najpierw ustawia się 
wszystko, a potem robi commit tych ustawień. I od tego dopiero momentu te 
ustawienia sa aktywowane. Nie da się tego zrobić z podniesionymi 
interfejsami - owocuje to pięknym oopsem. W tym momencie odpada 
najfajniejszy scenariusz z podnoszeniem i downowaniem vlanów poprzez 
ifup-ifdown.

Moim pomysłem na to jest umożliwienie uruchamiania w miejscach, gdzie ja 
mam teraz swoje skrypty zewnętrznych skryptów z jakiegoś katalogu, np. 
/etc/sysconfig/network.pre-up, /etc/sysconfig/network.pre-down. 
Pozwoliłoby to na bardzo proste załatwienie tego oraz przynajmniej kilku 
innych problemów. Byłoby to dokładnie to samo co if.up/if.down tyle, że 
per-network, a nie per-interfejs.

Z Arkiem gadałem na ircu i jemu ten pomysł się nie podobał za bardzo, 
ale... ja mówiąc szczerze nie bardzo widzę inne rozwiązanie. Miałem kiedyś 
jeszcze inny pomysł, żeby w /etc/sysconfig/interfaces robić pliczek 
vlan.cfg, który byłby brany w pierwszej kolejności przy stawianiu i w 
ostatniej przy downowaniu interfejsów w całości. i to niby byłoby fajne, 
ale... przy downowaniu _wszystkie_ wpisy w team-ie na karcie _muszą_ być 
wyłączone, a gdyby to robić na podstawie tego pliczku tak by nie było. 
iansy nie mają możliwości zrobienia czegoś typu flush. Jeżeli nie będą 
wszystkie wpisy zdjęte to powstanie sieci może się nie udać. Przy zdalnej 
pracy nie muszę chyba mówić do czego to doprowadzi ....

Czekam więc na inne propozucje albo przyjęcie tej....

-- 
---------------------------------
pozdr.  Paweł Gołaszewski        
---------------------------------
CPU not found - software emulation...

-------------- następna część ---------
#!/bin/sh
# interfejsy sieciowe
## eth1
ianscfg -d -v eth1.40
ianscfg -d -v eth1.1
ianscfg -d -m eth1
ianscfg -d -t ve1
## modul
rmmod ians

-------------- następna część ---------
#!/bin/sh
#
# interfejsy sieciowe
ianscfg -a -t ve1 -M NONE -V
ianscfg -a -t ve1 -m eth1 -p none
ianscfg -a -t ve1 -v eth1.40 -i 40
ianscfg -a -t ve1 -v eth1.1 -i 1
ianscfg -c ve1



Więcej informacji o liście dyskusyjnej pld-rc-scripts