From dd8e37e0d1fe9db8b3dace3af1d0fedc60eca6b3 Mon Sep 17 00:00:00 2001 From: An-Cheng Huang 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