openwrt/package/netifd/files/sbin/ifup

47 lines
880 B
Bash
Executable File

#!/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
}