diff --git a/modules.d/40network/ifup.sh b/modules.d/40network/ifup.sh index 815ab64f..593f3879 100755 --- a/modules.d/40network/ifup.sh +++ b/modules.d/40network/ifup.sh @@ -21,14 +21,18 @@ use_bridge='false' use_vlan='false' # enslave this interface to bond? -if [ -e /tmp/bond.info ]; then - . /tmp/bond.info +for i in /tmp/bond.*.info; do + [ -e "$i" ] || continue + unset bondslaves + unset bondname + . "$i" for slave in $bondslaves ; do if [ "$netif" = "$slave" ] ; then netif=$bondname + break 2 fi done -fi +done if [ -e /tmp/team.info ]; then . /tmp/team.info @@ -138,11 +142,12 @@ if [ "$netif" = "lo" ] ; then fi # start bond if needed -if [ -e /tmp/bond.info ]; then - . /tmp/bond.info +if [ -e /tmp/bond.${netif}.info ]; then + . /tmp/bond.${netif}.info if [ "$netif" = "$bondname" ] && [ ! -e /tmp/net.$bondname.up ] ; then # We are master bond device modprobe bonding + echo "+$netif" > /sys/class/net/bonding_masters ip link set $netif down # Stolen from ifup-eth diff --git a/modules.d/40network/net-genrules.sh b/modules.d/40network/net-genrules.sh index f4652b90..05fa5f3b 100755 --- a/modules.d/40network/net-genrules.sh +++ b/modules.d/40network/net-genrules.sh @@ -28,11 +28,14 @@ fi fi # bond: attempt only the defined interface (override bridge defines) - if [ -e /tmp/bond.info ]; then - . /tmp/bond.info + for i in /tmp/bond.*.info; do + [ -e "$i" ] || continue + unset bondslaves + unset bondname + . "$i" # It is enough to fire up only one IFACES="$IFACES ${bondslaves%% *}" - fi + done if [ -e /tmp/team.info ]; then . /tmp/team.info diff --git a/modules.d/40network/parse-bond.sh b/modules.d/40network/parse-bond.sh index 983eb3ae..25c51b89 100755 --- a/modules.d/40network/parse-bond.sh +++ b/modules.d/40network/parse-bond.sh @@ -54,8 +54,8 @@ if getarg bond >/dev/null; then fi # Make it suitable for initscripts export bondoptions=$(str_replace "$bondoptions" ";" ",") - echo "bondname=$bondname" > /tmp/bond.info - echo "bondslaves=\"$bondslaves\"" >> /tmp/bond.info - echo "bondoptions=\"$bondoptions\"" >> /tmp/bond.info + echo "bondname=$bondname" > /tmp/bond.${bondname}.info + echo "bondslaves=\"$bondslaves\"" >> /tmp/bond.${bondname}.info + echo "bondoptions=\"$bondoptions\"" >> /tmp/bond.${bondname}.info return fi diff --git a/modules.d/40network/parse-bridge.sh b/modules.d/40network/parse-bridge.sh index 1f027bb0..8c305c0f 100755 --- a/modules.d/40network/parse-bridge.sh +++ b/modules.d/40network/parse-bridge.sh @@ -37,12 +37,6 @@ parsebridge() { unset bridgename ethnames iface=eth0 -if [ -e /tmp/bond.info ]; then - . /tmp/bond.info - if [ -n "$bondname" ] ; then - iface=$bondname - fi -fi # Parse bridge for bridgename and ethnames if bridge="$(getarg bridge)"; then diff --git a/modules.d/45ifcfg/write-ifcfg.sh b/modules.d/45ifcfg/write-ifcfg.sh index f7a476cd..16da5e48 100755 --- a/modules.d/45ifcfg/write-ifcfg.sh +++ b/modules.d/45ifcfg/write-ifcfg.sh @@ -9,10 +9,6 @@ udevadm settle --timeout=30 read IFACES < /tmp/net.ifaces -if [ -e /tmp/bond.info ]; then - . /tmp/bond.info -fi - if [ -e /tmp/bridge.info ]; then . /tmp/bridge.info fi @@ -89,6 +85,11 @@ for netif in $IFACES ; do # bridge? unset bridge unset bond + unset bondslaves + unset bondname + unset bondoptions + [ -e /tmp/bond.${netif}.info ] && . /tmp/bond.${netif}.info + uuid=$(cat /proc/sys/kernel/random/uuid) if [ "$netif" = "$bridgename" ]; then bridge=yes