diff options
author | Felix Fietkau <nbd@openwrt.org> | 2007-07-22 18:32:47 +0000 |
---|---|---|
committer | Felix Fietkau <nbd@openwrt.org> | 2007-07-22 18:32:47 +0000 |
commit | b13426e21b729e62de0f9c7cd8dd0e0c0bc900d6 (patch) | |
tree | 987b1cfbfebc72de4b9cc6d21ba65156cbe673ba | |
parent | f2a32fff7d2089082e11f0e8ebfaef6159994338 (diff) | |
download | upstream-b13426e21b729e62de0f9c7cd8dd0e0c0bc900d6.tar.gz upstream-b13426e21b729e62de0f9c7cd8dd0e0c0bc900d6.tar.bz2 upstream-b13426e21b729e62de0f9c7cd8dd0e0c0bc900d6.zip |
keep track of the wifi interface state in /var/state/wireless
SVN-Revision: 8108
-rwxr-xr-x | package/base-files/files/sbin/wifi | 19 | ||||
-rw-r--r-- | package/broadcom-wl/files/lib/wifi/broadcom.sh | 2 | ||||
-rwxr-xr-x | package/madwifi/files/lib/wifi/madwifi.sh | 2 |
3 files changed, 23 insertions, 0 deletions
diff --git a/package/base-files/files/sbin/wifi b/package/base-files/files/sbin/wifi index d653620ca2..0d26468ba2 100755 --- a/package/base-files/files/sbin/wifi +++ b/package/base-files/files/sbin/wifi @@ -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() { diff --git a/package/broadcom-wl/files/lib/wifi/broadcom.sh b/package/broadcom-wl/files/lib/wifi/broadcom.sh index 3a8bebd176..61672472de 100644 --- a/package/broadcom-wl/files/lib/wifi/broadcom.sh +++ b/package/broadcom-wl/files/lib/wifi/broadcom.sh @@ -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\"" diff --git a/package/madwifi/files/lib/wifi/madwifi.sh b/package/madwifi/files/lib/wifi/madwifi.sh index 222e2a9ddd..07a6cd78bf 100755 --- a/package/madwifi/files/lib/wifi/madwifi.sh +++ b/package/madwifi/files/lib/wifi/madwifi.sh @@ -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 |