diff options
author | Felix Fietkau <nbd@openwrt.org> | 2012-05-23 21:49:28 +0000 |
---|---|---|
committer | Felix Fietkau <nbd@openwrt.org> | 2012-05-23 21:49:28 +0000 |
commit | b86652832e9bfe8e0d2697f18266778afb9f90c3 (patch) | |
tree | 3d83e833d18786a526ec054f42fbfc813859fdcf /package/netifd/files/sbin | |
parent | 267b414b4c4ee4155b554761ddde42245fb384a0 (diff) | |
download | mtk-20170518-b86652832e9bfe8e0d2697f18266778afb9f90c3.zip mtk-20170518-b86652832e9bfe8e0d2697f18266778afb9f90c3.tar.gz mtk-20170518-b86652832e9bfe8e0d2697f18266778afb9f90c3.tar.bz2 |
netifd: improve /sbin/ifup wifi hack, make it work properly with -a. fold /etc/init.d/netifd into /etc/init.d/network
SVN-Revision: 31850
Diffstat (limited to 'package/netifd/files/sbin')
-rwxr-xr-x | package/netifd/files/sbin/ifup | 87 |
1 files changed, 58 insertions, 29 deletions
diff --git a/package/netifd/files/sbin/ifup b/package/netifd/files/sbin/ifup index a3ff10e..e17b67d 100755 --- a/package/netifd/files/sbin/ifup +++ b/package/netifd/files/sbin/ifup @@ -1,10 +1,7 @@ #!/bin/sh -case "$0" in - *ifdown) modes=down;; - *ifup) modes="down up";; - *) echo "Invalid command: $0";; -esac +ifup_all= +setup_wifi= if_call() { local interface="$1" @@ -13,34 +10,66 @@ if_call() { done } +case "$0" in + *ifdown) modes=down;; + *ifup) + modes="down up" + setup_wifi=1 + ;; + *) echo "Invalid command: $0";; +esac + +while :; do + case "$1" in + -a) + ifup_all=1 + shift + ;; + -w) + setup_wifi= + shift + ;; + *) + break + ;; + esac +done + [ "$modes" = "down up" ] && ubus call network reload -[[ "$1" == "-a" ]] && { +if [ -n "$ifup_all" ]; then for interface in `ubus -S list 'network.interface.*'`; do if_call "$interface" done + [ -n "$setup_wifi" ] && /sbin/wifi up exit -} +else + ubus -S list "network.interface.$1" > /dev/null || { + echo "Interface $1 not found" + exit + } + if_call "network.interface.$1" +fi -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" +if [ -n "$setup_wifi" ] && grep -q config /etc/config/wireless; then + . /etc/functions.sh + + find_related_radios() { + local wdev wnet + config_get wdev "$1" device + config_get wnet "$1" network + + if [ -n "$wdev" ] && [ "$wnet" = "$network" ]; then + append radio_devs "$wdev" "$N" + fi + } + + local radio_devs + local network="$1" + config_load wireless + config_foreach find_related_radios wifi-iface + + local dev + for dev in $(echo "$radio_devs" | sort -u); do + /sbin/wifi up "$dev" done -} +fi |