[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
+