#!/bin/sh

if [ -z "$LE0_CONF" ]; then
    LE0_CONF=/mnt/sysfs/system/le0.conf
fi

if [ -f $LE0_CONF ]; then
    . $LE0_CONF
else
    LE0_IP=172.16.233.214
    LE0_MASK=255.255.255.0
    LE0_GATEWAY=172.16.233.1
    LE0_TFTP=192.168.2.2
fi

if [ -z "$1" ]; then
	OPT=get
else
	OPT=$1
fi

LE0_REMOTE_IFNAME=remote
LE0_DHCPC_LOG=/tmp/log/le0.udhcpc.log
LE0_DHCPC_PID=/tmp/etc/le0.udhcpc.pid

case "$OPT" in
set)
	stty icrnl		# Just in case!
	echo Set local interface.
	echo "Press <RETURN> for default values, if any."
	echo -n "IP addr:   $LE0_IP "
	read choice
	if [ -n "$choice" ]; then
		LE0_IP=$choice
	fi
	echo -n "Mask:      $LE0_MASK "
	read choice
	if [ -n "$choice" ]; then
		LE0_MASK=$choice
	fi
	echo -n "Gateway:   $LE0_GATEWAY "
	read choice
	if [ -n "$choice" ]; then
		LE0_GATEWAY=$choice
	fi
	echo -n "Tftp addr: $LE0_TFTP "
	read choice
	if [ -n "$choice" ]; then
		LE0_TFTP=$choice
	fi

	echo LE0_IP=$LE0_IP > $LE0_CONF
	echo LE0_MASK=$LE0_MASK >> $LE0_CONF
	echo LE0_GATEWAY=$LE0_GATEWAY >> $LE0_CONF
	echo LE0_TFTP=$LE0_TFTP >> $LE0_CONF
;;
get)
	echo "IP addr:   $LE0_IP"
	echo "Mask:      $LE0_MASK"
	echo "Gateway:   $LE0_GATEWAY"
	echo "TFTP addr: $LE0_TFTP"
;;
start)
	if [ killall -KILL udhcpc 2>/dev/null ]; then
	   echo "DHCP is running"
	else
	   echo "DHCP is not running"
	fi

	if [ "$LE0_IP" = "0.0.0.0" ]; then
	    echo Setting up le0-DHCPC on $LE0_REMOTE_IFNAME...
	    # -b = background, -s = script, -i XXX = interface, -V XXX = vendor class, -t N = timeout, -p XXX = pid file
	    /sbin/udhcpc -a -R -S -s /usr/share/udhcpc/le0.dhcp.script -p $LE0_DHCPC_PID -i $LE0_REMOTE_IFNAME -t 10000 >$LE0_DHCPC_LOG 2>&1 &
	    #echo Waiting on foreground DHCPC, pid=$!
	    #wait $!
	else
    	    echo Configuring $LE0_REMOTE_IFNAME, addr=$LE0_IP, netmask=$LE0_MASK
	    /sbin/ifconfig $LE0_REMOTE_IFNAME $LE0_IP netmask $LE0_MASK
            route add default $LE0_REMOTE_IFNAME
	fi

;;
stop)
	if [ "$LE0_IP" = "0.0.0.0" ]; then
	    if [ killall -0 udhcpc 2>/dev/null ]; then
		echo Bringing down $LE0_REMOTE_IFNAME interface...
		/sbin/ifconfig $LE0_REMOTE_IFNAME down
	    else
    		echo Freeing lease on $LE0_REMOTE_IFNAME...
    		killall -USR2 udhcpc
    		killall -KILL udhcpc
	    fi
	fi
;;
getenv)
;;
*)
	echo "le0 [set|get|start|stop]"
esac
