summaryrefslogtreecommitdiff
path: root/templates
diff options
context:
space:
mode:
authorStephen Hemminger <stephen.hemminger@vyatta.com>2009-06-08 15:08:08 -0700
committerStephen Hemminger <stephen.hemminger@vyatta.com>2009-06-08 15:53:09 -0700
commit47f054cb196959bb79960f3b6c1524b4ff7d32a8 (patch)
tree7ca7427328b24512a74db64d44375de45173621b /templates
parent9baa090760ea564d75c146b64568a5506e1358aa (diff)
downloadvyatta-cfg-system-47f054cb196959bb79960f3b6c1524b4ff7d32a8.tar.gz
vyatta-cfg-system-47f054cb196959bb79960f3b6c1524b4ff7d32a8.zip
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.
Diffstat (limited to 'templates')
-rw-r--r--templates/interfaces/bonding/node.def11
-rw-r--r--templates/interfaces/bonding/node.tag/mode/node.def2
2 files changed, 10 insertions, 3 deletions
diff --git a/templates/interfaces/bonding/node.def b/templates/interfaces/bonding/node.def
index ece131b4..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(@)
+ 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)
diff --git a/templates/interfaces/bonding/node.tag/mode/node.def b/templates/interfaces/bonding/node.tag/mode/node.def
index 4424e95c..7e322ffc 100644
--- a/templates/interfaces/bonding/node.tag/mode/node.def
+++ b/templates/interfaces/bonding/node.tag/mode/node.def
@@ -8,6 +8,8 @@ syntax:expression: $VAR(@) in \
"mode must be 802.3ad, active-backup, broadcast, round-robin, \
transmit-load-balance, adaptive-load-balance, or xor"
help: Sets the bonding mode
+update: sudo ${vyatta_sbindir}/vyatta-bonding.pl --set-mode $VAR(../@) $VAR(@)
+
comp_help: Possible bonding mode
802.3ad IEEE 802.3ad Dynamic link aggregation (Default)
active-backup Fault tolerant: only one slave in the bond is active