commit 8eae0d9c80f5755f141cdb9622ae3673c81fe25f
Author: Mariusz Mazur <[email protected]>
Date:   Thu Jan 22 16:39:12 2015 +0100

    Fix bonding and actually enable ETHTOOL_OPTS
    
    1. Applying ETHTOOL_OPTS was inside a code block only run for bond
    slaves. This is now fixed.
    2. Dependency on 'ifenslave' for bonding device configuration was
    dropped. Use iproute2 instead.
    3. ifup/ifdown behavior for bondX and enslaved devices was fixed. Both
    commands should be symmetrical: running 'ifdown SOMEIF; ifup SOMEIF'
    should get SOMEIF as close to what its state was before ifdown as is
    possible. This was very not the case.

 lib/ifdown | 20 +++-----------------
 lib/ifup   | 31 ++++++++++++-------------------
 2 files changed, 15 insertions(+), 36 deletions(-)
---
diff --git a/lib/ifdown b/lib/ifdown
index 55af267..73df490 100755
--- a/lib/ifdown
+++ b/lib/ifdown
@@ -119,23 +119,9 @@ if [ -n "${SUBDEVICE}" ]; then
 else
        LC_ALL=C ip addr flush dev ${DEVICE} 2>&1 | grep -v "Nothing to flush"
 
-       if [ ${DEVICETYPE} = "bond" ]; then
-               if [ ! -x /sbin/ifenslave ]; then
-                       nls "%s is missing. Can't continue." "/sbin/ifenslave"
-                       exit 1
-               fi
-
-               # get up the bonding device before enslaving
-               if ! check_device_down "${DEVICE}"; then
-                       ip link set ${DEVICE} up
-               fi
-
-               for BSVAR in $(awk '/Slave Interface:/{ print $3}' 
/proc/net/bonding/${DEVICE}); do
-                       if [ "${BSVAR}" ]; then
-                               ifenslave -d ${DEVICE} $BSVAR
-                       fi
-               done
-       fi
+    if is_yes "$SLAVE"; then
+        ip link set ${DEVICE} nomaster
+    fi
 
        ip link set ${DEVICE} down
 fi
diff --git a/lib/ifup b/lib/ifup
index b0c6756..c534442 100755
--- a/lib/ifup
+++ b/lib/ifup
@@ -89,25 +89,6 @@ if ! /sbin/ip link set multicast ${MULTICAST} dev ${DEVICE} 
> /dev/null 2>&1; th
        exit 1
 fi
 
-if is_yes "$SLAVE" && [ ! -x /sbin/ifenslave ]; then
-       nls "%s is missing. Can't continue." "/sbin/ifenslave"
-       exit 1
-fi
-
-if is_yes "$SLAVE" && [ -n "$MASTER" -a -x /sbin/ifenslave ]; then
-       RFLAG="" && is_yes "${RECIEVE-ONLY}" && RFLAG="-r"
-
-       ip link set ${DEVICE} down
-       nls "Enslaving %s to %s" "$DEVICE" "$MASTER"
-       ifenslave $RFLAG "$MASTER" "$DEVICE"
-
-       if [ -n "$ETHTOOL_OPTS" ] ; then
-               /sbin/ethtool -s $DEVICE $ETHTOOL_OPTS
-       fi
-
-       exit 0
-fi
-
 if [ -n "$MACADDR" ]; then
        ip link set ${DEVICE} address ${MACADDR}
 fi
@@ -134,6 +115,18 @@ if is_yes "${WLAN_WPA}"; then
        check_link_down ${DEVICE} $(( $WLAN_WPA_WAIT_TIMEOUT * 2 ))
 fi
 
+if [ -n "$ETHTOOL_OPTS" ] ; then
+    /sbin/ethtool -s $DEVICE $ETHTOOL_OPTS
+fi
+
+if is_yes "$SLAVE" && [ -n "$MASTER" ] ; then
+    nls "Enslaving %s to %s" "$DEVICE" "$MASTER"
+    ip link set "$DEVICE" master "$MASTER"
+    ip link set "$DEVICE" up
+
+    exit 0
+fi
+
 if [ "$HANDLING" = "2" ]; then
        exit 0
 fi
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/projects/rc-scripts.git/commitdiff/8eae0d9c80f5755f141cdb9622ae3673c81fe25f

_______________________________________________
pld-cvs-commit mailing list
[email protected]
http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit

Reply via email to