aboutsummaryrefslogtreecommitdiffstats
path: root/wpa_supplicant/events.c
diff options
context:
space:
mode:
authorSunil Dutt <usdutt@codeaurora.org>2018-02-01 11:31:28 (GMT)
committerJouni Malinen <j@w1.fi>2018-02-02 19:17:55 (GMT)
commit5ff39c1380d9dea794c5102c0b6d11d1b1e23ad0 (patch)
tree67f50c523b3f9e0290a4929194f89e02d46a9db7 /wpa_supplicant/events.c
parent3382224082835170e0bc8adc30e851487fd102e6 (diff)
downloadhostap-5ff39c1380d9dea794c5102c0b6d11d1b1e23ad0.zip
hostap-5ff39c1380d9dea794c5102c0b6d11d1b1e23ad0.tar.gz
hostap-5ff39c1380d9dea794c5102c0b6d11d1b1e23ad0.tar.bz2
SAE: Support external authentication offload for driver-SME cases
Extend the SME functionality to support the external authentication. External authentication may be used by the drivers that do not define separate commands for authentication and association (~WPA_DRIVER_FLAGS_SME) but rely on wpa_supplicant's SME for the authentication. Signed-off-by: Jouni Malinen <jouni@codeaurora.org>
Diffstat (limited to 'wpa_supplicant/events.c')
-rw-r--r--wpa_supplicant/events.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/wpa_supplicant/events.c b/wpa_supplicant/events.c
index 8e46b76..4f36043 100644
--- a/wpa_supplicant/events.c
+++ b/wpa_supplicant/events.c
@@ -4267,6 +4267,16 @@ void wpa_supplicant_event(void *ctx, enum wpa_event_type event,
break;
}
+#ifdef CONFIG_SAE
+ if (stype == WLAN_FC_STYPE_AUTH &&
+ !(wpa_s->drv_flags & WPA_DRIVER_FLAGS_SME) &&
+ (wpa_s->drv_flags & WPA_DRIVER_FLAGS_SAE)) {
+ sme_external_auth_mgmt_rx(
+ wpa_s, data->rx_mgmt.frame,
+ data->rx_mgmt.frame_len);
+ break;
+ }
+#endif /* CONFIG_SAE */
wpa_dbg(wpa_s, MSG_DEBUG, "AP: ignore received "
"management frame in non-AP mode");
break;
@@ -4579,6 +4589,15 @@ void wpa_supplicant_event(void *ctx, enum wpa_event_type event,
wpa_msg(wpa_s, MSG_INFO, WPA_EVENT_BEACON_LOSS);
bgscan_notify_beacon_loss(wpa_s);
break;
+ case EVENT_EXTERNAL_AUTH:
+#ifdef CONFIG_SAE
+ if (!wpa_s->current_ssid) {
+ wpa_printf(MSG_DEBUG, "SAE: current_ssid is NULL");
+ break;
+ }
+ sme_external_auth_trigger(wpa_s, data);
+#endif /* CONFIG_SAE */
+ break;
default:
wpa_msg(wpa_s, MSG_INFO, "Unknown event %d", event);
break;