#!/bin/sh

# This script configures the ethernet interfaces

. /var/run/interfaces
. /etc/image_features
. /etc/sysconfig/network.conf
. /etc/sysconfig/rc.conf

case "$1" in
	lan)
			ETH_IF=lan0
			AUTONEGOTIOATION="on"
			CFG_FILE=/etc/sysconfig/${ETH_IF}_phy.conf
			PHYFORCE=""
			if [ -f $CFG_FILE ] ; then
			    ETHCONF_CR=`cat $CFG_FILE | cut -d '=' -f 2`
			else
			    ETHCONF_CR="0,3300"
			fi
			if [ "$SUBPRODUCT_TYPE" = QUADRO_A10_FXSGW ] || [ "$FEATURE_E1T1" = "1" ]; then
			    PHYADDR="-p 1"
			else
			    PHYADDR=""
			fi
			
			if [ "$ETHCONF_CR" = "0,3300" ]; then
				PHYCOMMAND="-r"
			fi
			if [ "$ETHCONF_CR" = "0,2100" ]; then
				PHYFORCE="-F"
				PHYCOMMAND="100baseTx-FD"
			fi
			if [ "$ETHCONF_CR" = "0,2000" ]; then
				PHYFORCE="-F"
				PHYCOMMAND="100baseTx-HD"
			fi
			if [ "$ETHCONF_CR" = "0,0100" ]; then
				PHYFORCE="-F"
				PHYCOMMAND="10baseT-FD"
			fi
			if [ "$ETHCONF_CR" = "0,0000" ]; then
				PHYFORCE="-F"
				PHYCOMMAND="10baseT-HD"
			fi

			/bin/mii-tool $PHYADDR $PHYFORCE "$PHYCOMMAND" lan0

			IPV6ADDR=""
			mac=`cat /sys/class/net/lan0/address`
			AUTOIPV6ADDR_LAN=fe80::$(printf %02x $((0x${mac%%:*} ^ 2)))
			mac=${mac#*:}
			AUTOIPV6ADDR_LAN=$AUTOIPV6ADDR_LAN${mac%:*:*:*}ff:fe
			mac=${mac#*:*:}
			AUTOIPV6ADDR_LAN=$AUTOIPV6ADDR_LAN${mac%:*}${mac##*:}
			AUTOIPV6ADDR_LAN=`echo $AUTOIPV6ADDR_LAN | sed -e 's/:0/:/g'`
			if [ "$IPV6_AUTO_CONFIG_LAN" = "false" ]; then
				. /etc/sysconfig/network-scripts/ifcfg-lan0
				if [ "$IPV6ADDR" != "$AUTOIPV6ADDR_LAN/64" ]; then
					/bin/sleep 4
					/bin/ip add del "$AUTOIPV6ADDR_LAN/64" dev lan0  
				fi
			fi

			if [ "$FEATURE_VLAN" = "1" ] ; then 
				if [ -s /etc/fiad-conf/vlan.cfg ] ; then
# remove default Auto configured IPV6 address from LAN/WAN interfaces
					/bin/sleep 4
					for entry in /etc/fiad-conf/sysconfig/network-scripts/ifcfg-lan0.*
					do
						if [ -f $entry ] ; then
							. /"$entry"
							/bin/ip add del "$AUTOIPV6ADDR_LAN/64" dev $DEVICE
						fi
					done
				fi
			fi

		;;
		
	$PHYS_WAN|wan)
			ETH_IF=$PHYS_WAN
			AUTONEGOTIOATION="on"
		    PHYADDR=""
			CFG_FILE=/etc/sysconfig/${ETH_IF}_phy.conf
			if [ -f $CFG_FILE ] ; then
			    ETHCONF_CR=`cat $CFG_FILE | cut -d '=' -f 2`			
			else
			    ETHCONF_CR="0,3300"
			fi

			if [ "$ETHCONF_CR" = "0,3300" ]; then
				AUTONEGOTIOATION="on"
				SPEED="100"
				DUPLEX="full"
				PHYCOMMAND="-r"
			fi
			if [ "$ETHCONF_CR" = "0,2100" ]; then
				AUTONEGOTIOATION="off"
				SPEED="100"
				DUPLEX="full"
			fi
			if [ "$ETHCONF_CR" = "0,2000" ]; then
				AUTONEGOTIOATION="off"
				SPEED="100"
				DUPLEX="half"
			fi
			if [ "$ETHCONF_CR" = "0,0100" ]; then
				AUTONEGOTIOATION="off"
				SPEED="10"
				DUPLEX="full"
			fi
			if [ "$ETHCONF_CR" = "0,0000" ]; then
				AUTONEGOTIOATION="off"
				SPEED="10"
				DUPLEX="half"
			fi

			if [ "$AUTONEGOTIOATION" = "on" ]; then
				/bin/mii-tool $PHYADDR $PHYFORCE "$PHYCOMMAND" $ETH_IF
			else
				/usr/sbin/ethtool -s $ETH_IF speed $SPEED duplex $DUPLEX autoneg $AUTONEGOTIOATION
			fi

			IPV6ADDR=""
			mac=`cat /sys/class/net/wan0/address`
			AUTOIPV6ADDR_WAN=fe80::$(printf %02x $((0x${mac%%:*} ^ 2)))
			mac=${mac#*:}
			AUTOIPV6ADDR_WAN=$AUTOIPV6ADDR_WAN${mac%:*:*:*}ff:fe
			mac=${mac#*:*:}
			AUTOIPV6ADDR_WAN=$AUTOIPV6ADDR_WAN${mac%:*}${mac##*:}
			AUTOIPV6ADDR_WAN=`echo $AUTOIPV6ADDR_WAN | sed -e 's/:0/:/g'`
			if [ "$IPV6_AUTO_CONFIG_WAN" = "false" ]; then
				. /etc/sysconfig/network-scripts/ifcfg-wan0
				if [ "$IPV6ADDR" != "$AUTOIPV6ADDR_WAN/64" ]; then
					/bin/sleep 4
					/bin/ip add del "$AUTOIPV6ADDR_WAN/64" dev wan0
				fi
			fi
			if [ "$FEATURE_VLAN" = "1" ] ; then 
				if [ -s /etc/fiad-conf/vlan.cfg ] ; then
# remove default Auto configured IPV6 address from LAN/WAN interfaces
					/bin/sleep 4
					for entry in /etc/fiad-conf/sysconfig/network-scripts/ifcfg-wan0.*
					do
						if [ -f $entry ] ; then
							. /"$entry"
							/bin/ip add del "$AUTOIPV6ADDR_WAN/64" dev $DEVICE
						fi
					done
				fi
			fi
		;;
esac
