]> git.ipfire.org Git - thirdparty/dracut.git/commitdiff
bonding: use hwaddr of the slave rather than the master
authorAlex Harpin <development@landsofshadow.co.uk>
Tue, 6 May 2014 22:41:17 +0000 (23:41 +0100)
committerHarald Hoyer <harald@redhat.com>
Tue, 29 Jul 2014 10:00:33 +0000 (12:00 +0200)
When a bonded interface is brought up, any slaves included in the bond
have their hardware address set to that of the bond master.  Although
this allows an interface to be brought up on start up, when the
configuration file is imported into the booted system it prevents
the bonded interface being successfully restarted.

The fix involves obtaining the hardware address of the slaves before
they are added to the bond and then using this value in the
configuration file.

(cherry picked from commit 83c9ff7dbb465bedb10119bb2883d34266922180)

modules.d/40network/ifup.sh
modules.d/45ifcfg/write-ifcfg.sh

index ede018832fc2820382b1fca6c00147432cbd47f2..fd84e4cd0ff39142699d541549adbe9c25d8b4e5 100755 (executable)
@@ -188,6 +188,7 @@ if [ -e /tmp/bond.${netif}.info ]; then
 
         for slave in $bondslaves ; do
             ip link set $slave down
+            cat /sys/class/net/$slave/address > /tmp/net.${netif}.${slave}.hwaddr
             echo "+$slave" > /sys/class/net/$bondname/bonding/slaves
             linkup $slave
         done
index 7f997a2afd40dd3a092f3c929bfa0529b27a3432..fb388bcb8ed642518c8b08c4c33e7edb69c56b11 100755 (executable)
@@ -206,7 +206,11 @@ for netup in /tmp/net.*.did-setup ; do
                 echo "TYPE=Ethernet"
                 echo "ONBOOT=yes"
                 echo "NETBOOT=yes"
-                echo "HWADDR=\"$(cat /sys/class/net/$slave/address)\""
+                if [ -e /tmp/net.${netif}.${slave}.hwaddr ]; then
+                   echo "HWADDR=\"$(cat /tmp/net.${netif}.${slave}.hwaddr)\""
+                else
+                   echo "HWADDR=\"$(cat /sys/class/net/$slave/address)\""
+                fi
                 echo "SLAVE=yes"
                 echo "MASTER=\"$netif\""
                 echo "NAME=\"$slave\""