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 echo "-bond0" > /sys/class/net/bonding_masters
41 # set all major variables
44 # create bonding master
45 if ! grep -wq "${DEVICE}" /sys/class/net/bonding_masters; then
46 echo "+${DEVICE}" > /sys/class/net/bonding_masters
48 ip link set dev ${DEVICE} multicast ${MULTICAST} ${ARP}
54 # add the bits to setup driver parameters here
55 # taken from Fedora initscripts
56 for arg in ${BONDING_OPTS} ; do
59 if [ "${key}" = "arp_ip_target" -a "${value:0:1}" != "+" ]; then
62 for arp_ip in $value; do
63 if ! grep -q $arp_ip /sys/class/net/${DEVICE}/bonding/$key; then
64 echo +$arp_ip > /sys/class/net/${DEVICE}/bonding/$key
68 elif [ "${key}" = "arp_ip_target" ]; then
69 if ! grep -q ${value#+} /sys/class/net/${DEVICE}/bonding/$key; then
70 echo "$value" > /sys/class/net/${DEVICE}/bonding/$key
72 elif [ "${key}" != "primary" ]; then
73 echo $value > /sys/class/net/${DEVICE}/bonding/$key