#!/bin/sh

case "$0" in
	*ifdown) modes=down;;
	*ifup) modes="down up";;
	*) echo "Invalid command: $0";;
esac

if_call() {
	local interface="$1"
	for mode in $modes; do
		ubus call $interface $mode
	done
}

[ "$modes" = "down up" ] && ubus call network reload
[[ "$1" == "-a" ]] && {
	for interface in `ubus -S list 'network.interface.*'`; do
		if_call "$interface"
	done
	exit
}

ubus -S list "network.interface.$1" > /dev/null || {
	echo "Interface $1 not found"
	exit
}
if_call "network.interface.$1"
