| 1 | #!/bin/sh |
| 2 | # Copyright (C) 2006-2011 OpenWrt.org |
| 3 | |
| 4 | /sbin/ifdown "$@" |
| 5 | |
| 6 | . /etc/functions.sh |
| 7 | [ $# = 0 ] && { echo " $0 <group>"; exit; } |
| 8 | |
| 9 | setup_wifi=1 |
| 10 | |
| 11 | case "$1" in |
| 12 | "-a") |
| 13 | [ -e "/tmp/resolv.conf.auto" ] && rm /tmp/resolv.conf.auto |
| 14 | config_cb() { |
| 15 | [ interface != "$1" -o -z "$2" ] || eval "$0 -w $2" |
| 16 | } |
| 17 | config_load network |
| 18 | exit 0 |
| 19 | ;; |
| 20 | "-w") setup_wifi=0; shift ;; |
| 21 | esac |
| 22 | |
| 23 | if [ $setup_wifi -gt 0 ] && grep -q config /etc/config/wireless; then |
| 24 | find_related_radios() { |
| 25 | local wdev wnet |
| 26 | config_get wdev "$1" device |
| 27 | config_get wnet "$1" network |
| 28 | |
| 29 | if [ -n "$wdev" ] && [ "$wnet" = "$network" ]; then |
| 30 | append radio_devs "$wdev" "$N" |
| 31 | fi |
| 32 | } |
| 33 | |
| 34 | local radio_devs |
| 35 | local network="$1" |
| 36 | config_load wireless |
| 37 | config_foreach find_related_radios wifi-iface |
| 38 | |
| 39 | local dev |
| 40 | for dev in $(echo "$radio_devs" | sort -u); do |
| 41 | /sbin/wifi up "$dev" |
| 42 | done |
| 43 | fi |
| 44 | |
| 45 | include /lib/network |
| 46 | scan_interfaces |
| 47 | |
| 48 | config_get ifname "$1" device |
| 49 | for dev in ${ifname:-$1}; do |
| 50 | setup_interface "$dev" "$1" |
| 51 | done |
| 52 | |