#!/bin/sh /etc/rc.common
# Copyright (C) 2009 Draytek.com

START=99
YES=0	# TRUE
NO=1	# FALSE

check_rt2880_cfg() {
	local devid
	local chipid=18140801
	devid=$(cat /proc/bus/pci/devices | cut -f2)
	if [ ! -f /etc/config/wireless ]; then
		return $NO
	fi
	if echo "$devid" | grep -q $chipid; then
	    cat /etc/config/wireless | grep -qE 'rt2880\>' && return $YES
	else
	    return $NO
	fi
	return $NO
}

check_rt2860_cfg() {
	local devid
	local chipid=18140601
	devid=$(cat /proc/bus/pci/devices | cut -f2)
	if [ ! -f /etc/config/wireless ]; then
		return $NO
	fi
	if echo "$devid" | grep -q $chipid; then
	    cat /etc/config/wireless | grep -qE 'rt2860\>' && return $YES
	else
	    return $NO
	fi
	return $NO
}

start() {
        mac_address=$(ifconfig eth0 | grep "HWaddr" | awk '{print $5}')
        uci -q -P /var/state set network.lan_mac=$mac_address
        mac_address=$(ifconfig eth1 | grep "HWaddr" | awk '{print $5}')
        uci -q -P /var/state set network.wan_mac=$mac_address
		sed 's/option password.*/option password ****/' /etc/config/grocx/users > /etc/config/users 2>/dev/null
        
        /etc/gcom/3g.reboot
        dray_fwup&
        /sbin/shnat_rate_monitor&
		
		#set LAN IP autoconfig
		LAN_AUTO=$(uci get ipv6.lan.autoconfig)
		LAN_MODE=$(uci get ipv6.lan.mode)
		if [ $LAN_AUTO == "1" ]; then
			echo "IPv6 LAN up"
			if [ $LAN_MODE == "dhcpv6" ]; then
				/usr/sbin/dhcpv6_server.sh
			fi
			if [ $LAN_MODE == "radvd" ]; then
				/usr/sbin/radvd.sh
			fi
		fi
		
		#set LAN IPv6 IP
		LAN_IPv6=$(uci get ipv6.lan.global_addr)
		LAN_INF=$(uci -q -P /var/state get network.lan.ifname)
		if [ $LAN_IPv6 ]; then
			ifconfig $LAN_INF $LAN_IPv6/64 
		fi
		
        /etc/tsp/tspinit start &		
		# detect wlan card for rt2860 and rt2880
		if ( check_rt2880_cfg || check_rt2860_cfg ); then
			uci -q -P /var/state set network.wifi_device=1
			enc=$(uci get wireless.@wifi-iface[0].encryption)
			case "$enc" in
				WPA|wpa|WPA2|wpa2|WPA1WPA2|wpa1wpa2)
					# stop vitesse hardware DoS to pass radius authentication
					/etc/init.d/dosprotech stop
			;;
			esac
		fi
}
