3 # ifup-bond - bonding configuration script
4 # Copyright (C) 2014 Marcin Krol <hawk@tld-linux.org>
6 # This program is free software; you can redistribute it and/or modify
7 # it under the terms of the GNU General Public License as published by
8 # the Free Software Foundation; either version 2 of the License, or
9 # (at your option) any later version.
11 # This program is distributed in the hope that it will be useful,
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 # GNU General Public License for more details.
16 # You should have received a copy of the GNU General Public License
17 # along with this program; if not, write to the Free Software
18 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21 PATH=/sbin:/usr/sbin:/bin:/usr/bin
23 . /etc/sysconfig/network
24 . /etc/rc.d/init.d/functions
25 . /lib/rc-scripts/functions.network
30 if [ "x${2}" = "xboot" ] && is_no "${ONBOOT}"; then
34 # check for bonding support
35 if [ ! -f /sys/class/net/bonding_masters ]; then
36 modprobe -s bonding || exit 1
37 # delete default bond0
38 ip link del bond0 type bond
41 # set all major variables
44 # create bonding master
45 if [ ! -d "/sys/class/net/${DEVICE}" ]; then
46 ip link add "${DEVICE}" type bond
49 # add the bits to setup driver parameters here
50 # taken from Fedora initscripts
51 for arg in ${BONDING_OPTS} ; do
54 if [ "${key}" = "arp_ip_target" -a "${value:0:1}" != "+" ]; then
57 for arp_ip in $value; do
58 if ! grep -q $arp_ip /sys/class/net/${DEVICE}/bonding/$key; then
59 echo +$arp_ip > /sys/class/net/${DEVICE}/bonding/$key
63 elif [ "${key}" = "arp_ip_target" ]; then
64 if ! grep -q ${value#+} /sys/class/net/${DEVICE}/bonding/$key; then
65 echo "$value" > /sys/class/net/${DEVICE}/bonding/$key
67 elif [ "${key}" != "primary" ]; then
68 echo $value > /sys/class/net/${DEVICE}/bonding/$key