wifi_updown() {
+ [ enable = "$1" ] && wifi_updown disable "$2"
for device in ${2:-$DEVICES}; do (
- config_get disabled "$device" disabled
- [ "$disabled" == "1" ] && {
- echo "'$device' is disabled"
- set disable
- }
+ config_get disabled "$device" disabled
+ [ 1 == "$disabled" ] && {
+ echo "'$device' is disabled"
+ set disable
+ }
config_get iftype "$device" type
if eval "type ${1}_$iftype" 2>/dev/null >/dev/null; then
eval "scan_$iftype '$device'"
setup_interface "$1" "$2"
)}
-config_cb() {
- config_get TYPE "$CONFIG_SECTION" TYPE
- case "$TYPE" in
- wifi-device)
- append DEVICES "$CONFIG_SECTION"
- ;;
- wifi-iface)
- config_get device "$CONFIG_SECTION" device
- config_get vifs "$device" vifs
- append vifs "$CONFIG_SECTION"
- config_set "$device" vifs "$vifs"
- ;;
- esac
+set_wifi_up() {
+ local cfg="$1"
+ local ifname="$2"
+ uci set "/var/state/wireless.${cfg}.up=1"
+ uci set "/var/state/wireless.${cfg}.ifname=$ifname"
+}
+
+set_wifi_down() {
+ local cfg="$1"
+ local vifs vif vifstr
+ [ -f /var/state/wireless ] || return
+
+ config_get vifs "$cfg" vifs
+ for vif in $vifs; do
+ append vifstr "$vif" "|"
+ done
+ FILE="/var/state/wireless.$$"
+ grep -vE "^config_set '($vifstr)' " /var/state/wireless > "$FILE"
+ mv "$FILE" /var/state/wireless
+}
+
+scan_wifi() {
+ local cfgfile="$1"
+ config_cb() {
+ config_get TYPE "$CONFIG_SECTION" TYPE
+ case "$TYPE" in
+ wifi-device)
+ append DEVICES "$CONFIG_SECTION"
+ ;;
+ wifi-iface)
+ config_get device "$CONFIG_SECTION" device
+ config_get vifs "$device" vifs
+ append vifs "$CONFIG_SECTION"
+ config_set "$device" vifs "$vifs"
+ ;;
+ esac
+ }
+ config_load "${cfgfile:-wireless}"
}
DEVICES=
DRIVERS=
-config_load wireless
include /lib/wifi
+scan_wifi
case "$1" in
down) wifi_updown "disable" "$2";;