aboutsummaryrefslogtreecommitdiffstats
path: root/sysconfig/network-scripts/ifup-eth
diff options
context:
space:
mode:
Diffstat (limited to 'sysconfig/network-scripts/ifup-eth')
-rwxr-xr-xsysconfig/network-scripts/ifup-eth295
1 files changed, 147 insertions, 148 deletions
diff --git a/sysconfig/network-scripts/ifup-eth b/sysconfig/network-scripts/ifup-eth
index 5b71374e..eda3c457 100755
--- a/sysconfig/network-scripts/ifup-eth
+++ b/sysconfig/network-scripts/ifup-eth
@@ -40,49 +40,49 @@ is_available ${REALDEVICE}
if [ -n "${HWADDR}" ]; then
FOUNDMACADDR=$(get_hwaddr ${REALDEVICE})
if [ "${FOUNDMACADDR}" != "${HWADDR}" -a "${FOUNDMACADDR}" != "${MACADDR}" ]; then
- net_log $"Device ${DEVICE} has different MAC address than expected, ignoring."
- exit 1
+ net_log $"Device ${DEVICE} has different MAC address than expected, ignoring."
+ exit 1
fi
fi
# If the device is a bridge, create it with brctl, if available.
if [ "${TYPE}" = "Bridge" ]; then
- if [ ! -x /usr/sbin/brctl ]; then
- net_log $"Bridge support not available: brctl not found"
- exit 1
- fi
- if [ ! -d /sys/class/net/${DEVICE}/bridge ]; then
- /usr/sbin/brctl addbr -- ${DEVICE} || exit 1
- fi
- [ -n "${DELAY}" ] && /usr/sbin/brctl setfd -- ${DEVICE} ${DELAY}
- [ -n "${STP}" ] && /usr/sbin/brctl stp -- ${DEVICE} ${STP}
- [ -n "${PRIO}" ] && /usr/sbin/brctl setbridgeprio ${DEVICE} ${PRIO}
- [ -n "${AGEING}" ] && /usr/sbin/brctl setageing ${DEVICE} ${AGEING}
- # add the bits to setup driver parameters here
- for arg in $BRIDGING_OPTS ; do
- key=${arg%%=*};
- value=${arg##*=};
- if [ "${key}" != "multicast_router" -a "${key}" != "hash_max" -a "${key}" != "multicast_snooping" ]; then
- echo $value > /sys/class/net/${DEVICE}/bridge/$key
- fi
- done
- # set LINKDELAY (used as timeout when calling check_link_down())
- # to at least (${DELAY} * 2) + 7 if STP is enabled. This is the
- # minimum time required for /sys/class/net/$REALDEVICE/carrier to
- # become 1 after "ip link set dev $DEVICE up" is called.
- if [ "${STP}" = "yes" -o "${STP}" = "on" ]; then
- TMPD=7
- [ -n "${DELAY}" ] && TMPD=$(expr ${DELAY} \* 2 + ${TMPD})
- [ 0$LINKDELAY -lt $TMPD ] && LINKDELAY=$TMPD
- fi
+ if [ ! -x /usr/sbin/brctl ]; then
+ net_log $"Bridge support not available: brctl not found"
+ exit 1
+ fi
+ if [ ! -d /sys/class/net/${DEVICE}/bridge ]; then
+ /usr/sbin/brctl addbr -- ${DEVICE} || exit 1
+ fi
+ [ -n "${DELAY}" ] && /usr/sbin/brctl setfd -- ${DEVICE} ${DELAY}
+ [ -n "${STP}" ] && /usr/sbin/brctl stp -- ${DEVICE} ${STP}
+ [ -n "${PRIO}" ] && /usr/sbin/brctl setbridgeprio ${DEVICE} ${PRIO}
+ [ -n "${AGEING}" ] && /usr/sbin/brctl setageing ${DEVICE} ${AGEING}
+ # add the bits to setup driver parameters here
+ for arg in $BRIDGING_OPTS ; do
+ key=${arg%%=*};
+ value=${arg##*=};
+ if [ "${key}" != "multicast_router" -a "${key}" != "hash_max" -a "${key}" != "multicast_snooping" ]; then
+ echo $value > /sys/class/net/${DEVICE}/bridge/$key
+ fi
+ done
+ # set LINKDELAY (used as timeout when calling check_link_down())
+ # to at least (${DELAY} * 2) + 7 if STP is enabled. This is the
+ # minimum time required for /sys/class/net/$REALDEVICE/carrier to
+ # become 1 after "ip link set dev $DEVICE up" is called.
+ if [ "${STP}" = "yes" -o "${STP}" = "on" ]; then
+ TMPD=7
+ [ -n "${DELAY}" ] && TMPD=$(expr ${DELAY} \* 2 + ${TMPD})
+ [ 0$LINKDELAY -lt $TMPD ] && LINKDELAY=$TMPD
+ fi
fi
# Create tap device.
if [ "${TYPE}" = "Tap" ]; then
- [ -n "${OWNER}" ] && OWNER="user ${OWNER}"
- TUNMODE="mode tap"
- [[ ${DEVICE} == tun* ]] && TUNMODE="mode tun"
- ip tuntap add ${TUNMODE} ${OWNER} dev ${DEVICE} > /dev/null
+ [ -n "${OWNER}" ] && OWNER="user ${OWNER}"
+ TUNMODE="mode tap"
+ [[ ${DEVICE} == tun* ]] && TUNMODE="mode tun"
+ ip tuntap add ${TUNMODE} ${OWNER} dev ${DEVICE} > /dev/null
fi
# Team master initialization.
@@ -92,12 +92,12 @@ fi
# now check the real state
is_available_wait ${REALDEVICE} ${DEVTIMEOUT} || {
- if [ -n "$alias" ]; then
- net_log $"$alias device ${DEVICE} does not seem to be present, delaying initialization."
- else
- net_log $"Device ${DEVICE} does not seem to be present, delaying initialization."
- fi
- exit 1
+ if [ -n "$alias" ]; then
+ net_log $"$alias device ${DEVICE} does not seem to be present, delaying initialization."
+ else
+ net_log $"Device ${DEVICE} does not seem to be present, delaying initialization."
+ fi
+ exit 1
}
@@ -105,10 +105,10 @@ is_available_wait ${REALDEVICE} ${DEVTIMEOUT} || {
# available as a configuration option in the config file, forcing the kernel
# to think an ethernet card has a different MAC address than it really has.
if [ -n "${MACADDR}" ]; then
- ip link set dev ${DEVICE} address ${MACADDR}
+ ip link set dev ${DEVICE} address ${MACADDR}
fi
if [ -n "${MTU}" ]; then
- ip link set dev ${DEVICE} mtu ${MTU}
+ ip link set dev ${DEVICE} mtu ${MTU}
fi
# is the device wireless? If so, configure wireless device specifics
@@ -125,8 +125,8 @@ fi
if [ "${SLAVE}" = yes -a "${ISALIAS}" = no -a "${MASTER}" != "" ]; then
install_bonding_driver ${MASTER}
grep -wq "${DEVICE}" /sys/class/net/${MASTER}/bonding/slaves 2>/dev/null || {
- /sbin/ip link set dev ${DEVICE} down
- echo "+${DEVICE}" > /sys/class/net/${MASTER}/bonding/slaves 2>/dev/null
+ /sbin/ip link set dev ${DEVICE} down
+ echo "+${DEVICE}" > /sys/class/net/${MASTER}/bonding/slaves 2>/dev/null
}
ethtool_set
@@ -139,8 +139,8 @@ if [ "$ISALIAS" = no ] && is_bonding_device ${DEVICE} ; then
install_bonding_driver ${DEVICE}
/sbin/ip link set dev ${DEVICE} up
for device in $(LANG=C grep -l "^[[:space:]]*MASTER=['\"]\?${DEVICE}['\"]\?\([[:space:]#]\|$\)" /etc/sysconfig/network-scripts/ifcfg-*) ; do
- is_ignored_file "$device" && continue
- /sbin/ifup ${device##*/} || net_log "Unable to start slave device ${device##*/} for master ${DEVICE}." warning
+ is_ignored_file "$device" && continue
+ /sbin/ifup ${device##*/} || net_log "Unable to start slave device ${device##*/} for master ${DEVICE}." warning
done
[ -n "${LINKDELAY}" ] && /bin/sleep ${LINKDELAY}
@@ -149,39 +149,39 @@ if [ "$ISALIAS" = no ] && is_bonding_device ${DEVICE} ; then
for arg in $BONDING_OPTS ; do
key=${arg%%=*};
value=${arg##*=};
- if [ "${key}" = "primary" ]; then
+ if [ "${key}" = "primary" ]; then
echo $value > /sys/class/net/${DEVICE}/bonding/$key
- fi
+ fi
done
fi
# If the device is part of a bridge, add the device to the bridge
if [ -n "${BRIDGE}" ] && [ -x /usr/sbin/brctl ]; then
- if [ ! -d /sys/class/net/${BRIDGE}/bridge ]; then
- /usr/sbin/brctl addbr -- ${BRIDGE} 2>/dev/null
- fi
- /sbin/ip addr flush dev ${DEVICE} 2>/dev/null
- /sbin/ip link set dev ${DEVICE} up
- ethtool_set
- [ -n "${LINKDELAY}" ] && /bin/sleep ${LINKDELAY}
- /usr/sbin/brctl addif -- ${BRIDGE} ${DEVICE}
- # add the bits to setup driver parameters here
- for arg in $BRIDGING_OPTS ; do
- key=${arg%%=*};
- value=${arg##*=};
- echo $value > /sys/class/net/${DEVICE}/brport/$key
- done
- # Upon adding a device to a bridge,
- # it's necessary to make radvd reload its config
- [ -r /var/run/radvd/radvd.pid ] && kill -HUP $(cat /var/run/radvd/radvd.pid)
- exit 0
+ if [ ! -d /sys/class/net/${BRIDGE}/bridge ]; then
+ /usr/sbin/brctl addbr -- ${BRIDGE} 2>/dev/null
+ fi
+ /sbin/ip addr flush dev ${DEVICE} 2>/dev/null
+ /sbin/ip link set dev ${DEVICE} up
+ ethtool_set
+ [ -n "${LINKDELAY}" ] && /bin/sleep ${LINKDELAY}
+ /usr/sbin/brctl addif -- ${BRIDGE} ${DEVICE}
+ # add the bits to setup driver parameters here
+ for arg in $BRIDGING_OPTS ; do
+ key=${arg%%=*};
+ value=${arg##*=};
+ echo $value > /sys/class/net/${DEVICE}/brport/$key
+ done
+ # Upon adding a device to a bridge,
+ # it's necessary to make radvd reload its config
+ [ -r /var/run/radvd/radvd.pid ] && kill -HUP $(cat /var/run/radvd/radvd.pid)
+ exit 0
fi
-
+
if [ -n "${DYNCONFIG}" ] && [ -x /sbin/dhclient ]; then
if [[ "${PERSISTENT_DHCLIENT}" = [yY1]* ]]; then
- ONESHOT="";
+ ONESHOT="";
else
- ONESHOT="-1";
+ ONESHOT="-1";
fi;
generate_config_file_name
generate_lease_file_name
@@ -189,110 +189,110 @@ if [ -n "${DYNCONFIG}" ] && [ -x /sbin/dhclient ]; then
echo
echo -n $"Determining IP information for ${DEVICE}..."
if [[ "${PERSISTENT_DHCLIENT}" != [yY1]* ]] && check_link_down ${DEVICE}; then
- echo $" failed; no link present. Check cable?"
- exit 1
+ echo $" failed; no link present. Check cable?"
+ exit 1
fi
ethtool_set
if /sbin/dhclient ${DHCLIENTARGS} ${DEVICE} ; then
- echo $" done."
- dhcpipv4="good"
+ echo $" done."
+ dhcpipv4="good"
else
- echo $" failed."
- if [[ "${IPV4_FAILURE_FATAL}" = [Yy1]* ]] ; then
- exit 1
- fi
- if [[ "$IPV6INIT" = [nN0]* || "$DHCPV6C" != [yY1]* ]] ; then
- exit 1
- fi
- net_log "Unable to obtain IPv4 DHCP address ${DEVICE}." warning
+ echo $" failed."
+ if [[ "${IPV4_FAILURE_FATAL}" = [Yy1]* ]] ; then
+ exit 1
+ fi
+ if [[ "$IPV6INIT" = [nN0]* || "$DHCPV6C" != [yY1]* ]] ; then
+ exit 1
+ fi
+ net_log "Unable to obtain IPv4 DHCP address ${DEVICE}." warning
fi
-# end dynamic device configuration
+ # end dynamic device configuration
else
if [ -z "${IPADDR}" -a -z "${IPADDR0}" -a -z "${IPADDR1}" -a -z "${IPADDR2}" ]; then
- # enable device without IP, useful for e.g. PPPoE
- ip link set dev ${REALDEVICE} up
- ethtool_set
- [ -n "${LINKDELAY}" ] && /bin/sleep ${LINKDELAY}
+ # enable device without IP, useful for e.g. PPPoE
+ ip link set dev ${REALDEVICE} up
+ ethtool_set
+ [ -n "${LINKDELAY}" ] && /bin/sleep ${LINKDELAY}
else
-
- expand_config
-
- [ -n "${ARP}" ] && \
- ip link set dev ${REALDEVICE} $(toggle_value arp $ARP)
-
- if ! ip link set dev ${REALDEVICE} up ; then
- net_log $"Failed to bring up ${DEVICE}."
- exit 1
- fi
- ethtool_set
+ expand_config
- [ -n "${LINKDELAY}" ] && /bin/sleep ${LINKDELAY}
+ [ -n "${ARP}" ] && \
+ ip link set dev ${REALDEVICE} $(toggle_value arp $ARP)
- if [ "${DEVICE}" = "lo" ]; then
- SCOPE="scope host"
- else
- SCOPE=${SCOPE:-}
- fi
-
- if [ -n "$SRCADDR" ]; then
- SRC="src $SRCADDR"
- else
- SRC=
- fi
-
- # set IP address(es)
- for idx in {0..256} ; do
- if [ -z "${ipaddr[$idx]}" ]; then
- break
+ if ! ip link set dev ${REALDEVICE} up ; then
+ net_log $"Failed to bring up ${DEVICE}."
+ exit 1
fi
- if ! LC_ALL=C ip addr ls ${REALDEVICE} | LC_ALL=C grep -q "${ipaddr[$idx]}/${prefix[$idx]}" ; then
- if [ "${REALDEVICE}" != "lo" ] && [ "${arpcheck[$idx]}" != "no" ] ; then
+ ethtool_set
+
+ [ -n "${LINKDELAY}" ] && /bin/sleep ${LINKDELAY}
+
+ if [ "${DEVICE}" = "lo" ]; then
+ SCOPE="scope host"
+ else
+ SCOPE=${SCOPE:-}
+ fi
+
+ if [ -n "$SRCADDR" ]; then
+ SRC="src $SRCADDR"
+ else
+ SRC=
+ fi
+
+ # set IP address(es)
+ for idx in {0..256} ; do
+ if [ -z "${ipaddr[$idx]}" ]; then
+ break
+ fi
+
+ if ! LC_ALL=C ip addr ls ${REALDEVICE} | LC_ALL=C grep -q "${ipaddr[$idx]}/${prefix[$idx]}" ; then
+ if [ "${REALDEVICE}" != "lo" ] && [ "${arpcheck[$idx]}" != "no" ] ; then
/sbin/arping -q -c 2 -w ${ARPING_WAIT:-3} -D -I ${REALDEVICE} ${ipaddr[$idx]}
if [ $? = 1 ]; then
net_log $"Error, some other host already uses address ${ipaddr[$idx]}."
exit 1
fi
+ fi
+
+ if ! ip addr add ${ipaddr[$idx]}/${prefix[$idx]} \
+ brd ${broadcast[$idx]:-+} dev ${REALDEVICE} ${SCOPE} label ${DEVICE}; then
+ net_log $"Error adding address ${ipaddr[$idx]} for ${DEVICE}."
+ fi
fi
- if ! ip addr add ${ipaddr[$idx]}/${prefix[$idx]} \
- brd ${broadcast[$idx]:-+} dev ${REALDEVICE} ${SCOPE} label ${DEVICE}; then
- net_log $"Error adding address ${ipaddr[$idx]} for ${DEVICE}."
+ if [ -n "$SRCADDR" ]; then
+ sysctl -w "net.ipv4.conf.${SYSCTLDEVICE}.arp_filter=1" >/dev/null 2>&1
fi
- fi
- if [ -n "$SRCADDR" ]; then
- sysctl -w "net.ipv4.conf.${SYSCTLDEVICE}.arp_filter=1" >/dev/null 2>&1
- fi
+ # update ARP cache of neighboring computers
+ if [ "${REALDEVICE}" != "lo" ]; then
+ /sbin/arping -q -A -c 1 -I ${REALDEVICE} ${ipaddr[$idx]}
+ ( sleep 2;
+ /sbin/arping -q -U -c 1 -I ${REALDEVICE} ${ipaddr[$idx]} ) > /dev/null 2>&1 < /dev/null &
+ fi
- # update ARP cache of neighboring computers
- if [ "${REALDEVICE}" != "lo" ]; then
- /sbin/arping -q -A -c 1 -I ${REALDEVICE} ${ipaddr[$idx]}
- ( sleep 2;
- /sbin/arping -q -U -c 1 -I ${REALDEVICE} ${ipaddr[$idx]} ) > /dev/null 2>&1 < /dev/null &
+ # set lifetime of address to forever
+ ip addr change ${ipaddr[$idx]}/${prefix[$idx]} dev ${REALDEVICE} valid_lft forever preferred_lft forever
+ done
+
+ # Set a default route.
+ if [ "${DEFROUTE}" != "no" ] && [ -z "${GATEWAYDEV}" -o "${GATEWAYDEV}" = "${REALDEVICE}" ]; then
+ # set up default gateway. replace if one already exists
+ if [ -n "${GATEWAY}" ] && [ "$(ipcalc --network ${GATEWAY} ${netmask[0]} 2>/dev/null)" = "NETWORK=${NETWORK}" ]; then
+ ip route replace default ${METRIC:+metric $METRIC} \
+ via ${GATEWAY} ${WINDOW:+window $WINDOW} ${SRC} \
+ ${GATEWAYDEV:+dev $GATEWAYDEV} ||
+ net_log $"Error adding default gateway ${GATEWAY} for ${DEVICE}."
+ elif [ "${GATEWAYDEV}" = "${DEVICE}" ]; then
+ ip route replace default ${METRIC:+metric $METRIC} \
+ ${SRC} ${WINDOW:+window $WINDOW} dev ${REALDEVICE} ||
+ net_log $"Error adding default gateway for ${REALDEVICE}."
+ fi
fi
-
- # set lifetime of address to forever
- ip addr change ${ipaddr[$idx]}/${prefix[$idx]} dev ${REALDEVICE} valid_lft forever preferred_lft forever
- done
-
- # Set a default route.
- if [ "${DEFROUTE}" != "no" ] && [ -z "${GATEWAYDEV}" -o "${GATEWAYDEV}" = "${REALDEVICE}" ]; then
- # set up default gateway. replace if one already exists
- if [ -n "${GATEWAY}" ] && [ "$(ipcalc --network ${GATEWAY} ${netmask[0]} 2>/dev/null)" = "NETWORK=${NETWORK}" ]; then
- ip route replace default ${METRIC:+metric $METRIC} \
- via ${GATEWAY} ${WINDOW:+window $WINDOW} ${SRC} \
- ${GATEWAYDEV:+dev $GATEWAYDEV} ||
- net_log $"Error adding default gateway ${GATEWAY} for ${DEVICE}."
- elif [ "${GATEWAYDEV}" = "${DEVICE}" ]; then
- ip route replace default ${METRIC:+metric $METRIC} \
- ${SRC} ${WINDOW:+window $WINDOW} dev ${REALDEVICE} ||
- net_log $"Error adding default gateway for ${REALDEVICE}."
- fi
- fi
fi
fi
@@ -336,4 +336,3 @@ if [[ "${DHCPV6C}" = [Yy1]* ]] && [ -x /sbin/dhclient ]; then
fi
exec /etc/sysconfig/network-scripts/ifup-post ${CONFIG} ${2}
-