keep track of the wifi interface state in /var/state/wireless
authornbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Sun, 22 Jul 2007 18:32:47 +0000 (18:32 +0000)
committernbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Sun, 22 Jul 2007 18:32:47 +0000 (18:32 +0000)
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@8108 3c298f89-4303-0410-b956-a3cf2f4a3e73

package/base-files/files/sbin/wifi
package/broadcom-wl/files/lib/wifi/broadcom.sh
package/madwifi/files/lib/wifi/madwifi.sh

index d653620..0d26468 100755 (executable)
@@ -72,6 +72,25 @@ start_net() {(
        setup_interface "$1" "$2"
 )}
 
+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
+       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() {
index 3a8bebd..6167247 100644 (file)
@@ -71,6 +71,7 @@ scan_broadcom() {
 }
 
 disable_broadcom() {
+       set_wifi_down "$1"
        wlc down
        (
                include /lib/network
@@ -197,6 +198,7 @@ enable_broadcom() {
                [ -z "$net_cfg" ] || {
                        bridge="$(bridge_interface "$net_cfg")"
                        append if_up "start_net '$ifname' '$net_cfg'" ";$N"
+                       append if_up "set_wifi_up '$vif' '$ifname'" ";$N"
                }
                [ -z "$nasopts" ] || {
                        eval "${vif}_ssid=\"\$ssid\""
index 222e2a9..07a6cd7 100755 (executable)
@@ -50,6 +50,7 @@ scan_atheros() {
 disable_atheros() (
        local device="$1"
 
+       set_wifi_down "$device"
        # kill all running hostapd and wpa_supplicant processes that
        # are running on atheros vifs 
        for pid in `pidof hostapd wpa_supplicant`; do
@@ -204,6 +205,7 @@ enable_atheros() {
                        start_net "$ifname" "$net_cfg"
                }
                iwconfig "$ifname" essid "$ssid"
+               set_wifi_up "$vif" "$ifname"
                case "$mode" in
                        ap)
                                config_get_bool isolate "$vif" isolate 0