aboutsummaryrefslogtreecommitdiffstats
path: root/sysconfig/network-scripts/ifup
diff options
context:
space:
mode:
Diffstat (limited to 'sysconfig/network-scripts/ifup')
-rwxr-xr-xsysconfig/network-scripts/ifup30
1 files changed, 27 insertions, 3 deletions
diff --git a/sysconfig/network-scripts/ifup b/sysconfig/network-scripts/ifup
index e5d0d65f..2cb24bb0 100755
--- a/sysconfig/network-scripts/ifup
+++ b/sysconfig/network-scripts/ifup
@@ -203,7 +203,7 @@ if [ "${SLAVE}" = yes -a "${ISALIAS}" = no -a "${MASTER}" != "" -a \
/sbin/ip link set dev ${DEVICE} down
echo $"Enslaving ${DEVICE} to ${MASTER}"
- ifenslave ${RFLAG} "${MASTER}" "${DEVICE}"
+ ifenslave ${RFLAG} "${MASTER}" "${DEVICE}" >/dev/null 2>&1
if [ -n "$ETHTOOL_OPTS" ] ; then
/sbin/ethtool -s ${REALDEVICE} $ETHTOOL_OPTS
@@ -212,11 +212,18 @@ if [ "${SLAVE}" = yes -a "${ISALIAS}" = no -a "${MASTER}" != "" -a \
exit 0
fi
-# master device?
+# Bonding initialization. For DHCP, we need to enslave the devices early,
+# so it can actually get an IP.
if [ "${TYPE}" = "Bonding" ] || ethtool -i $DEVICE 2>/dev/null| grep -q "driver: bonding" ; then
/sbin/ip link set dev ${DEVICE} up
for device in `fgrep -l "MASTER=${DEVICE}" /etc/sysconfig/network-scripts/ifcfg-*` ; do
- /sbin/ifup ${device##*/}
+ if [ "$BOOTPROTO" = "dhcp" ]; then
+ DEV=$DEVICE
+ eval $(LANG=C fgrep "DEVICE=" $device)
+ ifenslave -d $DEV $DEVICE >/dev/null 2>&1
+ DEVICE=$DEV
+ /sbin/ifup ${device##*/}
+ fi
done
fi
@@ -384,6 +391,23 @@ else
fi
+# Bonding initialization part II - for static, enslave the devices. For
+# DHCP, remove any routes for the slaves.
+if [ "${TYPE}" = "Bonding" ] || ethtool -i $DEVICE 2>/dev/null| grep -q "driver: bonding" ; then
+ #/sbin/ip link set dev ${DEVICE} up
+ for device in `fgrep -l "MASTER=${DEVICE}" /etc/sysconfig/network-scripts/ifcfg-*` ; do
+ if [ "$BOOTPROTO" != "dhcp" ]; then
+ /sbin/ifup ${device##*/}
+ else
+ DEV=$DEVICE
+ eval $(LANG=C fgrep "DEVICE=" $device)
+ ip link set ${DEVICE} up
+ ip route flush dev ${DEVICE}
+ DEVICE=$DEV
+ fi
+ done
+fi
+
# Add Zeroconf route.
if [ -z "${NOZEROCONF}" -a "${ISALIAS}" = "no" ]; then
ip route replace 169.254.0.0/16 dev ${REALDEVICE}