From: Felix Fietkau Date: Sun, 22 Jul 2007 18:32:47 +0000 (+0000) Subject: keep track of the wifi interface state in /var/state/wireless X-Git-Tag: kamikaze_7.07~41 X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=7b5e25a80a378560bb03d8d03ab15583be733bc9;p=openwrt%2Fsvn-archive%2Fopenwrt.git keep track of the wifi interface state in /var/state/wireless SVN-Revision: 8108 --- 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