| #!/bin/sh |
| test_log=`nv get telog_path` |
| if [ "$test_log" == "" ]; then |
| test_log=`nv get path_log`"te.log" |
| fi |
| echo "Info: psext_down.sh $1 start" >> $test_log |
| c_id=$1 |
| ps_if=`nv get pswan`$c_id |
| eth_if=`nv get "ps_ext"$c_id` |
| ext_br="br"$c_id |
| |
| #ɾ³ý¶ÔÓ¦µÄ·ÓɹæÔò |
| route_del() |
| { |
| pdp_ip=`nv get $ps_if"_pdp_ip"` |
| ps_ip=`nv get $ps_if"_ip"` |
| br_ip=`nv get $ext_br"_ip"` |
| marknum=`expr $c_id + 10` |
| rt_num=`expr $c_id + 100` |
| |
| iptables -t mangle -D PREROUTING -i $ext_br -j MARK --set-mark $marknum |
| ip rule del from $pdp_ip fwmark $marknum table $rt_num |
| ip route del default dev $ps_if table $rt_num |
| |
| marknum=`expr $c_id + 20` |
| rt_num=`expr $c_id + 120` |
| iptables -t mangle -D PREROUTING -i $ps_if -j MARK --set-mark $marknum |
| ip rule del to $pdp_ip fwmark $marknum table $rt_num |
| ip route del default dev $ext_br table $rt_num |
| #±¾µØÍøÂçÅäÖà |
| iptables -t nat -D POSTROUTING -s $ps_ip -o $ps_if -j SNAT --to $pdp_ip |
| if [ $? -ne 0 ];then |
| echo "cmd <<iptables -t nat -D POSTROUTING -s $ps_ip -o $ps_if -j SNAT --to $pdp_ip>> exec failed" >> $test_log |
| fi |
| route delete default dev $ps_if |
| if [ $? -ne 0 ];then |
| echo "cmd <<route delete default dev $ps_if>> exec failed" >> $test_log |
| fi |
| |
| ifconfig $ext_br 0.0.0.0 |
| ifconfig $ext_br down 2>>$test_log |
| if [ $? -ne 0 ];then |
| echo "Error: ifconfig $ext_br down failed." >> $test_log |
| fi |
| |
| ifconfig $ps_if 0.0.0.0 |
| ifconfig $ps_if down 2>>$test_log |
| if [ $? -ne 0 ];then |
| echo "Error: ifconfig $ps_if down failed." >> $test_log |
| fi |
| |
| #reset nv |
| nv set $ext_br"_ip"=0.0.0.0 |
| nv set $ext_br"_nm"=0.0.0.0 |
| nv set $ps_if"_pdp_ip"=0.0.0.0 |
| nv set $ps_if"_pridns"=0.0.0.0 |
| nv set $ps_if"_secdns"=0.0.0.0 |
| nv set $ps_if"_ip"=0.0.0.0 |
| } |
| tc_tbf.sh down $c_id |
| route_del |
| ifconfig $eth_if down |
| ifconfig $ext_br down |
| brctl delif $ext_br $eth_if |
| brctl delbr $ext_br |