Artyom A Anikeev

bond farmework was done. Should be tested properly

Showing 1 changed file with 76 additions and 6 deletions
... ... @@ -258,15 +258,85 @@ case "$CMD" in
fix) #fix all interfaces to config state
#brctl addif bond0 eth2
#REMOVING UNNECESSARY D1Q
OLD_D1Q_IFACES="`cat /sys/class/net/bonding_masters`"
for OLD_D1Q_IFACE in ${OLD_D1Q_IFACES[@]}; do
D1Q_IS_USED=0
OLD_SLAVES_VARIABLE="`cat /sys/class/net/`$OLD_D1Q_IFACE`/bonding/slaves`"
OLD_SLAVES_VARIABLE="${OLD_SLAVES_VARIABLE//[.]/_}[@]"
for D1Q_IFACE in ${D1Q_IFACES[@]}; do
if [[ "$D1Q_IFACE" == "$OLD_D1Q_IFACE" ]]; then #let's kick out useless slaves
SLAVES_VARIABLE="${D1Q_IFACE}_SLAVES"
SLAVES_VARIABLE="${SLAVES_VARIABLE//[.]/_}[@]"
for OLD_SLAVE in "${!OLD_SLAVES_VARIABLE}"; do
SLAVE_IS_USED=0
for SLAVE in "${!SLAVES_VARIABLE}"; do
if [[ "$SLAVE" == "OLD_SLAVE" ]]; then
SLAVE_IS_USED=1
break;
fi
done
if [[ "$SLAVE_IS_USED" == 0 ]]; then
#echo "ip link set dev $OLD_SLAVE down"
echo "echo '-$OLD_SLAVE' > /sys/class/net/"$OLD_D1Q_IFACE"/boding/slaves"
fi
done
D1Q_IS_USED=1
break;
fi
done
if [[ "$D1Q_IS_USED" == 0 ]]; then #let's kick out useless d1q
#echo "ip link set dev $OLD_D1Q_IFACE down"
echo "echo '-$D1Q_IFACE' > /sys/class/net/bonding_masters"
fi
done
#CREATING OF NECESSARY D1Q
for D1Q_IFACE in ${D1Q_IFACES[@]}; do
SLAVES_VARIABLE="${D1Q_IFACE}_SLAVES"
SLAVES_VARIABLE="${SLAVES_VARIABLE//[.]/_}[@]"
for SLAVE in "${!SLAVES_VARIABLE}"; do
#if [[ ]]; then
#???TODO:ask bircoph how to ensalve with ip
#else
#fi
echo "There are a place for a bond creating. Coming soon..."
D1Q_EXISTS=0
for OLD_D1Q_IFACE in ${OLD_D1Q_IFACES[@]}; do
if [[ "$D1Q_IFACE" == "$OLD_D1Q_IFACE" ]]; then #it's here. Let's fix it.
OLD_SLAVES_VARIABLE="`cat /sys/class/net/`$OLD_D1Q_IFACE`/bonding/slaves`"
OLD_SLAVES_VARIABLE="${OLD_SLAVES_VARIABLE//[.]/_}[@]"
for SLAVE in "${!SLAVES_VARIABLE}"; do
SLAVE_EXISTS=0
for OLD_SLAVE in "${!OLD_SLAVES_VARIABLE}"; do
if [[ "$SLAVE" == "$OLD_SLAVE" ]]; then
SLAVE_EXISTS=1
break;
fi
done
if [[ "$SLAVE_EXISTS" == 0 ]]; then
echo "ip link set dev $SLAVE down" #enslaved int should be shutted down
echo "echo '+$SLAVE' > /sys/class/net/"$D1Q_IFACE"/bonding/slaves"
fi
done
D1Q_EXISTS=1
break;
fi
done
if [[ "$D1Q_EXISTS" == 0 ]]; then #make all
echo "echo '+$D1Q_IFACE' > /sys/class/net/bonding_masters"
for SLAVE in "${!SLAVES_VARIABLE}"; do
echo "ip link set dev $SLAVE down" #enslaved int should be shutted down
echo "echo '+$SLAVE' > /sys/class/net/"$D1Q_IFACE"/bonding/slaves"
done
fi
echo "ip link set dev $D1Q_IFACE up"
for SLAVE in "${!SLAVES_VARIABLE}"; do #slave starts after bond
echo "ip link set dev $SLAVE up"
done
VLAN_N_BRIDGE_VARIABLE="${D1Q_IFACE}_VLAN_N_BRIDGES"
... ...