diff options
author | Roy Marples <roy@marples.name> | 2008-09-19 09:32:24 +0000 |
---|---|---|
committer | Roy Marples <roy@marples.name> | 2008-09-19 09:32:24 +0000 |
commit | 600d1f62fbda7e66e6ba988cd6ecdd97c076e521 (patch) | |
tree | 9608fb396a167903f460475cd1d5d5a781c0c628 | |
parent | 2de401bca120f445d803f996e883d2e4da5d379d (diff) |
Allow configuration of bond via extra sysfs entries, #105.
-rw-r--r-- | doc/net.example.Linux.in | 5 | ||||
-rw-r--r-- | net/bonding.sh | 12 |
2 files changed, 16 insertions, 1 deletions
diff --git a/doc/net.example.Linux.in b/doc/net.example.Linux.in index 701e1b16..a70b3cc9 100644 --- a/doc/net.example.Linux.in +++ b/doc/net.example.Linux.in @@ -576,6 +576,11 @@ #slaves_bond0="eth0 eth1 eth2" #config_bond0="null" # You may not want to assign an IP the the bond +# You can also configure the bond here, which must be done via sysfs on 2.6 +# kernels or newer. See the kernel bonding documention for a description of +# these options. +#arp_ip_target_bond0="+26.0.0.0" + # If any of the slaves require extra configuration - for example wireless or # ppp devices - we need to depend function on the bonded interfaces #rc_need_bond0="net.eth0 net.eth1" diff --git a/net/bonding.sh b/net/bonding.sh index 99a85170..34a96e13 100644 --- a/net/bonding.sh +++ b/net/bonding.sh @@ -15,7 +15,7 @@ _is_bond() bonding_pre_start() { - local s= slaves="$(_get_array "slaves_${IFVAR}")" + local x= s= slaves="$(_get_array "slaves_${IFVAR}")" [ -z "${slaves}" ] && return 0 @@ -39,6 +39,16 @@ bonding_pre_start() return 1 fi + # Configure the bond. + # Nice and dynamic :) + for x in /sys/class/net/"${IFACE}"/bonding/*; do + [ -f "${x}" ] || continue + eval s=\$${x##*/}_${IFVAR} + if [ -n "${s}" ]; then + echo "${s}" >"${x}" + fi + done + ebegin "Adding slaves to ${IFACE}" eindent einfo "${slaves}" |