#
PATH=/sbin:/usr/sbin:/bin:/usr/bin
+run_pre_up() { :; }
+
. /etc/sysconfig/network
. /etc/rc.d/init.d/functions
. /lib/rc-scripts/functions.network
SYSCTLDEVICE=$(echo ${DEVICE} | sed 's/\./\//g')
+# anything you need done first
+run_pre_up
+
OTHERSCRIPT="/lib/rc-scripts/ifup-${DEVICETYPE}"
if [ -x "$OTHERSCRIPT" ]; then
if [ -n "$MACVLAN_DEV" -a -n "$MACVLAN_MACADDR" ]; then
ip link del link ${MACVLAN_DEV} ${DEVICE} type macvlan > /dev/null 2>&1
- ip link add link ${MACVLAN_DEV} address ${MACVLAN_MACADDR} name ${DEVICE} type macvlan
+ ip link add link ${MACVLAN_DEV} address ${MACVLAN_MACADDR} name ${DEVICE} type macvlan ${MACVLAN_MODE:+mode $MACVLAN_MODE}
fi
# is this device available? (this catches PCMCIA devices for us)
fi
if is_yes "$SLAVE" && [ -n "$MASTER" ] ; then
- if ! grep -wq "${DEVICE}" /sys/class/net/${MASTER}/bonding/slaves 2>/dev/null; then
- nls "Enslaving %s to %s" "$DEVICE" "$MASTER"
- ip link set dev ${DEVICE} down
- echo "+${DEVICE}" > /sys/class/net/${MASTER}/bonding/slaves 2>/dev/null
- fi
+ # create master if it doesn't exist yet
+ [ ! -d "/sys/class/net/${MASTER}" ] && ip link add "${MASTER}" type bond
+
+ nls "Enslaving %s to %s" "${DEVICE}" "${MASTER}"
+ ip link set "${DEVICE}" master "${MASTER}"
+ ip link set "${DEVICE}" up
+
exit 0
fi
fi
DHCP_ARGS="$DHCP_OPTIONS $DHCP_ARGS"
- if check_link_down ${DEVICE}; then
+ [ -z "$CHECK_LINK_WAIT_TIMEOUT" ] && CHECK_LINK_WAIT_TIMEOUT=5
+ if check_link_down ${DEVICE} $(( $CHECK_LINK_WAIT_TIMEOUT * 2 )); then
run_cmd "$(nls 'Determining IP information for %s (%s)' "$DEVICE" "${DHCP_CLIENT##*/}")" /bin/false
nls '%s: Check cable/radio on-off switch?' "$DEVICE"
exit 1
# IPv6 in use ?
if is_yes "$IPV6_NETWORKING" && [ -n "${IP6ADDR}" ]; then
ip addr add ${IP6ADDR} dev ${DEVICE} ${IP6ADDROPT}
+ timeout=0
+ while [ $timeout -le 20 ] && \
+ if_state="`ip -o addr list dev ${DEVICE} to ${IP6ADDR}`" && \
+ echo "$if_state" | grep -q tentative && \
+ ! echo "$if_state" | grep -q dadfailed ; do
+ usleep 500000
+ timeout=$((timeout+1))
+ done
+ if ip -o addr list dev ${DEVICE} to ${IP6ADDR} | grep -q dadfailed ; then
+ ip addr del ${IP6ADDR} dev ${DEVICE}
+ nls '%s: Duplicated address detected: %s' "$DEVICE" "$IP6ADDR"
+ exit 1
+ fi
if [ -n "${IP6ADDRLABEL}" ]; then
ip addrlabel add prefix ${IP6ADDR} dev ${DEVICE} label ${IP6ADDRLABEL}
fi