#!/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