aboutsummaryrefslogtreecommitdiffstats
path: root/src/drivers/driver_wext.c
diff options
context:
space:
mode:
authorDan Williams <dcbw@redhat.com>2009-02-10 09:40:19 (GMT)
committerJouni Malinen <j@w1.fi>2009-02-10 09:40:19 (GMT)
commitb965fa729404b6ac602c716968179bcb510204ae (patch)
tree477618bd16566a3aa1f454d19c8628a5a15a7b5e /src/drivers/driver_wext.c
parent34a6c94178a1d0c26d6eaf9e2dc0c848a798afd2 (diff)
downloadhostap-b965fa729404b6ac602c716968179bcb510204ae.zip
hostap-b965fa729404b6ac602c716968179bcb510204ae.tar.gz
hostap-b965fa729404b6ac602c716968179bcb510204ae.tar.bz2
wext: really disassociate (set random SSID)
Really disassociate when tearing stuff down; drivers may sometimes (legally) keep trying to reassociate unless the BSSID is unlocked. If the SSID is unlocked too, under WEXT drivers are able to pick an SSID to associate, so kill that behavior by setting a bogus SSID. Unfortunately WEXT doesn't provide an easy method to say "stop whatever doing and just idle". Signed-off-by: Dan Williams <dcbw@redhat.com>
Diffstat (limited to 'src/drivers/driver_wext.c')
-rw-r--r--src/drivers/driver_wext.c16
1 files changed, 14 insertions, 2 deletions
diff --git a/src/drivers/driver_wext.c b/src/drivers/driver_wext.c
index 631c63d..9f19b5a 100644
--- a/src/drivers/driver_wext.c
+++ b/src/drivers/driver_wext.c
@@ -1911,9 +1911,21 @@ static int wpa_driver_wext_disassociate(void *priv, const u8 *addr,
int reason_code)
{
struct wpa_driver_wext_data *drv = priv;
+ const u8 null_bssid[ETH_ALEN] = { 0, 0, 0, 0, 0, 0 };
+ u8 ssid[32];
+ int ret, i;
+
wpa_printf(MSG_DEBUG, "%s", __FUNCTION__);
- return wpa_driver_wext_mlme(drv, addr, IW_MLME_DISASSOC,
- reason_code);
+
+ ret = wpa_driver_wext_mlme(drv, addr, IW_MLME_DISASSOC, reason_code);
+
+ wpa_driver_wext_set_bssid(drv, null_bssid);
+
+ for (i = 0; i < 32; i++)
+ ssid[i] = rand() & 0xFF;
+ wpa_driver_wext_set_ssid(drv, ssid, 32);
+
+ return ret;
}