#!/bin/sh

UDHCPC="udhcpc"
UDHCPC_PID_FILE="/var/run/udhcpc.pid"
PIDFILE_CONNECT="/var/run/udhcpc.pid.connect"
DEMAND_FILE="/var/run/udhcpc.demand"
UDHCPC_DEFAULT_SCRIPT="/usr/bin/default.script"
ETH=`rdcsman 0x8000F231 str`
LANIF=`rdcsman 0x8000F201 str`
CNTTYPE=`rdcsman 0x0003500a u16`
WANTYPE=`rdcsman 0x00010003 u16`
HOSTNAME=`rdcsman 0x00035002 str`
CNTFORCE=`rdcsman 0x8001000e u8`

udhcpc_status()
{
	TIME=0
	TIMEOUT=10
	while [ true ] ; do	
		sl_get_IP_NM_GW_in_ifconfig $ETH IF_IP IF_NM IF_GW
		#echo "$0 : IF_IP=$IF_IP IF_NM=$IF_NM IF_GW=$IF_GW"	
		if [ "${IF_IP}x" != "x" -a "${IF_NM}x" != "x" -a "${IF_GW}x" != "x" ] ; then	
			return 0		
		else			
			sleep 1
			TIME=$((TIME+1))
			if [ $TIME -gt $TIMEOUT ] ; then
				return 1	
			fi			
		fi
	done		
}


udhcpc_start()
{
	if [ $CNTFORCE -eq 1 ] ; then
		$UDHCPC -n -i $ETH -p $UDHCPC_PID_FILE -s $UDHCPC_DEFAULT_SCRIPT --hostname="$HOSTNAME"
		wrcsman "0x8001000e 0x00"
	elif [ $CNTTYPE = 0 -a $WANTYPE = 0 ] ; then
		#udhcpc-connect &
		$UDHCPC -n -d -l $LANIF -i $ETH -p $UDHCPC_PID_FILE -s $UDHCPC_DEFAULT_SCRIPT --hostname="$HOSTNAME"
	else
		$UDHCPC -n -i $ETH -p $UDHCPC_PID_FILE -s $UDHCPC_DEFAULT_SCRIPT --hostname="$HOSTNAME"
	fi

	return $?
}


udhcpc_stop()
{
	[ -f "$DEMAND_FILE" ] && rm -f $DEMAND_FILE
		
	if [ -f "$PIDFILE_CONNECT" ] ; then
		CONNECT_PID=`cat $PIDFILE_CONNECT`
		kill $CONNECT_PID > /dev/null 2>&1
		rm -f $PIDFILE_CONNECT > /dev/null 2>&1	
	fi		
			
	if [ -f "$UDHCPC_PID_FILE" -a -r "$UDHCPC_PID_FILE" ] ; then 
		UDHCPC_PID=`cat $UDHCPC_PID_FILE`
		rm -f $UDHCPC_PID_FILE
		kill $UDHCPC_PID > /dev/null 2>&1 || exit 1
	fi
			
	ifconfig $ETH 0.0.0.0 				 		
	wrcsman "0x80035007 0x00 && \
		   	 0x80010007 0x00" 				 		
	return 0
}

# main ##########################################################

. /usr/bin/scriptlib

case "$1" in

	start)
		udhcpc_start		
		if [ $? = 1 ] ; then
			ifconfig $ETH 0.0.0.0 
			exit 1
		fi	
		exit 0	
		;;
	
	stop)
		udhcpc_stop
		;;
	
	release)
		if [ -f "$UDHCPC_PID_FILE" -a -r "$UDHCPC_PID_FILE" ] ; then 
			UDHCPC_PID=`cat $UDHCPC_PID_FILE`
			kill -USR2 $UDHCPC_PID			
		fi		
		exit 0		
		;;
	
	renew)
		if [ $CNTTYPE = 0 ] ; then
			udhcpc_stop
			udhcpc_start
		elif [ -f "$UDHCPC_PID_FILE" -a -r "$UDHCPC_PID_FILE" ] ; then 
			UDHCPC_PID=`cat $UDHCPC_PID_FILE`
			kill -USR1 $UDHCPC_PID
			udhcpc_status			 			 
		else
			$UDHCPC -n -i $ETH -p $UDHCPC_PID_FILE -s $UDHCPC_DEFAULT_SCRIPT --hostname="$HOSTNAME"

		fi
		
		if [ $? = 1 ] ; then
			wrcsman "0x80035007 0x00 && \
			   		 0x80010007 0x00"
			exit 1
		fi			
		exit 0									
		;;
	
		
	*)
		exit 1
		;;
esac

exit 0		
			
