#!/bin/sh
t=${1:-60}
dev=${2:-eth0}
ssid=${3:-ub300-test}
psk=${4:-ub300-test}
ret=1
case "$dev" in
	ra*)
		ifconfig "$dev" down
		IFACE="$dev" IF_WIRELESS_MODE=managed IF_WPA_PSK="$psk" IF_WPA_SSID="$ssid" /etc/network/if-pre-up.d/ralink
		;;
esac
ifconfig "$dev" up
case "$dev" in
	eth*)
		while ethlink $dev | grep -q down; do sleep 1; t=$((t-1)); [ $t = 0 ] && exit 1; done
		;;
esac
pidfile="/var/run/udhcpc.$dev.pid"
trap 'kill $(cat $pidfile); ifconfig $dev down; exit 1' HUP INT TERM
udhcpc -i "$dev" -p "$pidfile" -R -f &
i=0
while [ $i -lt $t ]; do
	if ifconfig $dev | grep -q 'inet addr'; then
		ret=0
		break
	fi
	sleep 1
	i=$((i+1))
done
ifconfig "$dev" | grep -q 'inet addr' && ret=0
kill $(cat "$pidfile")
wait
ifconfig "$dev" down
exit $ret
