diff options
author | An-Cheng Huang <ancheng@vyatta.com> | 2009-07-17 14:35:30 -0700 |
---|---|---|
committer | An-Cheng Huang <ancheng@vyatta.com> | 2009-07-17 14:35:30 -0700 |
commit | dd8e37e0d1fe9db8b3dace3af1d0fedc60eca6b3 (patch) | |
tree | 00efba5ec592953c657a8e482763e236d4ad3e38 /templates | |
parent | a26515cbc2a0fbf2369ee25c89e294f73126ad81 (diff) | |
download | vyatta-cfg-quagga-dd8e37e0d1fe9db8b3dace3af1d0fedc60eca6b3.tar.gz vyatta-cfg-quagga-dd8e37e0d1fe9db8b3dace3af1d0fedc60eca6b3.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.
(cherry picked from commit 47f054cb196959bb79960f3b6c1524b4ff7d32a8)
Conflicts:
templates/interfaces/bonding/node.def
Diffstat (limited to 'templates')
-rw-r--r-- | templates/interfaces/bonding/node.def | 13 | ||||
-rw-r--r-- | templates/interfaces/bonding/node.tag/mode/node.def | 2 |
2 files changed, 11 insertions, 4 deletions
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) 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 |