- ifenslave is deprecated, use sysfs for managing bond interfaces
authorMarcin Krol <hawk@tld-linux.org>
Sat, 12 Jul 2014 22:20:41 +0000 (22:20 +0000)
committerMarcin Krol <hawk@tld-linux.org>
Sat, 12 Jul 2014 22:20:41 +0000 (22:20 +0000)
rc-scripts-net-bond.patch [new file with mode: 0644]

diff --git a/rc-scripts-net-bond.patch b/rc-scripts-net-bond.patch
new file mode 100644 (file)
index 0000000..22b7047
--- /dev/null
@@ -0,0 +1,232 @@
+diff -urN rc-scripts-0.4.12.orig/lib/ifdown rc-scripts-0.4.12/lib/ifdown
+--- rc-scripts-0.4.12.orig/lib/ifdown  2014-06-10 06:55:19.000000000 +0000
++++ rc-scripts-0.4.12/lib/ifdown       2014-07-12 18:44:23.637000000 +0000
+@@ -118,25 +118,6 @@
+       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 [ ${DEVICETYPE} = "bond" ]; then
+-              if [ ! -x /sbin/ifenslave ]; then
+-                      nls "%s is missing. Can't continue." "/sbin/ifenslave"
+-                      exit 1
+-              fi
+-
+-              # get up the bonding device before enslaving
+-              if ! check_device_down "${DEVICE}"; then
+-                      ip link set ${DEVICE} up
+-              fi
+-
+-              for BSVAR in $(awk '/Slave Interface:/{ print $3}' /proc/net/bonding/${DEVICE}); do
+-                      if [ "${BSVAR}" ]; then
+-                              ifenslave -d ${DEVICE} $BSVAR
+-                      fi
+-              done
+-      fi
+-
+       ip link set ${DEVICE} down
+ fi
+diff -urN rc-scripts-0.4.12.orig/lib/ifdown-bond rc-scripts-0.4.12/lib/ifdown-bond
+--- rc-scripts-0.4.12.orig/lib/ifdown-bond     1970-01-01 00:00:00.000000000 +0000
++++ rc-scripts-0.4.12/lib/ifdown-bond  2014-07-12 22:00:34.509000000 +0000
+@@ -0,0 +1,54 @@
++#!/bin/sh
++#
++#    ifdown-bond - bonding configuration script
++#    Copyright (C) 2014 Marcin Krol <hawk@tld-linux.org>
++#
++#    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 -urN rc-scripts-0.4.12.orig/lib/ifup rc-scripts-0.4.12/lib/ifup
+--- rc-scripts-0.4.12.orig/lib/ifup    2014-06-10 06:55:19.000000000 +0000
++++ rc-scripts-0.4.12/lib/ifup 2014-07-12 21:58:42.147000000 +0000
+@@ -89,18 +89,12 @@
+       exit 1
+ fi
+-if is_yes "$SLAVE" && [ ! -x /sbin/ifenslave ]; then
+-      nls "%s is missing. Can't continue." "/sbin/ifenslave"
+-      exit 1
+-fi
+-
+-if is_yes "$SLAVE" && [ -n "$MASTER" -a -x /sbin/ifenslave ]; then
+-      RFLAG="" && is_yes "${RECIEVE-ONLY}" && RFLAG="-r"
+-
+-      ip link set ${DEVICE} down
+-      nls "Enslaving %s to %s" "$DEVICE" "$MASTER"
+-      ifenslave $RFLAG "$MASTER" "$DEVICE"
+-
++if is_yes "$SLAVE" && [ -n "$MASTER" ]; then
++      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
+       if [ -n "$ETHTOOL_OPTS" ] ; then
+               /sbin/ethtool -s $DEVICE $ETHTOOL_OPTS
+       fi
+diff -urN rc-scripts-0.4.12.orig/lib/ifup-bond rc-scripts-0.4.12/lib/ifup-bond
+--- rc-scripts-0.4.12.orig/lib/ifup-bond       1970-01-01 00:00:00.000000000 +0000
++++ rc-scripts-0.4.12/lib/ifup-bond    2014-07-12 22:08:02.953000000 +0000
+@@ -0,0 +1,75 @@
++#!/bin/sh
++#
++#    ifup-bond - bonding configuration script
++#    Copyright (C) 2014 Marcin Krol <hawk@tld-linux.org>
++#
++#    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 -urN rc-scripts-0.4.12.orig/lib/Makefile.am rc-scripts-0.4.12/lib/Makefile.am
+--- rc-scripts-0.4.12.orig/lib/Makefile.am     2013-11-02 20:50:20.000000000 +0000
++++ rc-scripts-0.4.12/lib/Makefile.am  2014-07-12 22:01:57.571000000 +0000
+@@ -10,6 +10,7 @@
+ scriptsdir = @exec_prefix@/lib/$(PACKAGE)
+ scripts_SCRIPTS = \
++      ifdown-bond \
+       ifdown-br \
+       ifdown-irda \
+       ifdown-ppp \
+@@ -17,6 +18,7 @@
+       ifdown-sl \
+       ifdown-vlan \
+       ifup-aliases \
++      ifup-bond \
+       ifup-br \
+       ifup-ipx \
+       ifup-irda \
+diff -urN rc-scripts-0.4.12.orig/lib/Makefile.in rc-scripts-0.4.12/lib/Makefile.in
+--- rc-scripts-0.4.12.orig/lib/Makefile.in     2014-07-12 11:45:17.000000000 +0000
++++ rc-scripts-0.4.12/lib/Makefile.in  2014-07-12 22:01:50.605000000 +0000
+@@ -256,6 +256,7 @@
+ #scriptsdir = @networkscriptsdir@
+ scriptsdir = @exec_prefix@/lib/$(PACKAGE)
+ scripts_SCRIPTS = \
++      ifdown-bond \
+       ifdown-br \
+       ifdown-irda \
+       ifdown-ppp \
+@@ -263,6 +264,7 @@
+       ifdown-sl \
+       ifdown-vlan \
+       ifup-aliases \
++      ifup-bond \
+       ifup-br \
+       ifup-ipx \
+       ifup-irda \