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
committerLukas Nykryn <lnykryn@redhat.com>2012-10-08 13:35:09 +0200
commite5ae19c231e69b784d9a111ca920bb28281aef28 (patch)
tree939f48a4f145acff8f915d8cea67cb61eafd623a /sysconfig/network-scripts/network-functions
parent3486899bd3a2e835c444fe966acb30c5193e990e (diff)
downloadinitscripts-e5ae19c231e69b784d9a111ca920bb28281aef28.tar
initscripts-e5ae19c231e69b784d9a111ca920bb28281aef28.tar.gz
initscripts-e5ae19c231e69b784d9a111ca920bb28281aef28.tar.bz2
initscripts-e5ae19c231e69b784d9a111ca920bb28281aef28.tar.xz
initscripts-e5ae19c231e69b784d9a111ca920bb28281aef28.zip
Sets BONDING_OPTS before interface is brougth up and checks if it is not already added (#820430)
Diffstat (limited to 'sysconfig/network-scripts/network-functions')
-rw-r--r--sysconfig/network-scripts/network-functions32
1 files changed, 31 insertions, 1 deletions
diff --git a/sysconfig/network-scripts/network-functions b/sysconfig/network-scripts/network-functions
index e0d5018c..0fd55708 100644
--- a/sysconfig/network-scripts/network-functions
+++ b/sysconfig/network-scripts/network-functions
@@ -416,7 +416,37 @@ install_bonding_driver ()
{
ethtool -i $1 2>/dev/null | grep -q "driver: bonding" && 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
+ /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
+ )
return 0
}