#!/bin/sh

. /scripts/functions

cfg="ipconfig -q -t ${IPTIMEOUT:-30}"

mcut() {
	local f="$1" s="$2"
	local IFS=:
	set -- $s
	[ "$#" -ge "$f" ] || return 1
	eval printf '%s' "\$$f"
}

interface() {
	[ ! -f "/tmp/net-$INTERFACE.conf" ] ||
		return 0

	local dev= proto=
	case "$IPOPTS" in
		*:*:*:*:*:*:*)
			dev="$(mcut 6 "$IPOPTS")"
			proto='static'
			;;
		*:*)
			dev="$(mcut 1 "$IPOPTS")"
			proto="$(mcut 2 "$IPOPTS")"
			;;
	esac

	[ -z "$dev" -o "$dev" = "$INTERFACE" ] ||
		return 0

	case "$proto" in
		none|off) ;;
		dhcp|bootp|rarp|both)	$cfg -c "$proto" -d "$INTERFACE" ;;
		on|any|'')		$cfg "$INTERFACE" ;;
		static)			$cfg "$IPOPTS" ;;
		*)			$cfg -d "$INTERFACE" ;;
	esac

	[ -f "/tmp/net-$INTERFACE.conf" ] ||
		return 0

	echo online > "/sys/${DEVPATH#/sys/}/uevent"
}

handler() {
	[ -n "$IP" ] ||
		return 0

	i=0
	while [ "$i" -lt "$IP" ]; do
		eval "IPOPTS=\"\$IP$i\""
		interface
		i=$(($i+1))
	done
}

rc=0
for e in "$handler_eventdir"/netdev.*; do
	( . "$e"; handler; ) ||
		rc=1
	done_event "$e"
done

exit $rc
