mirror of
https://github.com/vanhoefm/fragattacks.git
synced 2025-01-31 09:14:03 -05:00
P2P: Add group notifications
This commit is contained in:
parent
e44f8bf20a
commit
8ccbe415ba
@ -779,6 +779,10 @@ static u16 check_assoc_ies(struct hostapd_data *hapd, struct sta_info *sta,
|
|||||||
wpabuf_free(sta->p2p_ie);
|
wpabuf_free(sta->p2p_ie);
|
||||||
sta->p2p_ie = ieee802_11_vendor_ie_concat(ies, ies_len,
|
sta->p2p_ie = ieee802_11_vendor_ie_concat(ies, ies_len,
|
||||||
P2P_IE_VENDOR_TYPE);
|
P2P_IE_VENDOR_TYPE);
|
||||||
|
|
||||||
|
if (p2p_group_notif_assoc(hapd->p2p_group, sta->addr,
|
||||||
|
ies, ies_len) < 0)
|
||||||
|
return WLAN_STATUS_UNSPECIFIED_FAILURE;
|
||||||
} else {
|
} else {
|
||||||
wpabuf_free(sta->p2p_ie);
|
wpabuf_free(sta->p2p_ie);
|
||||||
sta->p2p_ie = NULL;
|
sta->p2p_ie = NULL;
|
||||||
@ -876,6 +880,31 @@ static void send_assoc_resp(struct hostapd_data *hapd, struct sta_info *sta,
|
|||||||
}
|
}
|
||||||
#endif /* CONFIG_WPS */
|
#endif /* CONFIG_WPS */
|
||||||
|
|
||||||
|
#ifdef CONFIG_P2P
|
||||||
|
if (sta->p2p_ie) {
|
||||||
|
struct wpabuf *p2p_resp_ie;
|
||||||
|
enum p2p_status_code status;
|
||||||
|
switch (status_code) {
|
||||||
|
case WLAN_STATUS_SUCCESS:
|
||||||
|
status = P2P_SC_SUCCESS;
|
||||||
|
break;
|
||||||
|
case WLAN_STATUS_AP_UNABLE_TO_HANDLE_NEW_STA:
|
||||||
|
status = P2P_SC_FAIL_LIMIT_REACHED;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
status = P2P_SC_FAIL_INVALID_PARAMS;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
p2p_resp_ie = p2p_group_assoc_resp_ie(hapd->p2p_group, status);
|
||||||
|
if (p2p_resp_ie) {
|
||||||
|
os_memcpy(p, wpabuf_head(p2p_resp_ie),
|
||||||
|
wpabuf_len(p2p_resp_ie));
|
||||||
|
p += wpabuf_len(p2p_resp_ie);
|
||||||
|
wpabuf_free(p2p_resp_ie);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif /* CONFIG_P2P */
|
||||||
|
|
||||||
send_len += p - reply->u.assoc_resp.variable;
|
send_len += p - reply->u.assoc_resp.variable;
|
||||||
|
|
||||||
if (hapd->drv.send_mgmt_frame(hapd, reply, send_len) < 0)
|
if (hapd->drv.send_mgmt_frame(hapd, reply, send_len) < 0)
|
||||||
|
@ -20,6 +20,7 @@
|
|||||||
#include "radius/radius.h"
|
#include "radius/radius.h"
|
||||||
#include "radius/radius_client.h"
|
#include "radius/radius_client.h"
|
||||||
#include "drivers/driver.h"
|
#include "drivers/driver.h"
|
||||||
|
#include "p2p/p2p.h"
|
||||||
#include "hostapd.h"
|
#include "hostapd.h"
|
||||||
#include "accounting.h"
|
#include "accounting.h"
|
||||||
#include "ieee802_1x.h"
|
#include "ieee802_1x.h"
|
||||||
@ -199,6 +200,10 @@ void ap_free_sta(struct hostapd_data *hapd, struct sta_info *sta)
|
|||||||
eloop_cancel_timeout(ap_sa_query_timer, hapd, sta);
|
eloop_cancel_timeout(ap_sa_query_timer, hapd, sta);
|
||||||
#endif /* CONFIG_IEEE80211W */
|
#endif /* CONFIG_IEEE80211W */
|
||||||
|
|
||||||
|
#ifdef CONFIG_P2P
|
||||||
|
p2p_group_notif_disassoc(hapd->p2p_group, sta->addr);
|
||||||
|
#endif /* CONFIG_P2P */
|
||||||
|
|
||||||
wpabuf_free(sta->wps_ie);
|
wpabuf_free(sta->wps_ie);
|
||||||
wpabuf_free(sta->p2p_ie);
|
wpabuf_free(sta->p2p_ie);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user