diff -urNp rc-scripts-0.4.13.orig/lib/ifdown rc-scripts-0.4.13/lib/ifdown --- rc-scripts-0.4.13.orig/lib/ifdown 2015-01-22 16:01:18.000000000 +0000 +++ rc-scripts-0.4.13/lib/ifdown 2015-02-06 13:44:37.910314244 +0000 @@ -118,11 +118,6 @@ if [ -n "${SUBDEVICE}" ]; then ip addr del ${IP4ADDR} label ${SUBDEVICE} dev ${DEVICE} else LC_ALL=C ip addr flush dev ${DEVICE} 2>&1 | grep -v "Nothing to flush" - - if is_yes "$SLAVE"; then - ip link set ${DEVICE} nomaster - fi - ip link set ${DEVICE} down fi diff -urNp rc-scripts-0.4.13.orig/lib/ifdown-bond rc-scripts-0.4.13/lib/ifdown-bond --- rc-scripts-0.4.13.orig/lib/ifdown-bond 1970-01-01 00:00:00.000000000 +0000 +++ rc-scripts-0.4.13/lib/ifdown-bond 2015-02-06 13:42:15.348314244 +0000 @@ -0,0 +1,54 @@ +#!/bin/sh +# +# ifdown-bond - bonding configuration script +# Copyright (C) 2014 Marcin Krol +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# +PATH=/sbin:/usr/sbin:/bin:/usr/bin + +. /etc/sysconfig/network +. /etc/rc.d/init.d/functions +. /lib/rc-scripts/functions.network + +CONFIG=$1 +source_config + +if [ "x${2}" = "xboot" ] && is_no "${ONBOOT}"; then + exit +fi + +# set all major variables +setup_ip_param + +# forget all addresses +LC_ALL=C ip addr flush dev ${DEVICE} 2>&1 | grep -v "Nothing to flush" + +# release slave devices +for SLAVE_DEV in $(cat /sys/class/net/${DEVICE}/bonding/slaves); do + echo "-${SLAVE_DEV}" > /sys/class/net/${DEVICE}/bonding/slaves +done + +# bring bonding master down +ip link set ${DEVICE} down + +# remove bonding master +if grep -wq "${DEVICE}" /sys/class/net/bonding_masters; then + echo "-${DEVICE}" > /sys/class/net/bonding_masters + if [ $? -ne 0 ]; then + exit 1 + fi +fi diff -urNp rc-scripts-0.4.13.orig/lib/ifup rc-scripts-0.4.13/lib/ifup --- rc-scripts-0.4.13.orig/lib/ifup 2015-01-22 16:01:18.000000000 +0000 +++ rc-scripts-0.4.13/lib/ifup 2015-02-06 13:51:40.208314244 +0000 @@ -120,11 +120,12 @@ if [ -n "$ETHTOOL_OPTS" ] ; then fi if is_yes "$SLAVE" && [ -n "$MASTER" ] ; then - nls "Enslaving %s to %s" "$DEVICE" "$MASTER" - ip link set "$DEVICE" master "$MASTER" - ip link set "$DEVICE" up - - exit 0 + if ! grep -wq "${DEVICE}" /sys/class/net/${MASTER}/bonding/slaves 2>/dev/null; then + nls "Enslaving %s to %s" "$DEVICE" "$MASTER" + ip link set dev ${DEVICE} down + echo "+${DEVICE}" > /sys/class/net/${MASTER}/bonding/slaves 2>/dev/null + fi + exit 0 fi if [ "$HANDLING" = "2" ]; then diff -urNp rc-scripts-0.4.13.orig/lib/ifup-bond rc-scripts-0.4.13/lib/ifup-bond --- rc-scripts-0.4.13.orig/lib/ifup-bond 1970-01-01 00:00:00.000000000 +0000 +++ rc-scripts-0.4.13/lib/ifup-bond 2015-02-06 13:42:15.349314244 +0000 @@ -0,0 +1,75 @@ +#!/bin/sh +# +# ifup-bond - bonding configuration script +# Copyright (C) 2014 Marcin Krol +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# +PATH=/sbin:/usr/sbin:/bin:/usr/bin + +. /etc/sysconfig/network +. /etc/rc.d/init.d/functions +. /lib/rc-scripts/functions.network + +CONFIG=$1 +source_config + +if [ "x${2}" = "xboot" ] && is_no "${ONBOOT}"; then + exit +fi + +# check for bonding support +if [ ! -f /sys/class/net/bonding_masters ]; then + modprobe -s bonding || exit 1 + # delete default bond0 + echo "-bond0" > /sys/class/net/bonding_masters +fi + +# set all major variables +setup_ip_param + +# create bonding master +if ! grep -wq "${DEVICE}" /sys/class/net/bonding_masters; then + echo "+${DEVICE}" > /sys/class/net/bonding_masters + if [ $? -eq 0 ]; then + ip link set dev ${DEVICE} multicast ${MULTICAST} ${ARP} + else + exit 1 + fi +fi + +# add the bits to setup driver parameters here +# taken from Fedora initscripts +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 diff -urNp rc-scripts-0.4.13.orig/lib/Makefile.am rc-scripts-0.4.13/lib/Makefile.am --- rc-scripts-0.4.13.orig/lib/Makefile.am 2013-11-02 20:50:20.000000000 +0000 +++ rc-scripts-0.4.13/lib/Makefile.am 2015-02-06 13:42:15.349314244 +0000 @@ -10,6 +10,7 @@ sbin_SCRIPTS = \ scriptsdir = @exec_prefix@/lib/$(PACKAGE) scripts_SCRIPTS = \ + ifdown-bond \ ifdown-br \ ifdown-irda \ ifdown-ppp \ @@ -17,6 +18,7 @@ scripts_SCRIPTS = \ ifdown-sl \ ifdown-vlan \ ifup-aliases \ + ifup-bond \ ifup-br \ ifup-ipx \ ifup-irda \ diff -urNp rc-scripts-0.4.13.orig/lib/Makefile.in rc-scripts-0.4.13/lib/Makefile.in --- rc-scripts-0.4.13.orig/lib/Makefile.in 2015-01-22 16:02:57.000000000 +0000 +++ rc-scripts-0.4.13/lib/Makefile.in 2015-02-06 13:42:15.350314244 +0000 @@ -256,6 +256,7 @@ sbin_SCRIPTS = \ #scriptsdir = @networkscriptsdir@ scriptsdir = @exec_prefix@/lib/$(PACKAGE) scripts_SCRIPTS = \ + ifdown-bond \ ifdown-br \ ifdown-irda \ ifdown-ppp \ @@ -263,6 +264,7 @@ scripts_SCRIPTS = \ ifdown-sl \ ifdown-vlan \ ifup-aliases \ + ifup-bond \ ifup-br \ ifup-ipx \ ifup-irda \