#!/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" grep -sq ^config /etc/config/wireless && { local wdev for wdev in $( find_radio() { local wdev wnet config_get wdev "$1" device config_get wnet "$1" network [ -n "$wdev" ] && [ "$wnet" = "$2" ] && echo "$wdev" } source /lib/functions.sh config_load wireless config_foreach find_radio wifi-iface "$1" | sort -u ); do /sbin/wifi up "$wdev" done }