#!/bin/sh

UDHCPC="udhcpc"
LANIF=`rdcsman 0x8000F201 str`
BACKUP=`rdcsman 0x801e0700 u32`
FIRST_CNT_STATUS=`rdcsman 0x80010007 u16`


VOIPWAN=$2

if [ -n "$VOIPWAN" ] ;then
	UDHCPC_PID_FILE="/var/run/udhcpcVoIPWAN$VOIPWAN.pid"
	PIDFILE_CONNECT="/var/run/udhcpcVoIPWAN$VOIPWAN.pid.connect"
	DEMAND_FILE="/var/run/udhcpcVoIPWAN$VOIPWAN.demand"
	UDHCPC_DEFAULT_SCRIPT="/usr/bin/default-voipwan.script"

	TMP1=`rdcsman 0x8000F231 str`
	TMP2=`rdcsman 0x0093202$VOIPWAN u8`
	ETH="$TMP1.$TMP2"
	CNTTYPE=1 #autoconnect
	HOSTNAME=
	WANTYPE=`rdcsman 0x0001014$VOIPWAN u32`
	CNTFORCE=0 
fi

chk_hostname()
{
    if [ "$HOSTNAME" == "" ]; then
        if [ -f /etc/hostname ]; then
            HOSTNAME="`cat /etc/hostname`"
            logger -t "udhcpc" "Warning: No specify Hostname, using default Hostname ($HOSTNAME) for DHCP connection"
            echo "Warning: No specify Hostname, using default Hostname ($HOSTNAME) for DHCP connection"
        else
            logger -t "udhcpc" "Warning: No specify Hostname"
            echo "Warning: No specify Hostname"
        fi        
    fi  
}

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
		# Does not check IF_GW.
		if [ "${IF_IP}x" != "x" -a "${IF_NM}x" != "x" ] ; then	
			return 0		
		else			
			sleep 1
			TIME=$((TIME+1))
			if [ $TIME -gt $TIMEOUT ] ; then
				return 1	
			fi			
		fi
	done		
}

udhcpc_start()
{
    chk_hostname

	if [ -n "$VOIPWAN" ] ; then
		$UDHCPC -n -i $ETH -W $VOIPWAN -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"
	
	wrcsman "0x800351b$VOIPWAN 0x00 && \
			 0x800351c$VOIPWAN 0x00 && \
			 0x800350d$VOIPWAN 0x00 && \
			 0x800350e$VOIPWAN 0x00 && \
			 0x800350f$VOIPWAN 0x00 && \
			 0x8003520$VOIPWAN 0x00 && \
			 0x80010002 0x00 && \
			 0x80010003 0x00 && \
			 0x80010004 0x00 && \
			 0x80010005 0x00 && \
			 0x80010006 0x00 && \
             0x80010007 0x00" 				 		
	
	 				 		
	return 0
}

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

. /usr/bin/scriptlib

case "$1" in

	start)
		udhcpc_start		
		if [ $? = 1 ] ; then
			ifconfig $ETH 0.0.0.0 

			if [ -n "$VOIPWAN" ] ;then
				udhcpc-action start $VOIPWAN &
			else 
				exit 1
			fi
		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)
		exit 0									
		;;
	
		
	*)
		exit 1
		;;
esac

exit 0		
			
