aboutsummaryrefslogtreecommitdiffstats
path: root/sysconfig/network-scripts/network-functions
diff options
context:
space:
mode:
authorLukas Nykryn <lnykryn@redhat.com>2012-10-08 13:35:01 +0200
committerVáclav Pavlín <vpavlin@redhat.com>2013-01-22 10:07:14 +0100
commit87d60f87d68ddf8ea214dbbcc072ef4097680b6c (patch)
treed77b63a031516300074b4de2cc6e8a1081943dfa /sysconfig/network-scripts/network-functions
parent814fac877b22577f4835afcfb2597677270f6a4c (diff)
downloadinitscripts-87d60f87d68ddf8ea214dbbcc072ef4097680b6c.tar
initscripts-87d60f87d68ddf8ea214dbbcc072ef4097680b6c.tar.gz
initscripts-87d60f87d68ddf8ea214dbbcc072ef4097680b6c.tar.bz2
initscripts-87d60f87d68ddf8ea214dbbcc072ef4097680b6c.tar.xz
initscripts-87d60f87d68ddf8ea214dbbcc072ef4097680b6c.zip
Sets BONDING_OPTS before interface is brougth up
Diffstat (limited to 'sysconfig/network-scripts/network-functions')
-rw-r--r--sysconfig/network-scripts/network-functions34
1 files changed, 33 insertions, 1 deletions
diff --git a/sysconfig/network-scripts/network-functions b/sysconfig/network-scripts/network-functions
index 0b5b11d8..c57093df 100644
--- a/sysconfig/network-scripts/network-functions
+++ b/sysconfig/network-scripts/network-functions
@@ -427,7 +427,39 @@ install_bonding_driver ()
{
[ -d "/sys/class/net/$1" ] && return 0
[ ! -f /sys/class/net/bonding_masters ] && ( modprobe bonding || return 1 )
- echo "+$1" > /sys/class/net/bonding_masters 2>/dev/null
+ if ! grep -sq "$1" /sys/class/net/bonding_masters; then
+ echo "+$1" > /sys/class/net/bonding_masters 2>/dev/null
+ fi
+ (
+ # Set config here
+ need_config "$1"
+ source_config
+ if [ -f /sys/class/net/${DEVICE}/bonding/slaves -a $(wc -l < /sys/class/net/${DEVICE}/bonding/slaves) -eq 0 ]; then
+ /sbin/ip link set dev ${DEVICE} down
+
+ # add the bits to setup driver parameters here
+ for arg in $BONDING_OPTS ; do
+ key=${arg%%=*};
+ value=${arg##*=};
+ if [ "${key}" = "arp_ip_target" -a "${value:0:1}" != "+" ]; then
+ OLDIFS=$IFS;
+ IFS=',';
+ for arp_ip in $value; do
+ if ! grep -q $arp_ip /sys/class/net/${DEVICE}/bonding/$key; then
+ echo +$arp_ip > /sys/class/net/${DEVICE}/bonding/$key
+ fi
+ done
+ IFS=$OLDIFS;
+ elif [ "${key}" = "arp_ip_target" ]; then
+ if ! grep -q ${value#+} /sys/class/net/${DEVICE}/bonding/$key; then
+ echo "$value" > /sys/class/net/${DEVICE}/bonding/$key
+ fi
+ elif [ "${key}" != "primary" ]; then
+ echo $value > /sys/class/net/${DEVICE}/bonding/$key
+ fi
+ done
+ fi
+ )
return 0
}