From dd8e37e0d1fe9db8b3dace3af1d0fedc60eca6b3 Mon Sep 17 00:00:00 2001
From: An-Cheng Huang <ancheng@vyatta.com>
Date: Fri, 17 Jul 2009 14:35:30 -0700
Subject: Use sysfs for bonding device control

Bug 4511
Since loading bond module is broken in 2.6.29 or later kernel
and the root cause is in sysfs/procfs which is a mess.
Workaround the problem by loading bond module once and using sysfs.
(cherry picked from commit 47f054cb196959bb79960f3b6c1524b4ff7d32a8)

Conflicts:

	templates/interfaces/bonding/node.def
---
 templates/interfaces/bonding/node.def | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

(limited to 'templates/interfaces/bonding/node.def')

diff --git a/templates/interfaces/bonding/node.def b/templates/interfaces/bonding/node.def
index 74e9e39d..be8baaee 100644
--- a/templates/interfaces/bonding/node.def
+++ b/templates/interfaces/bonding/node.def
@@ -3,13 +3,18 @@ type: txt
 help: Set bonding interface
 syntax:expression: pattern $VAR(@) "^bond[0-9]+$" \
          ; "bonding must be (bond0-bond99)"
-create: ${vyatta_sbindir}/vyatta-bonding.pl --create $VAR(@)
+begin: if [ ! -f /sys/class/net/bonding_masters ]; then
+           sudo modprobe bonding max_bonds=0
+       fi
+create: sudo sh -c "echo +$VAR(@) > /sys/class/net/bonding_masters" || exit 1
+	sudo ip link set "$VAR(@)" up
+	/opt/vyatta/sbin/vyatta-link-detect $VAR(@) on
 delete: SLAVES=`cat /sys/class/net/$VAR(@)/bonding/slaves`;
-	if [ -z "$SLAVES" ]
-	then ${vyatta_sbindir}/vyatta-bonding.pl --delete $VAR(@)
+	if [ -z $SLAVES ]
+	then 
+	    sudo sh -c "echo -$VAR(@) > /sys/class/net/bonding_masters"
         else 
 	   echo "bonded interface $VAR(@) still has slaves: $SLAVES"
            exit 1;           
         fi
-end: ${vyatta_sbindir}/vyatta-bonding.pl --mode-change $VAR(@)
 comp_help: Enter bond interface name (bond0 - bond99)
-- 
cgit v1.2.3

