Signed-off-by: Konguraj(Raj) Kulanthaivel Signed-off-by: Johannes Berg --- wpa_supplicant/ap.c | 18 ++++++++++++++++++ wpa_supplicant/ap.h | 3 +++ wpa_supplicant/p2p_supplicant.c | 7 +++++++ wpa_supplicant/p2p_supplicant.h | 2 ++ 4 files changed, 30 insertions(+), 0 deletions(-) diff --git a/wpa_supplicant/ap.c b/wpa_supplicant/ap.c index be51a59..611972f 100644 --- a/wpa_supplicant/ap.c +++ b/wpa_supplicant/ap.c @@ -751,6 +751,24 @@ int wpa_supplicant_ap_sta_deauth(struct wpa_supplicant *wpa_s, return 0; } +int wpa_supplicant_ap_sta_disassociate(struct wpa_supplicant *wpa_s, + const u8 *sta, int reason_code) +{ + struct hostapd_data *hapd; + struct sta_info *station; + hapd = wpa_s->ap_iface->bss[0]; + + hostapd_drv_sta_disassoc(hapd, sta, reason_code); + + station = ap_get_sta(hapd, sta); + if (station) + ap_sta_disassociate(hapd, station, reason_code); + else if (sta[0] == 0xff) + hostapd_free_stas(hapd); + + return 0; +} + int ap_ctrl_iface_sta(struct wpa_supplicant *wpa_s, const char *txtaddr, char *buf, size_t buflen) { diff --git a/wpa_supplicant/ap.h b/wpa_supplicant/ap.h index d19537f..94938b0 100644 --- a/wpa_supplicant/ap.h +++ b/wpa_supplicant/ap.h @@ -50,5 +50,8 @@ void wpa_supplicant_ap_pwd_auth_fail(struct wpa_supplicant *wpa_s); int wpa_supplicant_ap_sta_deauth(struct wpa_supplicant *wpa_s, const u8 *sta, int reason_code); +int wpa_supplicant_ap_sta_disassociate(struct wpa_supplicant *wpa_s, + const u8 *sta, + int reason_code); #endif /* AP_H */ diff --git a/wpa_supplicant/p2p_supplicant.c b/wpa_supplicant/p2p_supplicant.c index 9a85c9c..080fbb9 100644 --- a/wpa_supplicant/p2p_supplicant.c +++ b/wpa_supplicant/p2p_supplicant.c @@ -4263,3 +4263,10 @@ int wpas_p2p_deauth(struct wpa_supplicant *wpa_s, { return wpa_supplicant_ap_sta_deauth(wpa_s, sta, reason_code); } + + +int wpas_p2p_disassociate(struct wpa_supplicant *wpa_s, + const u8 *sta, int reason_code) +{ + return wpa_supplicant_ap_sta_disassociate(wpa_s, sta, reason_code); +} diff --git a/wpa_supplicant/p2p_supplicant.h b/wpa_supplicant/p2p_supplicant.h index 4c1c523..33060f3 100644 --- a/wpa_supplicant/p2p_supplicant.h +++ b/wpa_supplicant/p2p_supplicant.h @@ -125,5 +125,7 @@ int wpas_p2p_unauthorize(struct wpa_supplicant *wpa_s, const char *addr); int wpas_p2p_disconnect(struct wpa_supplicant *wpa_s); int wpas_p2p_deauth(struct wpa_supplicant *wpa_s, const u8 *sta, int reason_code); +int wpas_p2p_disassociate(struct wpa_supplicant *wpa_s, + const u8 *sta, int reason_code); #endif /* P2P_SUPPLICANT_H */ -- 1.7.2.3