[T106][ZXW-22]7520V3SCV2.01.01.02P42U09_VEC_V0.8_AP_VEC origin source commit

Change-Id: Ic6e05d89ecd62fc34f82b23dcf306c93764aec4b
diff --git a/ap/app/Script/scripts/udhcpc.sh b/ap/app/Script/scripts/udhcpc.sh
new file mode 100644
index 0000000..1cdeae0
--- /dev/null
+++ b/ap/app/Script/scripts/udhcpc.sh
@@ -0,0 +1,155 @@
+#!/bin/sh
+# udhcpc script edited by Tim Riker <Tim@Rikers.org>
+
+path_sh=`nv get path_sh`
+. $path_sh/global.sh
+
+echo "Info: udhcpc.sh $1 $2 start" >> $test_log
+
+[ -z "$1" ] && echo "Error: should be called from udhcpc" && exit 1
+
+RESOLV_CONF=$path_conf"/resolv.conf"
+#broadcast´æÔÚʱºò£¬ÉèÖÃBROADCAST
+[ -n "$broadcast" ] && BROADCAST="broadcast $broadcast"
+#subnet´æÔÚʱºò£¬ÉèÖÃNETMASK
+[ -n "$subnet" ] && NETMASK="netmask $subnet"
+
+deconfig_wan()
+{   
+    nv set $1"_ip"=0.0.0.0
+    nv set $1"_nm"=0.0.0.0
+    nv set $1"_gw"=0.0.0.0
+    nv set $1"_pridns"=0.0.0.0
+    nv set $1"_secdns"=0.0.0.0	
+}
+
+get_wan_name()
+{
+    c_id="0"
+	ps_name=`nv get pswan`
+	rj45_name=`nv get ethwan`
+	wifi_name=`nv get wifiwan`
+	case "$1" in
+	    $ps_name"1")
+            wanname="pswan"	
+			c_id="1" ;;
+		$ps_name"2")
+            wanname="pswan"	
+			c_id="2" ;;
+		$ps_name"3")
+            wanname="pswan"	
+			c_id="3" ;;
+		$ps_name"4")
+            wanname="pswan"	
+			c_id="4" ;;
+        $rj45_name)
+            wanname="ethwan"  ;;
+        $wifi_name)
+            wanname="wifiwan" ;;		
+    esac	
+}
+
+
+case "$1" in
+    deconfig)
+   		echo "case deconfig "
+        ifconfig $interface 0.0.0.0 2>>$test_log
+        if [ $? -ne 0 ];then
+	        echo "Error: ifconfig $interface 0.0.0.0 failed." >> $test_log
+        fi
+		deconfig_wan $interface 2>>$test_log
+		(router_msg_proxy ipv4 udhcpc.sh >> $test_log 2>&1 || echo "Error: router_msg_proxy ipv4 udhcpc.sh failed." >> $test_log) &
+         echo "case deconfig over"
+		 
+		 step=`nvram_get 2860 step_tmp`
+		 if [ "-$step" = "-" ];then
+			step=0
+		 fi
+		 
+		 echo "step=$step"
+		 
+		 step=`expr $step + 1`
+		 nv set step_tmp=$step
+		 
+		 if [ "-$step" = "-3" ];then
+			nv set step_tmp=0
+		 fi
+		 	 
+        ;;
+
+    renew|bound)
+    	echo "case renew bound"
+        
+		get_wan_name $interface	
+		if [ "-$wanname" == "-ethwan" -o "-$wanname" == "-wifiwan" ]; then
+			(router_msg_proxy del_timer $wanname >> $test_log 2>&1 || echo "Error: router_msg_proxy del_timer failed." >> $test_log) &
+		fi
+
+        #µ÷Óøýű¾Æðudhcpʱºò£¬ÅжÏinterfaceÊÇ·ñºÍethwanÆ¥Å䣬ƥÅäÔòÆðethwan,·ñÔòÓÃÔ­interface
+		ethwan_tmp=`nv get ethwan`
+        sw0_flag=`echo $ethwan_tmp | grep $interface`
+        if [ "-${sw0_flag}" != "-" ];then
+            interface=${ethwan_tmp}
+        fi
+		ifconfig $interface $ip $BROADCAST $NETMASK 2>>$test_log
+		if [ $? -ne 0 ];then
+	        echo "Error: ifconfig $interface $ip $BROADCAST $NETMASK failed." >> $test_log
+        fi
+		if [ "-$wanname" == "-wifiwan" ]; then
+			nv set wifi_state="working"
+	    elif [ "-$wanname" == "-ethwan" ]; then
+		    #×ÔÊÊÓ¦£¬dhcp»ñÈ¡ip³É¹¦ÔòɱËÀpppoe½ø³Ì
+		    pppoe_pid=`ps | grep -v grep | grep $interface | grep pppoecd | awk '{print $1}'`
+			kill $pppoe_pid
+			nv set rj45_state="working"
+			nv set eth_curmode="dhcp"
+	    fi
+		
+        echo "interface:$interface, ip:$ip, NETMASK:$subnet"
+        echo "router:$router"
+        echo "dns:$dns"
+       
+        #set new value to ip, netmask, gateway and dns in nv 
+        nv set $interface"_ip"=$ip
+        nv set $interface"_nm"=$subnet
+        nv set $interface"_gw"=$router
+		#set dns to nv
+        for i in $dns ; do
+            [ -n "$pspridns" ] || { nv set $interface"_pridns"=$i; pspridns="pspridns"; }
+            nv set $interface"_secdns"=$i   
+        done
+			
+		#c_id=0ÔòÊÇrj45»òWiFi£¬c_id=defaultÔòΪÓÃÓÚÍâÍøµÄps¿Ú
+        def_cid=`nv get default_cid`
+	    if [ "-$c_id" == "-0" -o "-$c_id" == "-$def_cid" ]; then
+			(router_msg_proxy ipv4 udhcpc.sh >> $test_log 2>&1 || echo "Error: router_msg_proxy ipv4 udhcpc.sh failed." >> $test_log) &
+		else
+			#policy router
+			wan_pri=`nv get $wanname"_priority"`
+			rt_num=`expr $wan_pri \* 10 + $c_id`
+			ip rule add from $ip table $rt_num 2>>$test_log
+			if [ $? -ne 0 ];then
+				echo "Error: ip rule add from $ip table $rt_num failed." >> $test_log
+			fi
+			ip route add default via $router table $rt_num 2>>$test_log
+			if [ $? -ne 0 ];then
+				echo "Error: ip route add default via $router table $rt_num failed." >> $test_log
+			fi
+			ip route flush cache 2>>$test_log
+			if [ $? -ne 0 ];then
+				echo "Error: ip route flush cache failed." >> $test_log
+			fi
+	    fi
+     
+		# notify goahead when the WAN IP has been acquired. --yy
+		echo "case renew bound over"
+		
+        #nv set ppp_status=ppp_connected
+		nv set step_tmp=0
+		;;
+esac
+
+
+
+exit 0
+