aboutsummaryrefslogtreecommitdiffstats
path: root/sysconfig
diff options
context:
space:
mode:
authorLukas Nykryn <lnykryn@redhat.com>2012-12-13 10:01:30 +0100
committerLukas Nykryn <lnykryn@redhat.com>2012-12-13 10:01:30 +0100
commit5638bafc757cd7070a13d7f1aedcc711f50a6e96 (patch)
treed66e2eca357e16076bf8c020faeb2578424b277e /sysconfig
parenta458762d5365371f7156f06a54e794f6f49b8a04 (diff)
downloadinitscripts-5638bafc757cd7070a13d7f1aedcc711f50a6e96.tar
initscripts-5638bafc757cd7070a13d7f1aedcc711f50a6e96.tar.gz
initscripts-5638bafc757cd7070a13d7f1aedcc711f50a6e96.tar.bz2
initscripts-5638bafc757cd7070a13d7f1aedcc711f50a6e96.tar.xz
initscripts-5638bafc757cd7070a13d7f1aedcc711f50a6e96.zip
Don't apply BONDING_OPTS on device with active slaves (#885235).
Diffstat (limited to 'sysconfig')
-rw-r--r--sysconfig/network-scripts/network-functions48
1 files changed, 25 insertions, 23 deletions
diff --git a/sysconfig/network-scripts/network-functions b/sysconfig/network-scripts/network-functions
index 1b31f999..b15028b5 100644
--- a/sysconfig/network-scripts/network-functions
+++ b/sysconfig/network-scripts/network-functions
@@ -422,29 +422,31 @@ install_bonding_driver ()
# 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
+ 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
}