Avoid sending DEAUTH or DISASSOC packet when using flag tx=0
hostapd would send DISASSOC packet (after quiet DEAUTH) or DEAUTH packet (after quiet DISASSOC) to the station after some inactivity timeout, even though the command has tx=0 parameter. Fix this so that tx=0 cleans the STA info without sending any DISASSOC or DEAUTH packets. Signed-off-by: Gal Savion <gsavion@maxlinear.com>
This commit is contained in:
parent
619ff3d2e8
commit
23456e480e
1 changed files with 22 additions and 16 deletions
|
@ -661,15 +661,18 @@ int hostapd_ctrl_iface_deauthenticate(struct hostapd_data *hapd,
|
|||
}
|
||||
#endif /* CONFIG_P2P_MANAGER */
|
||||
|
||||
if (os_strstr(txtaddr, " tx=0"))
|
||||
hostapd_drv_sta_remove(hapd, addr);
|
||||
else
|
||||
hostapd_drv_sta_deauth(hapd, addr, reason);
|
||||
sta = ap_get_sta(hapd, addr);
|
||||
if (os_strstr(txtaddr, " tx=0")) {
|
||||
hostapd_drv_sta_remove(hapd, addr);
|
||||
if (sta)
|
||||
ap_free_sta(hapd, sta);
|
||||
} else {
|
||||
hostapd_drv_sta_deauth(hapd, addr, reason);
|
||||
if (sta)
|
||||
ap_sta_deauthenticate(hapd, sta, reason);
|
||||
else if (addr[0] == 0xff)
|
||||
hostapd_free_stas(hapd);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -723,15 +726,18 @@ int hostapd_ctrl_iface_disassociate(struct hostapd_data *hapd,
|
|||
}
|
||||
#endif /* CONFIG_P2P_MANAGER */
|
||||
|
||||
if (os_strstr(txtaddr, " tx=0"))
|
||||
hostapd_drv_sta_remove(hapd, addr);
|
||||
else
|
||||
hostapd_drv_sta_disassoc(hapd, addr, reason);
|
||||
sta = ap_get_sta(hapd, addr);
|
||||
if (os_strstr(txtaddr, " tx=0")) {
|
||||
hostapd_drv_sta_remove(hapd, addr);
|
||||
if (sta)
|
||||
ap_free_sta(hapd, sta);
|
||||
} else {
|
||||
hostapd_drv_sta_disassoc(hapd, addr, reason);
|
||||
if (sta)
|
||||
ap_sta_disassociate(hapd, sta, reason);
|
||||
else if (addr[0] == 0xff)
|
||||
hostapd_free_stas(hapd);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue