keep track of the wifi interface state in /var/state/wireless
authorFelix Fietkau <nbd@openwrt.org>
Sun, 22 Jul 2007 18:32:47 +0000 (18:32 +0000)
committerFelix Fietkau <nbd@openwrt.org>
Sun, 22 Jul 2007 18:32:47 +0000 (18:32 +0000)
SVN-Revision: 8108

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

index d653620ca2442dba0481cac01b7b7bb78ec0a426..0d26468ba2f037bb604d0361915204360e332af8 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 3a8bebd176436597bec7459893bd81408018a328..61672472de6da7d63fc97bbf40eeacff56de2f1e 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 222e2a9ddd44d1eff72722b0a2cc859fae355f94..07a6cd78bf74b1285d527dd8bb4b90c237fd5559 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