#!/bin/sh

set -e

determine_implementation() {
	[ -x /sbin/dhcpcd ] && echo "dhcpcd" && return
	[ -x /sbin/udhcpc ] && echo "udhcpc" && return
	echo "???"
}

start() {
	case "$1" in
	dhcpcd)
		[ -z "$IF_HOSTNAME" ] && optargs="$optargs -h $IF_HOSTNAME"
		[ -z "$IF_VENDOR" ] && optargs="$optargs -i $IF_VENDOR"
		[ -z "$IF_CLIENT" ] && optargs="$optargs -i $IF_CLIENT"
		[ -z "$IF_LEASETIME" ] && optargs="$optargs -l $IF_LEASETIME"
		/sbin/dhcpcd $optargs $IFACE
	udhcpc)
		/sbin/udhcpc -b -R -p /var/run/udhcpc.$IFACE.pid -i $IFACE
		;;
	*)
		echo "implementation $1 not supported"
		exit 1
	esac
}

stop() {
	case "$1" in
	dhcpcd)
		/sbin/dhcpcd -k $IFACE
		;;
	udhcpc)
		kill $(cat /var/lib/udhcpc.$IFACE.pid)
		;;
	*)
		echo "implementation $1 not supported"
		exit 1
	esac
}

impl=$(determine_implementation)

[ -z "$VERBOSE" ] || set -x

case "$MODE" in
start) start $impl ;;
stop) stop $impl ;;
*) echo "unknown mode $MODE" ;;
esac