#!/bin/bash
#
# Params:
#	h = display help
#	m = start mire
#	s = simple mode (don't use ifup & ifdown scripts => do not requiere ifcfg-ethX)
#	t = set timeout delay (default=60s)
#	a = use ip adress (use -a xx.xx.xx.xx), imply simple mode
# Error codes:
#	1 = pppd already lauched (non degroup)
#	2 = modem can't be synchronized
#	3 = can't launch pppd (non degroup) / can't set modem interface "up" (degroup)
#	4 = lock still present

. ./setvars

for param in $* ; do
	if [ $i -gt 0 ] ; then
			param=${param//--help/-h}
			param=${param//--mire/-m}
			param=${param//--simple/-s}
			param=${param//--timeout=/-t}
			param=${param//--timeout/-t}
			param=${param//--ip=/-a}
			param=${param//--ip/-a}
			PARAMS="$PARAMS $param"
	fi
	let i++
done
evalParams() {
	while getopts "hmst:a:" opt; do
		case $opt in
			h  ) echo -e $FCTSTART_USAGE_MSG ; exit 0 ;;
			m  ) MIRE=1 ;;
			s  ) SIMPLE=1 ;;
			t  ) TIMEOUT=$OPTARG ;;
			a  ) STATIC_IP=$OPTARG ; SIMPLE=1 ;;
			\? ) echo -e $FCTSTART_USAGE_MSG ; exit 1 ;;
		esac
	done
}
MIRE=0
TIMEOUT=60
STATIC_IP="none"
evalParams $PARAMS


# lock still present? (user forgot to run eagleconfig)
if [ -f $EAGLESCRIPT_DIR/lock ] ; then
	exit 4
fi

if [ $DEGROUPE == 0 ] ; then

	# startadsl or startmire?
	if [ $MIRE == 1 ] ; then
		OPTIONS=$PPP_OPTIONS_MIRE
	else
		OPTIONS=$PPP_OPTIONS_ADSL
	fi

	# pppd already lanched?
	if [ ! -z "`pidof pppd`" ] ; then
		exit 1
	fi

fi

# waiting Nsec for synchro (default: N=60)
eaglectrl -s$TIMEOUT 0>/dev/null 1>/dev/null 2>/dev/null

if [ $? == 0 ] ; then
	INTERFACE="`eaglectrl -i`"
	if [ $DEGROUPE == 0 ] ; then
		# ===== not degroup => ifup & pppd =====
		if [ $SIMPLE == 0 ] ; then
			ifup $INTERFACE 0>/dev/null 1>/dev/null 2>/dev/null && pppd persist pty "pppoa -I $INTERFACE" file $OPTIONS
		else
			ifconfig $INTERFACE up && pppd persist pty "pppoa -I $INTERFACE" file $OPTIONS
		fi
	else
		# ===== degroup => only ifup =====
		if [ $SIMPLE == 0 ] ; then
			ifup $INTERFACE 0>/dev/null 1>/dev/null 2>/dev/null
		else
			if [ "$STATIC_IP" = "none" ] ; then
				dhclient $INTERFACE up 0>/dev/null 1>/dev/null 2>/dev/null
			else
				GATEWAY="`echo $STATIC_IP | cut -d '.' -f1-3`.254"
				ifconfig $INTERFACE $STATIC_IP netmask 255.255.255.0
				route add default gw $GATEWAY
			fi
		fi
	fi
	if [ $? == 0 ] ; then
		exit 0
	else
		exit 3
	fi
else
	exit 2
fi
