#!/bin/bash

networkcfg=/etc/network
defaultsys=/etc/.default.sys
RESOLV_CONF=/etc/resolv.conf
interface=$1

if [ -z "$interface" ]; then
    echo "eg: ${0} [(wlan|eth)[0-32]]"
    exit 1
fi
[ ! -f "${defaultsys}" ] && cp /etc.default/.default.sys $defaultsys -a

numberkey=0
getmetric(){
    local currentdev=$1
    local defaultgw=`iniparse -c -f ${defaultsys} -s system -k defaultgwdev`
    echo "defaultgw: $defaultgw , currentdev: $currentdev"
    [ "${defaultgw}X" = "X" ] && defaultgw="eth0"
    if [ "X${currentdev}" != "X${defaultgw}"  -a "${currentdev}" != "bond0" ];then
        if [ $numberkey -eq 0 ];then
            numberkey=2
        else
            let numberkey=numberkey+1
        fi
    else
        numberkey=1
    fi
    return 0
}

#Fix the defaultgw                                                 
iniparse -a -f ${defaultsys} -s system -k defaultgwdev -v ${interface}
route -n | grep UG | while read line               
do                                                                                     
    options_gateway=`echo ${line} | awk '{print $2}'`                              
    ifcs=`echo ${line} | awk '{print $8}'`
    echo "Clean default routers"
    ip route del default dev ${ifcs}
done

dhcpscript=/etc/init.d/nas/udhcps                                     
dhcpclient=/sbin/udhcpc
options_dhcp=`iniparse -c -f ${networkcfg} -s ${interface} -k DHCP | tr a-z A-Z`
if [ "${options_dhcp}X" = "YESX" ] || [ "x${options_dhcp}" = "x" ]; then
	progress=$(ps -ef | grep udhcpc | grep ${interface})
	[ ! -z "$progress" ] && {
		progressid=$(echo $progress | awk '{print $2}')
		[ ! -z "$progressid" ] && kill -9 $progressid
	}
	$dhcpclient -i $interface -S -s $dhcpscript -b > /dev/null &
else
	getmetric ${interface}
	options_gateway=`iniparse -c -f ${networkcfg} -s ${interface} -k GATEWAY`
	options_dns1=`iniparse -c -f ${networkcfg} -s ${interface} -k DNS1`
	[ ! -z "$options_gateway" ] && {	
		echo "Adding router ${options_gateway}======Metric:${numberkey}========${interface}"
		[ ${numberkey} -eq 1 ] && route add default gw ${options_gateway} dev ${interface}
		ip route add default via ${options_gateway} dev ${interface} metric ${numberkey} table tbl_${interface}
		sed -i "/${options_dns1}/d" ${RESOLV_CONF}
		sed -i "1i nameserver ${options_dns1}" ${RESOLV_CONF}
		if [ "$options_dns1" != "${options_gateway}" ]; then
			# when metric is 1, insert gw after the one line; else insert gw after the last line
			sed -i "/${options_gateway}/d" ${RESOLV_CONF}
			if [ ${numberkey} -eq 1 ];then
				sed -i "1a\nameserver ${options_gateway}" ${RESOLV_CONF}
			else
				sed -i "$ a\nameserver ${options_gateway}" ${RESOLV_CONF}
			fi
		fi
	}
fi
