#!/bin/sh

PATH=/sbin:/bin:/usr/sbin:/usr/bin

. /etc/colorrc

test -f /etc/aldccp/network || exit 0
. /etc/aldccp/network

test ! x$NETWORKING = x"yes" && exit 0


RESOLV_CONF="/etc/resolv.conf"

ERRVAL=0

start_net(){
    if test x$1 = x"dhcp"; then
	if [ ! -f /var/run/network-$2 ] ;then
	    ifconfig $2 0.0.0.0
	    if [ $? = 0 ] ; then
		udhcpc -n -q -t 4 -i $2
		if [ $? != 0 ] ; then
		    ifconfig $2 down
		    ERRVAL=1
		fi
	    fi
	fi
    fi

    if [ x$1 = x"yes" ]; then
	echo -n "start $2 $3 mask=$4 .."
	ifconfig $2 $3 netmask $4 up 2>/dev/null
	if [ $? != 0 ]; then
	  echo -n ".."
	  sleep 1
	  ifconfig $2 $3 netmask $4 up 2>/dev/null
	fi
	if [ $? != 0 ]; then
	  echo -n ".."
	  sleep 1
	  ifconfig $2 $3 netmask $4 up 2>/dev/null
	fi
	if [ $? = 0 ]; then
	  echo "SetTYPE=man" >/var/run/network-$2
	  echo "IPADDR=$3" >>/var/run/network-$2
	  echo "NETMASK=$4" >>/var/run/network-$2
	  echo  $rc_Ok
	else
	  echo ${rcC3}" ERROR >>> network $2 not run"${rcLF}
	  ERRVAL=1
	fi
    fi
}

stop_net(){
    if test -f /var/run/network-$2;then
	ifconfig $2 down 2>/dev/null
	while route del default gw 0.0.0.0 dev $2 2>/dev/null; do
		:
	done
	echo "Shutting down $2"$rc_Ok
    fi
    rm -f /var/run/network-$2
}

start_route(){
    if [ $ERRVAL = 0 ] && [ x$1 = x"yes" ]; then
	if [ x"$3" != x ]; then
	  route del default dev $2 2>/dev/null

	  metric=0
	  for i in $3 ; do
	    echo "GATEWAY$metric=$i" >>/var/run/network-$2
	    echo -n "add route $2 $i"
	    route add default gw $i dev $2 metric $((metric++)) 2>/dev/null

	    if [ $? = 0 ]; then
	      echo  $rc_Ok
	    else
	      echo $rc_Err
	      ERRVAL=1
	      break
	    fi
	  done
	fi
    fi
}

set_resolv(){
    if test x$1 = x"yes" -a $ERRVAL = 0 -a -n "$3"; then
	echo -n > $RESOLV_CONF
	if [ -n "$2" ]; then
	    echo adding domain $2
	    echo search $2 >> $RESOLV_CONF
	fi
	for i in $3; do
	    echo adding dns $i
	    echo nameserver $i >> $RESOLV_CONF
	done
    fi
}


case "$1" in
    start)
	if test -f /var/run/network-$NET0_INTERFACE; then
	  echo "network: is already running $rc_Err"
	else
	  start_net $NET0_START $NET0_INTERFACE $NET0_IPADDR $NET0_NETMASK
	  start_route $NET0_START $NET0_INTERFACE "$NET0_GATEWAY"
	  set_resolv $NET0_START $NET0_DOMAIN "$NET0_RESOLV"
	  sleep 1
	fi
	;;
    stop)
	stop_net $NET0_START $NET0_INTERFACE
        ;;
    *)
	echo "Usage: {start|stop}"
	exit 3
	;;
esac
