[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

busybox, bridge_tools, ifupdown : comportement bizarre lors de la configuration d'un bridge



Bonjour,

je travaille actuellement sur une carte avec un linux embarqué dont la
distribution est "pétrie" par yocto avec en tête de gondole "busybox".

Je souhaite configurer les deux interfaces IP de la cible en switch,
soit en bridge.
Une fois bridge_utils  et les options qui vont bien dans le noyau
ajoutés à la distrib, j'ai réussi à monter le bridge à la main en
utilisant les commandes suivantes :

ip link set up dev eth0
ip link set up dev eth1
brctl addbr br0
brctl addif br0 eth0 eth1
ip link set up dev br0

J'ai constaté que le ifupdown "embraqué" dans busybox ne semble pas
reconnaitre les options de type "bridge_xxx" dans le
fichier /etc/network/interfaces, donc la configuration minimale d'un
bridge tel que je le fais dans une debian ne fonctionne pas :
iface br0 inet static
address 172.17.3.2
netmask 255.255.255.0
gateway 172.173.3.1
bridge_ports eth0 eth1

Pour contourner le problème, j'ai utilisé un script if-pre-up qui lance
les commandes décrites précedenement si $IFACE vaut "br0".

L'enchaînement des commandes fonctionne bien et à la fin du boot
ifconfig indique que l'interface est montée, Oh joie !

mais que de courte durée car le trafic ne passe pas d'une interface à
l'autre !

En refaisant "à la main" le parcours je me suis rendu compte que si
j'enchaîne les commandes de configuration dans un script, les
communications "ne traversent pas" le switch...
Mais si je commence la configuration en lançant les commandes une à une
avec une attente entre elles (ne serait-ce que le temps de les taper
avec deux doigts) le switch fonctionne correctement.

Partant de ce constat, j'ai joué à l'automaticien de base en ajoutant
des tempo... Ce qui donne le script suivant :
ip link set up dev eth0
sleep 3
ip link set up dev eth1
sleep 3
brctl addbr br0
sleep 3
brctl addif br0 eth0 eth1
sleep 3
ip link set up dev br0

Je pense que cette solution est un contournement mais n'est pas "la
solution", cependant je n'arrive pas à identifier ce que j'ai raté dans
la configuration.


Une autre piste, je n'ai pas réussi à identifier la liste des options
dans interfaces que reconnaît busybox, une recherche sur les sources de
motif comme "bridge_" n'a rien donné ce qui me conforte dans le fait que
ces options ne sont pas gérées. Ai-je raté un truc ?

Et comment faire pour avoir une version de ifupdown qui traite les
commandes étendues dans /etc/network/interfaces comme sous debian ?

Cordialement.


-- 
Yann Cohen <yann@ianco.org>
ianco


Reply to: