#!/bin/sh
PATH=/sbin:/usr/sbin:/bin:/usr/bin

. $1

if [ "foo$2" = "fooboot" -a "${ONBOOT}" = "no" ]
then
	exit
fi

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

if [ -e /etc/sysconfig/pcmcia ]; then
	. /etc/sysconfig/pcmcia
else
	PCMCIA=no
fi

if [ $DEVICETYPE = "eth" -a "foo${ISPCMCIA}" = "foo" ]; then
	# this is a horrible hack to work around prior brokenness 
	if [ "$PCMCIA" = "yes" -a "foo$2" = "fooboot" ]; then
		# cardmgr will start us up properly
		exit 0;
	fi
elif [ "${ISPCMCIA}" = "yes" -a "$2" = "boot" ]; then
	# cardmgr will start us up properly
	exit 0;
fi
	
### end of horrible hack

OTHERSCRIPT="/etc/sysconfig/network-scripts/ifup-${DEVICETYPE}"

if [ -x $OTHERSCRIPT ]; then
	$OTHERSCRIPT $1 $2
	exit $?
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 [ "$BOOTP" = yes -a "$ISALIAS" = no ]; then
	ifconfig ${DEVICE} down
	ifconfig ${DEVICE} 0.0.0.0 broadcast 255.255.255.255 netmask 0.0.0.0
	route add default ${DEVICE}
	echo "Sending bootp request"
	bootpc --returniffail --timeoutwait 6 --dev ${DEVICE} 2>/dev/null > /tmp/bootpc-response-${DEVICE}
	if [ "$?" = "0" ]; then
	    . /tmp/bootpc-response-${DEVICE}
	    BOOTPHOSTNAME="$HOSTNAME"
	    echo "bootp response received -- using IP ${IPADDR}"
	elif [ -z "$IPADDR" ]; then
	    echo "No bootp response recieved -- not configuring device ${DEVICE}."
	    rm -f /tmp/bootpc-response-${DEVICE}
	    exit 1
	else 
	    echo "No bootp response recieved -- using default configuration for device ${DEVICE}."
	fi

	rm -f /tmp/bootpc-response-${DEVICE}
fi

ifconfig ${DEVICE} ${IPADDR} netmask ${NETMASK} broadcast ${BROADCAST}
if [ "$ISALIAS" = no ] ; then
	route add -net ${NETWORK} netmask ${NETMASK} ${DEVICE}
else
	route add -host ${IPADDR} ${DEVICE}
fi

# this is broken! it's only here to keep compatibility with old RH sytstems
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 [ "$BOOTP" = yes -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 -z "`hostname`" ]; then
		hostname $BOOTPHOSTNAME
	fi
fi

/etc/sysconfig/network-scripts/ifup-routes ${DEVICE}

if [ "$ISALIAS" = no ] ; then
	for alias in `ls /etc/sysconfig/network-scripts/${DEVICE}:* 2>/dev/null | \
		      egrep ':[0-9]+$'` ; do
		/etc/sysconfig/network-scripts/ifup $alias
	done
fi

