#!/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 exec /usr/sbin/usernetctl $CONFIG up fi echo "Users cannot control this device." >&2 exit 1 fi source_config if [ "foo$2" = "fooboot" -a "${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 "unknown interface" > /dev/null if [ "$?" = "0" ]; then echo "Delaying ${DEVICE} initialization." exit 0 fi if [ "$SLAVE" = yes -a "$ISALIAS" = no -a "$MASTER" != "" -a \ -x /sbin/ifenslave ]; then RFLAG="" ; [ "$RECIEVE-ONLY" = yes ] && RFLAG="-r" ifconfig ${DEVICE} down echo "Enslaving $DEVICE to $MASTER" ifenslave $RFLAG "$DEVICE" "$MASTER" exit 0 fi if [ -n "$MACADDR" ]; then ifconfig ${DEVICE} hw ether ${MACADDR} fi if [ -n "$PUMP" ]; then echo -n "Determing IP information for $DEVICE..." if /sbin/pump -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} # 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 ] && grep -q "2.0" /proc/version || [ -z "`route -n | sed "s/ .*//" | grep ${NETWORK}`" ]; then route add -net ${NETWORK} netmask ${NETMASK} ${DEVICE} else route add -host ${IPADDR} ${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 [ "${GATEWAY}" != "" ]; then if [ "${GATEWAYDEV}" = "" -o "${GATEWAYDEV}" = "${DEVICE}" ]; then # set up default gateway route add default gw ${GATEWAY} ${DEVICE} DEFGW=${GATEWAY} fi fi if [ "$BOOTPROTO" = bootp -a "$ISALIAS" = no ]; then if [ -n "$GATEWAYS" ]; then for gw in $GATEWAYS; do if [ $gw != "${DEFGW}" ]; then route add default gw $gw ${DEVICE} fi done fi if [ -n "$DNSSRVS" -a -n "$SEARCH" ]; then echo "search $SEARCH" > /etc/resolv.conf for dns in $DNSSRVS; do echo "nameserver $dns" >> /etc/resolv.conf done fi if [ -n "$BOOTPHOSTNAME" -a -n "$NEEDHOSTNAME" ]; then set_hostname $BOOTPHOSTNAME fi fi fi if [ "$IPX" = yes ]; then /etc/sysconfig/network-scripts/ifup-ipx $DEVICE fi exec /etc/sysconfig/network-scripts/ifup-post $CONFIG