wext: don't force-disconnect in ad-hoc mode
Otherwise the driver might interpret the request as a request to create/join a new adhoc network with the bogus SSID. Signed-off-by: Dan Williams <dcbw@redhat.com>
This commit is contained in:
parent
f8e96eb6fd
commit
64a04447c3
1 changed files with 23 additions and 8 deletions
|
@ -1923,15 +1923,29 @@ static int wpa_driver_wext_mlme(struct wpa_driver_wext_data *drv,
|
|||
|
||||
static void wpa_driver_wext_disconnect(struct wpa_driver_wext_data *drv)
|
||||
{
|
||||
struct iwreq iwr;
|
||||
const u8 null_bssid[ETH_ALEN] = { 0, 0, 0, 0, 0, 0 };
|
||||
u8 ssid[32];
|
||||
int i;
|
||||
|
||||
/*
|
||||
* Clear the BSSID selection and set a random SSID to make sure the
|
||||
* driver will not be trying to associate with something even if it
|
||||
* does not understand SIOCSIWMLME commands (or tries to associate
|
||||
* automatically after deauth/disassoc).
|
||||
* Only force-disconnect when the card is in infrastructure mode,
|
||||
* otherwise the driver might interpret the cleared BSSID and random
|
||||
* SSID as an attempt to create a new ad-hoc network.
|
||||
*/
|
||||
os_memset(&iwr, 0, sizeof(iwr));
|
||||
os_strlcpy(iwr.ifr_name, drv->ifname, IFNAMSIZ);
|
||||
if (ioctl(drv->ioctl_sock, SIOCGIWMODE, &iwr) < 0) {
|
||||
perror("ioctl[SIOCGIWMODE]");
|
||||
iwr.u.mode = IW_MODE_INFRA;
|
||||
}
|
||||
|
||||
if (iwr.u.mode == IW_MODE_INFRA) {
|
||||
/*
|
||||
* Clear the BSSID selection and set a random SSID to make sure
|
||||
* the driver will not be trying to associate with something
|
||||
* even if it does not understand SIOCSIWMLME commands (or
|
||||
* tries to associate automatically after deauth/disassoc).
|
||||
*/
|
||||
wpa_driver_wext_set_bssid(drv, null_bssid);
|
||||
|
||||
|
@ -1939,6 +1953,7 @@ static void wpa_driver_wext_disconnect(struct wpa_driver_wext_data *drv)
|
|||
ssid[i] = rand() & 0xFF;
|
||||
wpa_driver_wext_set_ssid(drv, ssid, 32);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static int wpa_driver_wext_deauthenticate(void *priv, const u8 *addr,
|
||||
|
|
Loading…
Reference in a new issue