#!/bin/bash PATH=/sbin:/usr/sbin:/bin:/usr/bin cd /etc/sysconfig/network-scripts . network-functions need_hostname CONFIG=$1 [ -z "$CONFIG" ] && { echo "usage: ifup " >&2 exit 1 } [ -f "$CONFIG" ] || CONFIG=ifcfg-$CONFIG [ -f "$CONFIG" ] || { echo "usage: ifup " >&2 exit 1 } if [ $UID != 0 ]; then if [ -x /usr/sbin/usernetctl ]; then if /usr/sbin/usernetctl $CONFIG report ; then exec /usr/sbin/usernetctl $CONFIG up fi fi echo "Users cannot control this device." >&2 exit 1 fi source_config if [ "foo$2" = "fooboot" -a "${ONBOOT}" = "no" -o "${ONBOOT}" = "NO" ] then exit fi IPSETUP=no DEVICETYPE=`echo $DEVICE | sed "s/[0-9]*$//"` REALDEVICE=`echo $DEVICE | sed 's/:.*//g'` if echo $DEVICE | grep -q ':' ; then ISALIAS=yes else ISALIAS=no fi # Old BOOTP variable if [ "$BOOTP" = "yes" ]; then BOOTPROTO=bootp fi if [ "$BOOTPROTO" = bootp -o "$BOOTPROTO" = dhcp ]; then PUMP=true fi OTHERSCRIPT="/etc/sysconfig/network-scripts/ifup-${DEVICETYPE}" if [ -x $OTHERSCRIPT ]; then exec $OTHERSCRIPT $CONFIG $2 fi # is this device available? (this catches PCMCIA devices for us) /sbin/ifconfig ${REALDEVICE} 2>&1 | grep -s "not found" > /dev/null if [ "$?" = "0" ]; then echo "Delaying ${DEVICE} initialization." exit 1 fi if [ "$SLAVE" = yes -a "$ISALIAS" = no -a "$MASTER" != "" -a \ -x /sbin/ifenslave ]; then RFLAG="" ; [ "$RECEIVE-ONLY" = yes ] && RFLAG="-r" ifconfig ${DEVICE} down echo "Enslaving $DEVICE to $MASTER" ifenslave $RFLAG "$MASTER" "$DEVICE" exit 0 fi if [ -n "$MACADDR" ]; then ifconfig ${DEVICE} hw ether ${MACADDR} fi if [ -n "$PUMP" ]; then PUMPARGS= if [ -n "$DHCP_HOSTNAME" ]; then PUMPARGS="-h $DHCP_HOSTNAME" fi if [ -n "$NEEDHOSTNAME" ]; then PUMPARGS="$PUMPARGS --lookup-hostname" fi echo -n "Determining IP information for $DEVICE..." if /sbin/pump $PUMPARGS -i $DEVICE ; then echo " done." else echo " failed." exit 1 fi else if [ -z "$NETMASK" ]; then eval `/bin/ipcalc --netmask ${IPADDR}` fi if [ -z "$BROADCAST" ]; then eval `/bin/ipcalc --broadcast ${IPADDR} ${NETMASK}` fi if [ -z "$NETWORK" ]; then eval `/bin/ipcalc --network ${IPADDR} ${NETMASK}` fi ifconfig ${DEVICE} ${IPADDR} netmask ${NETMASK} broadcast ${BROADCAST} ${ARP:+arp} ${MTU:+mtu $MTU} # don't re-add subnet route on 2.2 kernels, but add a route # to a non-local subnet. # stupid hack, but it should work if [ "$ISALIAS" = no ] && [ -z "`route -n | sed "s/ .*//" | grep ${NETWORK}`" ]; then route add -net ${NETWORK} netmask ${NETMASK} dev ${DEVICE} fi # this is broken! it's only here for compatibility with old RH systems if [ "${GATEWAY}" != "" -a "${GATEWAY}" != "none" ]; then route add default gw ${GATEWAY} metric 1 ${DEVICE} fi . /etc/sysconfig/network if [ "${GATEWAYDEV}" = "" -o "${GATEWAYDEV}" = "${DEVICE}" ]; then # set up default gateway if [ "${GATEWAY}" != "" ]; then route add default gw ${GATEWAY} ${DEVICE} DEFGW=${GATEWAY} elif [ "${GATEWAYDEV}" = "${DEVICE}" ]; then route add default ${DEVICE} fi fi fi . /etc/sysconfig/network if [ "$IPX" = yes ]; then /etc/sysconfig/network-scripts/ifup-ipx $DEVICE fi exec /etc/sysconfig/network-scripts/ifup-post $CONFIG $2