diff options
author | Lukas Nykryn <lnykryn@redhat.com> | 2012-10-08 13:35:01 +0200 |
---|---|---|
committer | Lukas Nykryn <lnykryn@redhat.com> | 2012-10-08 13:35:09 +0200 |
commit | e5ae19c231e69b784d9a111ca920bb28281aef28 (patch) | |
tree | 939f48a4f145acff8f915d8cea67cb61eafd623a /sysconfig/network-scripts | |
parent | 3486899bd3a2e835c444fe966acb30c5193e990e (diff) | |
download | initscripts-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')
-rwxr-xr-x | sysconfig/network-scripts/ifup-eth | 25 | ||||
-rw-r--r-- | sysconfig/network-scripts/network-functions | 32 |
2 files changed, 31 insertions, 26 deletions
diff --git a/sysconfig/network-scripts/ifup-eth b/sysconfig/network-scripts/ifup-eth index 1c09fd76..5ef3055c 100755 --- a/sysconfig/network-scripts/ifup-eth +++ b/sysconfig/network-scripts/ifup-eth @@ -118,31 +118,6 @@ fi # Bonding initialization. For DHCP, we need to enslave the devices early, # so it can actually get an IP. if [ "$ISALIAS" = no ] && is_bonding_device ${DEVICE} ; 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 - /sbin/ip link set dev ${DEVICE} up [ -n "${LINKDELAY}" ] && /bin/sleep ${LINKDELAY} for device in $(LANG=C egrep -l "^[[:space:]]*MASTER=\"?${DEVICE}\"?[[:space:]]*$" /etc/sysconfig/network-scripts/ifcfg-*) ; do 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 } |