Lines Matching refs:wpa_s
60 static int wpas_select_network_from_last_scan(struct wpa_supplicant *wpa_s,
65 int wpas_temp_disabled(struct wpa_supplicant *wpa_s, struct wpa_ssid *ssid) in wpas_temp_disabled() argument
76 wpas_clear_temp_disabled(wpa_s, ssid, 0); in wpas_temp_disabled()
93 static int wpas_reenabled_network_time(struct wpa_supplicant *wpa_s) in wpas_reenabled_network_time() argument
99 if (wpa_s->conf->auto_interworking && wpa_s->conf->interworking && in wpas_reenabled_network_time()
100 wpa_s->conf->cred) in wpas_reenabled_network_time()
104 for (ssid = wpa_s->conf->ssid; ssid; ssid = ssid->next) { in wpas_reenabled_network_time()
108 disabled_for = wpas_temp_disabled(wpa_s, ssid); in wpas_reenabled_network_time()
123 struct wpa_supplicant *wpa_s = eloop_ctx; in wpas_network_reenabled() local
125 if (wpa_s->disconnected || wpa_s->wpa_state != WPA_SCANNING) in wpas_network_reenabled()
128 wpa_dbg(wpa_s, MSG_DEBUG, in wpas_network_reenabled()
130 if (wpa_supplicant_fast_associate(wpa_s) != 1) { in wpas_network_reenabled()
131 wpa_supplicant_cancel_sched_scan(wpa_s); in wpas_network_reenabled()
132 wpa_supplicant_req_scan(wpa_s, 0, 0); in wpas_network_reenabled()
138 struct wpa_supplicant *wpa_s, const u8 *bssid) in wpa_supplicant_get_new_bss() argument
141 struct wpa_ssid *ssid = wpa_s->current_ssid; in wpa_supplicant_get_new_bss()
144 bss = wpa_bss_get(wpa_s, bssid, ssid->ssid, ssid->ssid_len); in wpa_supplicant_get_new_bss()
146 bss = wpa_bss_get_bssid(wpa_s, bssid); in wpa_supplicant_get_new_bss()
152 static void wpa_supplicant_update_current_bss(struct wpa_supplicant *wpa_s) in wpa_supplicant_update_current_bss() argument
154 struct wpa_bss *bss = wpa_supplicant_get_new_bss(wpa_s, wpa_s->bssid); in wpa_supplicant_update_current_bss()
157 wpa_supplicant_update_scan_results(wpa_s); in wpa_supplicant_update_current_bss()
160 bss = wpa_supplicant_get_new_bss(wpa_s, wpa_s->bssid); in wpa_supplicant_update_current_bss()
164 wpa_s->current_bss = bss; in wpa_supplicant_update_current_bss()
168 static int wpa_supplicant_select_config(struct wpa_supplicant *wpa_s) in wpa_supplicant_select_config() argument
175 if (wpa_s->conf->ap_scan == 1 && wpa_s->current_ssid) { in wpa_supplicant_select_config()
176 wpa_supplicant_update_current_bss(wpa_s); in wpa_supplicant_select_config()
178 if (wpa_s->current_ssid->ssid_len == 0) in wpa_supplicant_select_config()
180 res = wpa_drv_get_ssid(wpa_s, drv_ssid); in wpa_supplicant_select_config()
182 wpa_msg(wpa_s, MSG_INFO, in wpa_supplicant_select_config()
188 if (drv_ssid_len == wpa_s->current_ssid->ssid_len && in wpa_supplicant_select_config()
189 os_memcmp(drv_ssid, wpa_s->current_ssid->ssid, in wpa_supplicant_select_config()
194 if ((wpa_s->current_ssid->key_mgmt & WPA_KEY_MGMT_OWE) && in wpa_supplicant_select_config()
195 wpa_s->current_bss && in wpa_supplicant_select_config()
196 (wpa_s->current_bss->flags & WPA_BSS_OWE_TRANSITION) && in wpa_supplicant_select_config()
197 drv_ssid_len == wpa_s->current_bss->ssid_len && in wpa_supplicant_select_config()
198 os_memcmp(drv_ssid, wpa_s->current_bss->ssid, in wpa_supplicant_select_config()
203 wpa_msg(wpa_s, MSG_DEBUG, in wpa_supplicant_select_config()
209 wpa_dbg(wpa_s, MSG_DEBUG, "Select network based on association " in wpa_supplicant_select_config()
211 ssid = wpa_supplicant_get_ssid(wpa_s); in wpa_supplicant_select_config()
213 wpa_msg(wpa_s, MSG_INFO, in wpa_supplicant_select_config()
218 if (wpas_network_disabled(wpa_s, ssid)) { in wpa_supplicant_select_config()
219 wpa_dbg(wpa_s, MSG_DEBUG, "Selected network is disabled"); in wpa_supplicant_select_config()
223 if (disallowed_bssid(wpa_s, wpa_s->bssid) || in wpa_supplicant_select_config()
224 disallowed_ssid(wpa_s, ssid->ssid, ssid->ssid_len)) { in wpa_supplicant_select_config()
225 wpa_dbg(wpa_s, MSG_DEBUG, "Selected BSS is disallowed"); in wpa_supplicant_select_config()
229 res = wpas_temp_disabled(wpa_s, ssid); in wpa_supplicant_select_config()
231 wpa_dbg(wpa_s, MSG_DEBUG, "Selected network is temporarily " in wpa_supplicant_select_config()
236 wpa_dbg(wpa_s, MSG_DEBUG, "Network configuration found for the " in wpa_supplicant_select_config()
241 if (wpa_supplicant_set_suites(wpa_s, NULL, ssid, in wpa_supplicant_select_config()
243 wpa_dbg(wpa_s, MSG_DEBUG, "Could not set WPA suites"); in wpa_supplicant_select_config()
245 wpa_supplicant_set_non_wpa_policy(wpa_s, ssid); in wpa_supplicant_select_config()
248 if (wpa_s->current_ssid && wpa_s->current_ssid != ssid) in wpa_supplicant_select_config()
249 eapol_sm_invalidate_cached_session(wpa_s->eapol); in wpa_supplicant_select_config()
250 old_ssid = wpa_s->current_ssid; in wpa_supplicant_select_config()
251 wpa_s->current_ssid = ssid; in wpa_supplicant_select_config()
253 wpa_supplicant_update_current_bss(wpa_s); in wpa_supplicant_select_config()
255 wpa_supplicant_rsn_supp_set_config(wpa_s, wpa_s->current_ssid); in wpa_supplicant_select_config()
256 wpa_supplicant_initiate_eapol(wpa_s); in wpa_supplicant_select_config()
257 if (old_ssid != wpa_s->current_ssid) in wpa_supplicant_select_config()
258 wpas_notify_network_changed(wpa_s); in wpa_supplicant_select_config()
266 struct wpa_supplicant *wpa_s = eloop_ctx; in wpa_supplicant_stop_countermeasures() local
268 if (wpa_s->countermeasures) { in wpa_supplicant_stop_countermeasures()
269 wpa_s->countermeasures = 0; in wpa_supplicant_stop_countermeasures()
270 wpa_drv_set_countermeasures(wpa_s, 0); in wpa_supplicant_stop_countermeasures()
271 wpa_msg(wpa_s, MSG_INFO, "WPA: TKIP countermeasures stopped"); in wpa_supplicant_stop_countermeasures()
280 wpa_supplicant_cancel_sched_scan(wpa_s); in wpa_supplicant_stop_countermeasures()
281 wpa_supplicant_req_scan(wpa_s, 0, 0); in wpa_supplicant_stop_countermeasures()
286 void wpa_supplicant_mark_disassoc(struct wpa_supplicant *wpa_s) in wpa_supplicant_mark_disassoc() argument
290 wnm_bss_keep_alive_deinit(wpa_s); in wpa_supplicant_mark_disassoc()
293 ibss_rsn_deinit(wpa_s->ibss_rsn); in wpa_supplicant_mark_disassoc()
294 wpa_s->ibss_rsn = NULL; in wpa_supplicant_mark_disassoc()
298 wpa_supplicant_ap_deinit(wpa_s); in wpa_supplicant_mark_disassoc()
303 wpa_drv_configure_frame_filters(wpa_s, 0); in wpa_supplicant_mark_disassoc()
306 if (wpa_s->wpa_state == WPA_INTERFACE_DISABLED) in wpa_supplicant_mark_disassoc()
309 if (os_reltime_initialized(&wpa_s->session_start)) { in wpa_supplicant_mark_disassoc()
310 os_reltime_age(&wpa_s->session_start, &wpa_s->session_length); in wpa_supplicant_mark_disassoc()
311 wpa_s->session_start.sec = 0; in wpa_supplicant_mark_disassoc()
312 wpa_s->session_start.usec = 0; in wpa_supplicant_mark_disassoc()
313 wpas_notify_session_length(wpa_s); in wpa_supplicant_mark_disassoc()
316 wpa_supplicant_set_state(wpa_s, WPA_DISCONNECTED); in wpa_supplicant_mark_disassoc()
317 bssid_changed = !is_zero_ether_addr(wpa_s->bssid); in wpa_supplicant_mark_disassoc()
318 os_memset(wpa_s->bssid, 0, ETH_ALEN); in wpa_supplicant_mark_disassoc()
319 os_memset(wpa_s->pending_bssid, 0, ETH_ALEN); in wpa_supplicant_mark_disassoc()
320 sme_clear_on_disassoc(wpa_s); in wpa_supplicant_mark_disassoc()
321 wpa_s->current_bss = NULL; in wpa_supplicant_mark_disassoc()
322 wpa_s->assoc_freq = 0; in wpa_supplicant_mark_disassoc()
325 wpas_notify_bssid_changed(wpa_s); in wpa_supplicant_mark_disassoc()
327 eapol_sm_notify_portEnabled(wpa_s->eapol, false); in wpa_supplicant_mark_disassoc()
328 eapol_sm_notify_portValid(wpa_s->eapol, false); in wpa_supplicant_mark_disassoc()
329 if (wpa_key_mgmt_wpa_psk(wpa_s->key_mgmt) || in wpa_supplicant_mark_disassoc()
330 wpa_s->key_mgmt == WPA_KEY_MGMT_OWE || in wpa_supplicant_mark_disassoc()
331 wpa_s->key_mgmt == WPA_KEY_MGMT_DPP || wpa_s->drv_authorized_port) in wpa_supplicant_mark_disassoc()
332 eapol_sm_notify_eap_success(wpa_s->eapol, false); in wpa_supplicant_mark_disassoc()
333 wpa_s->drv_authorized_port = 0; in wpa_supplicant_mark_disassoc()
334 wpa_s->ap_ies_from_associnfo = 0; in wpa_supplicant_mark_disassoc()
335 wpa_s->current_ssid = NULL; in wpa_supplicant_mark_disassoc()
336 eapol_sm_notify_config(wpa_s->eapol, NULL, NULL); in wpa_supplicant_mark_disassoc()
337 wpa_s->key_mgmt = 0; in wpa_supplicant_mark_disassoc()
339 wpas_rrm_reset(wpa_s); in wpa_supplicant_mark_disassoc()
340 wpa_s->wnmsleep_used = 0; in wpa_supplicant_mark_disassoc()
341 wnm_clear_coloc_intf_reporting(wpa_s); in wpa_supplicant_mark_disassoc()
342 wpa_s->disable_mbo_oce = 0; in wpa_supplicant_mark_disassoc()
345 wpa_s->last_tk_alg = WPA_ALG_NONE; in wpa_supplicant_mark_disassoc()
346 os_memset(wpa_s->last_tk, 0, sizeof(wpa_s->last_tk)); in wpa_supplicant_mark_disassoc()
348 wpa_s->ieee80211ac = 0; in wpa_supplicant_mark_disassoc()
350 if (wpa_s->enabled_4addr_mode && wpa_drv_set_4addr_mode(wpa_s, 0) == 0) in wpa_supplicant_mark_disassoc()
351 wpa_s->enabled_4addr_mode = 0; in wpa_supplicant_mark_disassoc()
355 static void wpa_find_assoc_pmkid(struct wpa_supplicant *wpa_s) in wpa_find_assoc_pmkid() argument
362 pmksa_cache_clear_current(wpa_s->wpa); in wpa_find_assoc_pmkid()
364 if (wpa_sm_parse_own_wpa_ie(wpa_s->wpa, &ie) < 0 || in wpa_find_assoc_pmkid()
369 pmksa_set = pmksa_cache_set_current(wpa_s->wpa, in wpa_find_assoc_pmkid()
373 eapol_sm_notify_pmkid_attempt(wpa_s->eapol); in wpa_find_assoc_pmkid()
378 wpa_dbg(wpa_s, MSG_DEBUG, "RSN: PMKID from assoc IE %sfound from " in wpa_find_assoc_pmkid()
383 static void wpa_supplicant_event_pmkid_candidate(struct wpa_supplicant *wpa_s, in wpa_supplicant_event_pmkid_candidate() argument
387 wpa_dbg(wpa_s, MSG_DEBUG, "RSN: No data in PMKID candidate " in wpa_supplicant_event_pmkid_candidate()
391 wpa_dbg(wpa_s, MSG_DEBUG, "RSN: PMKID candidate event - bssid=" MACSTR in wpa_supplicant_event_pmkid_candidate()
397 pmksa_candidate_add(wpa_s->wpa, data->pmkid_candidate.bssid, in wpa_supplicant_event_pmkid_candidate()
403 static int wpa_supplicant_dynamic_keys(struct wpa_supplicant *wpa_s) in wpa_supplicant_dynamic_keys() argument
405 if (wpa_s->key_mgmt == WPA_KEY_MGMT_NONE || in wpa_supplicant_dynamic_keys()
406 wpa_s->key_mgmt == WPA_KEY_MGMT_WPA_NONE) in wpa_supplicant_dynamic_keys()
410 if (wpa_s->key_mgmt == WPA_KEY_MGMT_IEEE8021X_NO_WPA && in wpa_supplicant_dynamic_keys()
411 wpa_s->current_ssid && in wpa_supplicant_dynamic_keys()
412 !(wpa_s->current_ssid->eapol_flags & in wpa_supplicant_dynamic_keys()
434 int wpa_supplicant_scard_init(struct wpa_supplicant *wpa_s, in wpa_supplicant_scard_init() argument
442 wpa_s->scard != NULL || wpa_s->conf->external_sim) in wpa_supplicant_scard_init()
471 wpa_dbg(wpa_s, MSG_DEBUG, "Selected network is configured to " in wpa_supplicant_scard_init()
477 wpa_dbg(wpa_s, MSG_DEBUG, "Selected network is configured to use SIM " in wpa_supplicant_scard_init()
480 wpa_s->scard = scard_init(wpa_s->conf->pcsc_reader); in wpa_supplicant_scard_init()
481 if (wpa_s->scard == NULL) { in wpa_supplicant_scard_init()
482 wpa_msg(wpa_s, MSG_WARNING, "Failed to initialize SIM " in wpa_supplicant_scard_init()
486 wpa_sm_set_scard_ctx(wpa_s->wpa, wpa_s->scard); in wpa_supplicant_scard_init()
487 eapol_sm_register_scard_ctx(wpa_s->eapol, wpa_s->scard); in wpa_supplicant_scard_init()
554 static int wpa_supplicant_ssid_bss_match(struct wpa_supplicant *wpa_s, in wpa_supplicant_ssid_bss_match() argument
566 ret = wpas_wps_ssid_bss_match(wpa_s, ssid, bss); in wpa_supplicant_ssid_bss_match()
584 wpa_dbg(wpa_s, MSG_DEBUG, in wpa_supplicant_ssid_bss_match()
598 wpa_dbg(wpa_s, MSG_DEBUG, in wpa_supplicant_ssid_bss_match()
607 wpa_dbg(wpa_s, MSG_DEBUG, in wpa_supplicant_ssid_bss_match()
614 wpa_dbg(wpa_s, MSG_DEBUG, in wpa_supplicant_ssid_bss_match()
621 wpa_dbg(wpa_s, MSG_DEBUG, in wpa_supplicant_ssid_bss_match()
629 wpa_dbg(wpa_s, MSG_DEBUG, in wpa_supplicant_ssid_bss_match()
636 wpa_dbg(wpa_s, MSG_DEBUG, in wpa_supplicant_ssid_bss_match()
642 wpas_get_ssid_pmf(wpa_s, ssid) == in wpa_supplicant_ssid_bss_match()
645 wpa_dbg(wpa_s, MSG_DEBUG, in wpa_supplicant_ssid_bss_match()
650 wpas_get_ssid_pmf(wpa_s, ssid) == in wpa_supplicant_ssid_bss_match()
653 wpa_dbg(wpa_s, MSG_DEBUG, in wpa_supplicant_ssid_bss_match()
659 wpa_dbg(wpa_s, MSG_DEBUG, in wpa_supplicant_ssid_bss_match()
664 if (wpas_get_ssid_pmf(wpa_s, ssid) == MGMT_FRAME_PROTECTION_REQUIRED && in wpa_supplicant_ssid_bss_match()
667 wpa_dbg(wpa_s, MSG_DEBUG, in wpa_supplicant_ssid_bss_match()
678 wpa_dbg(wpa_s, MSG_DEBUG, in wpa_supplicant_ssid_bss_match()
688 wpa_dbg(wpa_s, MSG_DEBUG, in wpa_supplicant_ssid_bss_match()
696 wpa_dbg(wpa_s, MSG_DEBUG, in wpa_supplicant_ssid_bss_match()
703 wpa_dbg(wpa_s, MSG_DEBUG, in wpa_supplicant_ssid_bss_match()
710 wpa_dbg(wpa_s, MSG_DEBUG, in wpa_supplicant_ssid_bss_match()
717 wpa_dbg(wpa_s, MSG_DEBUG, in wpa_supplicant_ssid_bss_match()
723 wpa_dbg(wpa_s, MSG_DEBUG, in wpa_supplicant_ssid_bss_match()
731 wpa_dbg(wpa_s, MSG_DEBUG, in wpa_supplicant_ssid_bss_match()
739 if (wpa_s->owe_transition_select && in wpa_supplicant_ssid_bss_match()
745 wpa_dbg(wpa_s, MSG_DEBUG, in wpa_supplicant_ssid_bss_match()
749 wpa_s->owe_transition_search = 1; in wpa_supplicant_ssid_bss_match()
753 wpa_dbg(wpa_s, MSG_DEBUG, in wpa_supplicant_ssid_bss_match()
762 wpa_dbg(wpa_s, MSG_DEBUG, in wpa_supplicant_ssid_bss_match()
770 wpa_dbg(wpa_s, MSG_DEBUG, " allow in OSEN"); in wpa_supplicant_ssid_bss_match()
776 wpa_dbg(wpa_s, MSG_DEBUG, " allow in non-WPA/WPA2"); in wpa_supplicant_ssid_bss_match()
781 wpa_dbg(wpa_s, MSG_DEBUG, in wpa_supplicant_ssid_bss_match()
802 static int rate_match(struct wpa_supplicant *wpa_s, struct wpa_ssid *ssid, in rate_match() argument
813 modes = wpa_s->hw.modes; in rate_match()
823 for (i = 0; i < wpa_s->hw.num_modes; i++) { in rate_match()
861 wpa_dbg(wpa_s, MSG_DEBUG, in rate_match()
873 wpa_dbg(wpa_s, MSG_DEBUG, in rate_match()
883 if (wpa_s->conf->sae_pwe == 0 && in rate_match()
887 wpa_dbg(wpa_s, MSG_DEBUG, in rate_match()
890 if (wpa_s->ignore_sae_h2e_only) { in rate_match()
891 wpa_dbg(wpa_s, MSG_DEBUG, in rate_match()
917 wpa_dbg(wpa_s, MSG_DEBUG, in rate_match()
973 static void owe_trans_ssid(struct wpa_supplicant *wpa_s, struct wpa_bss *bss, in owe_trans_ssid() argument
998 wpa_dbg(wpa_s, MSG_DEBUG, "OWE: transition mode BSSID: " MACSTR in owe_trans_ssid()
1006 for (ssid = wpa_s->conf->ssid; ssid; ssid = ssid->next) { in owe_trans_ssid()
1007 if (wpas_network_disabled(wpa_s, ssid)) in owe_trans_ssid()
1013 wpa_dbg(wpa_s, MSG_DEBUG, in owe_trans_ssid()
1024 open_bss = wpa_bss_get_bssid_latest(wpa_s, bssid); in owe_trans_ssid()
1029 wpa_dbg(wpa_s, MSG_DEBUG, in owe_trans_ssid()
1037 wpa_dbg(wpa_s, MSG_DEBUG, in owe_trans_ssid()
1048 wpa_dbg(wpa_s, MSG_DEBUG, in owe_trans_ssid()
1057 wpa_dbg(wpa_s, MSG_DEBUG, "OWE: learned transition mode OWE SSID: %s", in owe_trans_ssid()
1066 int disabled_freq(struct wpa_supplicant *wpa_s, int freq) in disabled_freq() argument
1070 if (!wpa_s->hw.modes || !wpa_s->hw.num_modes) in disabled_freq()
1073 for (j = 0; j < wpa_s->hw.num_modes; j++) { in disabled_freq()
1074 struct hostapd_hw_modes *mode = &wpa_s->hw.modes[j]; in disabled_freq()
1088 static bool wpa_scan_res_ok(struct wpa_supplicant *wpa_s, struct wpa_ssid *ssid,
1095 static bool sae_pk_acceptable_bss_with_pk(struct wpa_supplicant *wpa_s, in sae_pk_acceptable_bss_with_pk() argument
1103 dl_list_for_each(bss, &wpa_s->bss, struct wpa_bss, list) { in sae_pk_acceptable_bss_with_pk()
1122 count = wpa_bssid_ignore_is_listed(wpa_s, bss->bssid); in sae_pk_acceptable_bss_with_pk()
1123 if (wpa_scan_res_ok(wpa_s, ssid, match_ssid, match_ssid_len, in sae_pk_acceptable_bss_with_pk()
1133 static bool wpa_scan_res_ok(struct wpa_supplicant *wpa_s, struct wpa_ssid *ssid, in wpa_scan_res_ok() argument
1167 if (wpas_network_disabled(wpa_s, ssid)) { in wpa_scan_res_ok()
1169 wpa_dbg(wpa_s, MSG_DEBUG, " skip - disabled"); in wpa_scan_res_ok()
1173 res = wpas_temp_disabled(wpa_s, ssid); in wpa_scan_res_ok()
1176 wpa_dbg(wpa_s, MSG_DEBUG, in wpa_scan_res_ok()
1185 wpa_dbg(wpa_s, MSG_DEBUG, in wpa_scan_res_ok()
1191 wpas_wps_ssid_wildcard_ok(wpa_s, ssid, bss)) in wpa_scan_res_ok()
1198 !wpas_wps_ssid_wildcard_ok(wpa_s, ssid, bss); in wpa_scan_res_ok()
1210 wpa_dbg(wpa_s, MSG_DEBUG, " skip - SSID mismatch"); in wpa_scan_res_ok()
1217 wpa_dbg(wpa_s, MSG_DEBUG, " skip - BSSID mismatch"); in wpa_scan_res_ok()
1226 wpa_dbg(wpa_s, MSG_DEBUG, in wpa_scan_res_ok()
1236 wpa_dbg(wpa_s, MSG_DEBUG, in wpa_scan_res_ok()
1241 if (!wpa_supplicant_ssid_bss_match(wpa_s, ssid, bss, debug_print)) in wpa_scan_res_ok()
1250 wpa_dbg(wpa_s, MSG_DEBUG, in wpa_scan_res_ok()
1258 wpa_dbg(wpa_s, MSG_DEBUG, in wpa_scan_res_ok()
1266 wpa_dbg(wpa_s, MSG_DEBUG, in wpa_scan_res_ok()
1273 wpa_dbg(wpa_s, MSG_DEBUG, " skip - privacy mismatch"); in wpa_scan_res_ok()
1280 wpa_dbg(wpa_s, MSG_DEBUG, in wpa_scan_res_ok()
1287 wpa_dbg(wpa_s, MSG_DEBUG, in wpa_scan_res_ok()
1295 wpa_dbg(wpa_s, MSG_DEBUG, in wpa_scan_res_ok()
1304 wpa_dbg(wpa_s, MSG_DEBUG, in wpa_scan_res_ok()
1310 if (!rate_match(wpa_s, ssid, bss, debug_print)) { in wpa_scan_res_ok()
1312 wpa_dbg(wpa_s, MSG_DEBUG, in wpa_scan_res_ok()
1318 if ((wpa_s->conf->sae_pwe == 1 || ssid->sae_password_id) && in wpa_scan_res_ok()
1319 wpa_s->conf->sae_pwe != 3 && wpa_key_mgmt_sae(ssid->key_mgmt) && in wpa_scan_res_ok()
1322 wpa_dbg(wpa_s, MSG_DEBUG, in wpa_scan_res_ok()
1332 wpa_dbg(wpa_s, MSG_DEBUG, in wpa_scan_res_ok()
1342 wpa_dbg(wpa_s, MSG_DEBUG, in wpa_scan_res_ok()
1353 wpa_dbg(wpa_s, MSG_DEBUG, " skip - no P2P IE seen"); in wpa_scan_res_ok()
1364 wpa_dbg(wpa_s, MSG_DEBUG, in wpa_scan_res_ok()
1371 wpa_dbg(wpa_s, MSG_DEBUG, in wpa_scan_res_ok()
1379 wpa_dbg(wpa_s, MSG_DEBUG, in wpa_scan_res_ok()
1394 if (os_reltime_before(&bss->last_update, &wpa_s->scan_min_time)) { in wpa_scan_res_ok()
1397 os_reltime_sub(&wpa_s->scan_min_time, &bss->last_update, &diff); in wpa_scan_res_ok()
1399 wpa_dbg(wpa_s, MSG_DEBUG, in wpa_scan_res_ok()
1407 if (wpa_s->ignore_assoc_disallow) in wpa_scan_res_ok()
1413 wpa_dbg(wpa_s, MSG_DEBUG, in wpa_scan_res_ok()
1419 if (wpa_is_bss_tmp_disallowed(wpa_s, bss)) { in wpa_scan_res_ok()
1421 wpa_dbg(wpa_s, MSG_DEBUG, in wpa_scan_res_ok()
1432 !wpa_sm_pmksa_exists(wpa_s->wpa, bss->bssid, ssid) && in wpa_scan_res_ok()
1436 wpa_dbg(wpa_s, MSG_DEBUG, in wpa_scan_res_ok()
1450 sae_pk_acceptable_bss_with_pk(wpa_s, bss, ssid, match_ssid, in wpa_scan_res_ok()
1453 wpa_dbg(wpa_s, MSG_DEBUG, in wpa_scan_res_ok()
1461 wpa_dbg(wpa_s, MSG_DEBUG, in wpa_scan_res_ok()
1471 struct wpa_ssid * wpa_scan_res_match(struct wpa_supplicant *wpa_s, in wpa_scan_res_match() argument
1494 wpa_dbg(wpa_s, MSG_DEBUG, "%d: " MACSTR in wpa_scan_res_match()
1508 bssid_ignore_count = wpa_bssid_ignore_is_listed(wpa_s, bss->bssid); in wpa_scan_res_match()
1511 if (wpa_supplicant_enabled_networks(wpa_s) == 1) { in wpa_scan_res_match()
1524 wpa_dbg(wpa_s, MSG_DEBUG, in wpa_scan_res_match()
1534 owe_trans_ssid(wpa_s, bss, &match_ssid, &match_ssid_len); in wpa_scan_res_match()
1538 wpa_dbg(wpa_s, MSG_DEBUG, " skip - SSID not known"); in wpa_scan_res_match()
1542 if (disallowed_bssid(wpa_s, bss->bssid)) { in wpa_scan_res_match()
1544 wpa_dbg(wpa_s, MSG_DEBUG, " skip - BSSID disallowed"); in wpa_scan_res_match()
1548 if (disallowed_ssid(wpa_s, match_ssid, match_ssid_len)) { in wpa_scan_res_match()
1550 wpa_dbg(wpa_s, MSG_DEBUG, " skip - SSID disallowed"); in wpa_scan_res_match()
1554 if (disabled_freq(wpa_s, bss->freq)) { in wpa_scan_res_match()
1556 wpa_dbg(wpa_s, MSG_DEBUG, " skip - channel disabled"); in wpa_scan_res_match()
1561 if (wpa_scan_res_ok(wpa_s, ssid, match_ssid, match_ssid_len, in wpa_scan_res_match()
1572 wpa_supplicant_select_bss(struct wpa_supplicant *wpa_s, in wpa_supplicant_select_bss() argument
1579 if (wpa_s->current_ssid) { in wpa_supplicant_select_bss()
1582 wpa_dbg(wpa_s, MSG_DEBUG, in wpa_supplicant_select_bss()
1584 for (i = 0; i < wpa_s->last_scan_res_used; i++) { in wpa_supplicant_select_bss()
1585 struct wpa_bss *bss = wpa_s->last_scan_res[i]; in wpa_supplicant_select_bss()
1587 ssid = wpa_scan_res_match(wpa_s, i, bss, group, in wpa_supplicant_select_bss()
1589 if (ssid != wpa_s->current_ssid) in wpa_supplicant_select_bss()
1591 wpa_dbg(wpa_s, MSG_DEBUG, "%u: " MACSTR in wpa_supplicant_select_bss()
1599 wpa_dbg(wpa_s, MSG_DEBUG, "Try to find BSS matching pre-selected network id=%d", in wpa_supplicant_select_bss()
1602 wpa_dbg(wpa_s, MSG_DEBUG, "Selecting BSS from priority group %d", in wpa_supplicant_select_bss()
1605 for (i = 0; i < wpa_s->last_scan_res_used; i++) { in wpa_supplicant_select_bss()
1606 struct wpa_bss *bss = wpa_s->last_scan_res[i]; in wpa_supplicant_select_bss()
1608 wpa_s->owe_transition_select = 1; in wpa_supplicant_select_bss()
1609 *selected_ssid = wpa_scan_res_match(wpa_s, i, bss, group, in wpa_supplicant_select_bss()
1611 wpa_s->owe_transition_select = 0; in wpa_supplicant_select_bss()
1614 wpa_dbg(wpa_s, MSG_DEBUG, " selected %sBSS " MACSTR in wpa_supplicant_select_bss()
1616 bss == wpa_s->current_bss ? "current ": "", in wpa_supplicant_select_bss()
1626 struct wpa_bss * wpa_supplicant_pick_network(struct wpa_supplicant *wpa_s, in wpa_supplicant_pick_network() argument
1634 if (wpa_s->last_scan_res == NULL || in wpa_supplicant_pick_network()
1635 wpa_s->last_scan_res_used == 0) in wpa_supplicant_pick_network()
1638 if (wpa_s->next_ssid) { in wpa_supplicant_pick_network()
1640 for (ssid = wpa_s->conf->ssid; ssid; ssid = ssid->next) { in wpa_supplicant_pick_network()
1641 if (ssid == wpa_s->next_ssid) in wpa_supplicant_pick_network()
1645 wpa_s->next_ssid = NULL; in wpa_supplicant_pick_network()
1649 for (prio = 0; prio < wpa_s->conf->num_prio; prio++) { in wpa_supplicant_pick_network()
1651 wpa_s->conf->pssid[prio]->priority) { in wpa_supplicant_pick_network()
1653 wpa_s, next_ssid, selected_ssid, 1); in wpa_supplicant_pick_network()
1658 wpa_s, wpa_s->conf->pssid[prio], in wpa_supplicant_pick_network()
1664 if (selected == NULL && wpa_s->bssid_ignore && in wpa_supplicant_pick_network()
1665 !wpa_s->countermeasures) { in wpa_supplicant_pick_network()
1666 wpa_dbg(wpa_s, MSG_DEBUG, in wpa_supplicant_pick_network()
1668 wpa_bssid_ignore_clear(wpa_s); in wpa_supplicant_pick_network()
1669 wpa_s->bssid_ignore_cleared = true; in wpa_supplicant_pick_network()
1679 wpa_dbg(wpa_s, MSG_DEBUG, in wpa_supplicant_pick_network()
1682 wpas_notify_network_request(wpa_s, ssid, in wpa_supplicant_pick_network()
1690 wpas_send_ctrl_req(wpa_s, ssid, field_name, txt); in wpa_supplicant_pick_network()
1699 static void wpa_supplicant_req_new_scan(struct wpa_supplicant *wpa_s, in wpa_supplicant_req_new_scan() argument
1702 if (!wpa_supplicant_enabled_networks(wpa_s)) { in wpa_supplicant_req_new_scan()
1708 wpa_dbg(wpa_s, MSG_DEBUG, "Short-circuit new scan request " in wpa_supplicant_req_new_scan()
1710 wpa_supplicant_set_state(wpa_s, WPA_INACTIVE); in wpa_supplicant_req_new_scan()
1714 wpa_s->scan_for_connection = 1; in wpa_supplicant_req_new_scan()
1715 wpa_supplicant_req_scan(wpa_s, timeout_sec, timeout_usec); in wpa_supplicant_req_new_scan()
1719 int wpa_supplicant_connect(struct wpa_supplicant *wpa_s, in wpa_supplicant_connect() argument
1723 if (wpas_wps_scan_pbc_overlap(wpa_s, selected, ssid)) { in wpa_supplicant_connect()
1724 wpa_msg(wpa_s, MSG_INFO, WPS_EVENT_OVERLAP in wpa_supplicant_connect()
1726 wpas_notify_wps_event_pbc_overlap(wpa_s); in wpa_supplicant_connect()
1728 if (wpa_s->p2p_group_interface == P2P_GROUP_INTERFACE_CLIENT || in wpa_supplicant_connect()
1729 wpa_s->p2p_in_provisioning) { in wpa_supplicant_connect()
1731 wpa_s, NULL); in wpa_supplicant_connect()
1737 wpas_wps_pbc_overlap(wpa_s); in wpa_supplicant_connect()
1738 wpas_wps_cancel(wpa_s); in wpa_supplicant_connect()
1743 wpa_msg(wpa_s, MSG_DEBUG, in wpa_supplicant_connect()
1747 wpa_s->reassociate, MAC2STR(selected->bssid), in wpa_supplicant_connect()
1748 MAC2STR(wpa_s->bssid), MAC2STR(wpa_s->pending_bssid), in wpa_supplicant_connect()
1749 wpa_supplicant_state_txt(wpa_s->wpa_state), in wpa_supplicant_connect()
1750 ssid, wpa_s->current_ssid); in wpa_supplicant_connect()
1757 if (wpa_s->reassociate || in wpa_supplicant_connect()
1758 (os_memcmp(selected->bssid, wpa_s->bssid, ETH_ALEN) != 0 && in wpa_supplicant_connect()
1759 ((wpa_s->wpa_state != WPA_ASSOCIATING && in wpa_supplicant_connect()
1760 wpa_s->wpa_state != WPA_AUTHENTICATING) || in wpa_supplicant_connect()
1761 (!is_zero_ether_addr(wpa_s->pending_bssid) && in wpa_supplicant_connect()
1762 os_memcmp(selected->bssid, wpa_s->pending_bssid, ETH_ALEN) != in wpa_supplicant_connect()
1764 (is_zero_ether_addr(wpa_s->pending_bssid) && in wpa_supplicant_connect()
1765 ssid != wpa_s->current_ssid)))) { in wpa_supplicant_connect()
1766 if (wpa_supplicant_scard_init(wpa_s, ssid)) { in wpa_supplicant_connect()
1767 wpa_supplicant_req_new_scan(wpa_s, 10, 0); in wpa_supplicant_connect()
1770 wpa_msg(wpa_s, MSG_DEBUG, "Request association with " MACSTR, in wpa_supplicant_connect()
1772 wpa_supplicant_associate(wpa_s, selected, ssid); in wpa_supplicant_connect()
1774 wpa_dbg(wpa_s, MSG_DEBUG, "Already associated or trying to " in wpa_supplicant_connect()
1783 wpa_supplicant_pick_new_network(struct wpa_supplicant *wpa_s) in wpa_supplicant_pick_new_network() argument
1788 for (prio = 0; prio < wpa_s->conf->num_prio; prio++) { in wpa_supplicant_pick_new_network()
1789 for (ssid = wpa_s->conf->pssid[prio]; ssid; ssid = ssid->pnext) in wpa_supplicant_pick_new_network()
1791 if (wpas_network_disabled(wpa_s, ssid)) in wpa_supplicant_pick_new_network()
1797 wpa_msg(wpa_s, MSG_INFO, in wpa_supplicant_pick_new_network()
1817 struct wpa_supplicant *wpa_s) in wpa_supplicant_rsn_preauth_scan_results() argument
1821 if (rsn_preauth_scan_results(wpa_s->wpa) < 0) in wpa_supplicant_rsn_preauth_scan_results()
1824 dl_list_for_each(bss, &wpa_s->bss, struct wpa_bss, list) { in wpa_supplicant_rsn_preauth_scan_results()
1835 rsn_preauth_scan_result(wpa_s->wpa, bss->bssid, ssid, rsn); in wpa_supplicant_rsn_preauth_scan_results()
1853 wpas_get_est_throughput_from_bss_snr(const struct wpa_supplicant *wpa_s, in wpas_get_est_throughput_from_bss_snr() argument
1860 return wpas_get_est_tpt(wpa_s, ies, ie_len, rate, snr); in wpas_get_est_throughput_from_bss_snr()
1864 int wpa_supplicant_need_to_roam_within_ess(struct wpa_supplicant *wpa_s, in wpa_supplicant_need_to_roam_within_ess() argument
1876 wpa_dbg(wpa_s, MSG_DEBUG, "Considering within-ESS reassociation"); in wpa_supplicant_need_to_roam_within_ess()
1877 wpa_dbg(wpa_s, MSG_DEBUG, "Current BSS: " MACSTR in wpa_supplicant_need_to_roam_within_ess()
1882 wpa_dbg(wpa_s, MSG_DEBUG, "Selected BSS: " MACSTR in wpa_supplicant_need_to_roam_within_ess()
1887 if (wpa_s->current_ssid->bssid_set && in wpa_supplicant_need_to_roam_within_ess()
1888 os_memcmp(selected->bssid, wpa_s->current_ssid->bssid, ETH_ALEN) == in wpa_supplicant_need_to_roam_within_ess()
1890 wpa_dbg(wpa_s, MSG_DEBUG, "Allow reassociation - selected BSS " in wpa_supplicant_need_to_roam_within_ess()
1914 if (wpa_drv_signal_poll(wpa_s, &si) == 0 && in wpa_supplicant_need_to_roam_within_ess()
1921 cur_est = wpas_get_est_throughput_from_bss_snr(wpa_s, in wpa_supplicant_need_to_roam_within_ess()
1924 wpa_dbg(wpa_s, MSG_DEBUG, in wpa_supplicant_need_to_roam_within_ess()
1930 wpa_dbg(wpa_s, MSG_DEBUG, in wpa_supplicant_need_to_roam_within_ess()
1939 wpa_dbg(wpa_s, MSG_DEBUG, "Skip roam - Current BSS has better " in wpa_supplicant_need_to_roam_within_ess()
1945 wpa_dbg(wpa_s, MSG_DEBUG, in wpa_supplicant_need_to_roam_within_ess()
1951 wpa_dbg(wpa_s, MSG_DEBUG, in wpa_supplicant_need_to_roam_within_ess()
1991 wpa_dbg(wpa_s, MSG_DEBUG, in wpa_supplicant_need_to_roam_within_ess()
1996 wpa_dbg(wpa_s, MSG_DEBUG, in wpa_supplicant_need_to_roam_within_ess()
2001 wpa_msg_ctrl(wpa_s, MSG_INFO, "%scur_bssid=" MACSTR in wpa_supplicant_need_to_roam_within_ess()
2015 static int wpa_supplicant_need_to_roam(struct wpa_supplicant *wpa_s, in wpa_supplicant_need_to_roam() argument
2021 if (wpa_s->reassociate) in wpa_supplicant_need_to_roam()
2023 if (wpa_s->wpa_state < WPA_ASSOCIATED) in wpa_supplicant_need_to_roam()
2025 if (wpa_s->current_ssid == NULL) in wpa_supplicant_need_to_roam()
2027 if (wpa_s->current_ssid != ssid) in wpa_supplicant_need_to_roam()
2030 if (wpas_driver_bss_selection(wpa_s)) in wpa_supplicant_need_to_roam()
2033 if (wpa_s->current_ssid->ssid) in wpa_supplicant_need_to_roam()
2034 current_bss = wpa_bss_get(wpa_s, wpa_s->bssid, in wpa_supplicant_need_to_roam()
2035 wpa_s->current_ssid->ssid, in wpa_supplicant_need_to_roam()
2036 wpa_s->current_ssid->ssid_len); in wpa_supplicant_need_to_roam()
2038 current_bss = wpa_bss_get_bssid(wpa_s, wpa_s->bssid); in wpa_supplicant_need_to_roam()
2050 return wpa_supplicant_need_to_roam_within_ess(wpa_s, current_bss, in wpa_supplicant_need_to_roam()
2067 static int _wpa_supplicant_event_scan_results(struct wpa_supplicant *wpa_s, in _wpa_supplicant_event_scan_results() argument
2079 if (wpa_s->ap_iface) in _wpa_supplicant_event_scan_results()
2083 wpa_supplicant_notify_scanning(wpa_s, 0); in _wpa_supplicant_event_scan_results()
2085 scan_res = wpa_supplicant_get_scan_results(wpa_s, in _wpa_supplicant_event_scan_results()
2089 if (wpa_s->conf->ap_scan == 2 || ap || in _wpa_supplicant_event_scan_results()
2090 wpa_s->scan_res_handler == scan_only_handler) in _wpa_supplicant_event_scan_results()
2096 if (wpa_s->scan_res_fail_handler) { in _wpa_supplicant_event_scan_results()
2097 void (*handler)(struct wpa_supplicant *wpa_s); in _wpa_supplicant_event_scan_results()
2099 handler = wpa_s->scan_res_fail_handler; in _wpa_supplicant_event_scan_results()
2100 wpa_s->scan_res_fail_handler = NULL; in _wpa_supplicant_event_scan_results()
2101 handler(wpa_s); in _wpa_supplicant_event_scan_results()
2103 wpa_dbg(wpa_s, MSG_DEBUG, in _wpa_supplicant_event_scan_results()
2105 wpa_supplicant_req_new_scan(wpa_s, 1, 0); in _wpa_supplicant_event_scan_results()
2133 if (own_request && wpa_s->scan_res_handler && in _wpa_supplicant_event_scan_results()
2135 void (*scan_res_handler)(struct wpa_supplicant *wpa_s, in _wpa_supplicant_event_scan_results()
2138 scan_res_handler = wpa_s->scan_res_handler; in _wpa_supplicant_event_scan_results()
2139 wpa_s->scan_res_handler = NULL; in _wpa_supplicant_event_scan_results()
2140 scan_res_handler(wpa_s, scan_res); in _wpa_supplicant_event_scan_results()
2145 wpa_dbg(wpa_s, MSG_DEBUG, "New scan results available (own=%u ext=%u)", in _wpa_supplicant_event_scan_results()
2146 wpa_s->own_scan_running, in _wpa_supplicant_event_scan_results()
2148 if (wpa_s->last_scan_req == MANUAL_SCAN_REQ && in _wpa_supplicant_event_scan_results()
2149 wpa_s->manual_scan_use_id && wpa_s->own_scan_running && in _wpa_supplicant_event_scan_results()
2151 wpa_msg_ctrl(wpa_s, MSG_INFO, WPA_EVENT_SCAN_RESULTS "id=%u", in _wpa_supplicant_event_scan_results()
2152 wpa_s->manual_scan_id); in _wpa_supplicant_event_scan_results()
2153 wpa_s->manual_scan_use_id = 0; in _wpa_supplicant_event_scan_results()
2155 wpa_msg_ctrl(wpa_s, MSG_INFO, WPA_EVENT_SCAN_RESULTS); in _wpa_supplicant_event_scan_results()
2157 wpas_notify_scan_results(wpa_s); in _wpa_supplicant_event_scan_results()
2159 wpas_notify_scan_done(wpa_s, 1); in _wpa_supplicant_event_scan_results()
2162 wpa_dbg(wpa_s, MSG_DEBUG, "Ignore scan results in AP mode"); in _wpa_supplicant_event_scan_results()
2164 if (wpa_s->ap_iface->scan_cb) in _wpa_supplicant_event_scan_results()
2165 wpa_s->ap_iface->scan_cb(wpa_s->ap_iface); in _wpa_supplicant_event_scan_results()
2171 …wpa_dbg(wpa_s, MSG_DEBUG, "Do not use results from externally requested scan operation for network… in _wpa_supplicant_event_scan_results()
2176 if (wnm_scan_process(wpa_s, 1) > 0) in _wpa_supplicant_event_scan_results()
2179 if (sme_proc_obss_scan(wpa_s, scan_res) > 0) in _wpa_supplicant_event_scan_results()
2183 wpas_beacon_rep_scan_process(wpa_s, scan_res, &data->scan_info) > 0) in _wpa_supplicant_event_scan_results()
2186 if ((wpa_s->conf->ap_scan == 2 && !wpas_wps_searching(wpa_s))) in _wpa_supplicant_event_scan_results()
2189 if (autoscan_notify_scan(wpa_s, scan_res)) in _wpa_supplicant_event_scan_results()
2192 if (wpa_s->disconnected) { in _wpa_supplicant_event_scan_results()
2193 wpa_supplicant_set_state(wpa_s, WPA_DISCONNECTED); in _wpa_supplicant_event_scan_results()
2197 if (!wpas_driver_bss_selection(wpa_s) && in _wpa_supplicant_event_scan_results()
2198 bgscan_notify_scan(wpa_s, scan_res) == 1) in _wpa_supplicant_event_scan_results()
2201 wpas_wps_update_ap_info(wpa_s, scan_res); in _wpa_supplicant_event_scan_results()
2203 if (wpa_s->wpa_state >= WPA_AUTHENTICATING && in _wpa_supplicant_event_scan_results()
2204 wpa_s->wpa_state < WPA_COMPLETED) in _wpa_supplicant_event_scan_results()
2209 if (own_request && wpa_s->scan_work) { in _wpa_supplicant_event_scan_results()
2210 struct wpa_radio_work *work = wpa_s->scan_work; in _wpa_supplicant_event_scan_results()
2211 wpa_s->scan_work = NULL; in _wpa_supplicant_event_scan_results()
2215 os_free(wpa_s->last_scan_freqs); in _wpa_supplicant_event_scan_results()
2216 wpa_s->last_scan_freqs = NULL; in _wpa_supplicant_event_scan_results()
2217 wpa_s->num_last_scan_freqs = 0; in _wpa_supplicant_event_scan_results()
2220 wpa_s->last_scan_freqs = os_malloc(sizeof(int) * in _wpa_supplicant_event_scan_results()
2222 if (wpa_s->last_scan_freqs) { in _wpa_supplicant_event_scan_results()
2223 os_memcpy(wpa_s->last_scan_freqs, in _wpa_supplicant_event_scan_results()
2226 wpa_s->num_last_scan_freqs = data->scan_info.num_freqs; in _wpa_supplicant_event_scan_results()
2230 return wpas_select_network_from_last_scan(wpa_s, 1, own_request); in _wpa_supplicant_event_scan_results()
2234 if (own_request && wpa_s->scan_work) { in _wpa_supplicant_event_scan_results()
2235 struct wpa_radio_work *work = wpa_s->scan_work; in _wpa_supplicant_event_scan_results()
2236 wpa_s->scan_work = NULL; in _wpa_supplicant_event_scan_results()
2243 static int wpas_select_network_from_last_scan(struct wpa_supplicant *wpa_s, in wpas_select_network_from_last_scan() argument
2248 int time_to_reenable = wpas_reenabled_network_time(wpa_s); in wpas_select_network_from_last_scan()
2251 wpa_dbg(wpa_s, MSG_DEBUG, in wpas_select_network_from_last_scan()
2254 eloop_cancel_timeout(wpas_network_reenabled, wpa_s, NULL); in wpas_select_network_from_last_scan()
2256 wpas_network_reenabled, wpa_s, NULL); in wpas_select_network_from_last_scan()
2260 if (wpa_s->p2p_mgmt) in wpas_select_network_from_last_scan()
2263 wpa_s->owe_transition_search = 0; in wpas_select_network_from_last_scan()
2264 selected = wpa_supplicant_pick_network(wpa_s, &ssid); in wpas_select_network_from_last_scan()
2267 if (wpa_s->ifmsh) { in wpas_select_network_from_last_scan()
2268 wpa_msg(wpa_s, MSG_INFO, in wpas_select_network_from_last_scan()
2276 skip = !wpa_supplicant_need_to_roam(wpa_s, selected, ssid); in wpas_select_network_from_last_scan()
2279 wpa_supplicant_rsn_preauth_scan_results(wpa_s); in wpas_select_network_from_last_scan()
2283 wpa_s->suitable_network++; in wpas_select_network_from_last_scan()
2285 if (ssid != wpa_s->current_ssid && in wpas_select_network_from_last_scan()
2286 wpa_s->wpa_state >= WPA_AUTHENTICATING) { in wpas_select_network_from_last_scan()
2287 wpa_s->own_disconnect_req = 1; in wpas_select_network_from_last_scan()
2289 wpa_s, WLAN_REASON_DEAUTH_LEAVING); in wpas_select_network_from_last_scan()
2292 if (wpa_supplicant_connect(wpa_s, selected, ssid) < 0) { in wpas_select_network_from_last_scan()
2293 wpa_dbg(wpa_s, MSG_DEBUG, "Connect failed"); in wpas_select_network_from_last_scan()
2297 wpa_supplicant_rsn_preauth_scan_results(wpa_s); in wpas_select_network_from_last_scan()
2305 wpa_s->no_suitable_network++; in wpas_select_network_from_last_scan()
2306 wpa_dbg(wpa_s, MSG_DEBUG, "No suitable network found"); in wpas_select_network_from_last_scan()
2307 ssid = wpa_supplicant_pick_new_network(wpa_s); in wpas_select_network_from_last_scan()
2309 wpa_dbg(wpa_s, MSG_DEBUG, "Setup a new network"); in wpas_select_network_from_last_scan()
2310 wpa_supplicant_associate(wpa_s, NULL, ssid); in wpas_select_network_from_last_scan()
2312 wpa_supplicant_rsn_preauth_scan_results(wpa_s); in wpas_select_network_from_last_scan()
2319 int timeout_sec = wpa_s->scan_interval; in wpas_select_network_from_last_scan()
2324 res = wpas_p2p_scan_no_go_seen(wpa_s); in wpas_select_network_from_last_scan()
2330 if (wpa_s->p2p_in_provisioning || in wpas_select_network_from_last_scan()
2331 wpa_s->show_group_started || in wpas_select_network_from_last_scan()
2332 wpa_s->p2p_in_invitation) { in wpas_select_network_from_last_scan()
2340 wpa_supplicant_req_new_scan(wpa_s, timeout_sec, in wpas_select_network_from_last_scan()
2346 if (wpa_s->conf->auto_interworking && in wpas_select_network_from_last_scan()
2347 wpa_s->conf->interworking && in wpas_select_network_from_last_scan()
2348 wpa_s->conf->cred) { in wpas_select_network_from_last_scan()
2349 wpa_dbg(wpa_s, MSG_DEBUG, "Interworking: " in wpas_select_network_from_last_scan()
2352 wpa_s->network_select = 1; in wpas_select_network_from_last_scan()
2353 wpa_s->auto_network_select = 1; in wpas_select_network_from_last_scan()
2354 interworking_start_fetch_anqp(wpa_s); in wpas_select_network_from_last_scan()
2359 if (wpa_s->after_wps > 0 || wpas_wps_searching(wpa_s)) { in wpas_select_network_from_last_scan()
2360 wpa_dbg(wpa_s, MSG_DEBUG, "Use shorter wait during WPS processing"); in wpas_select_network_from_last_scan()
2363 wpa_supplicant_req_new_scan(wpa_s, timeout_sec, in wpas_select_network_from_last_scan()
2369 if (wpa_s->owe_transition_search) { in wpas_select_network_from_last_scan()
2370 wpa_dbg(wpa_s, MSG_DEBUG, in wpas_select_network_from_last_scan()
2374 wpa_supplicant_req_new_scan(wpa_s, timeout_sec, in wpas_select_network_from_last_scan()
2379 if (wpa_supplicant_req_sched_scan(wpa_s)) in wpas_select_network_from_last_scan()
2380 wpa_supplicant_req_new_scan(wpa_s, timeout_sec, in wpas_select_network_from_last_scan()
2383 wpa_msg_ctrl(wpa_s, MSG_INFO, in wpas_select_network_from_last_scan()
2385 wpas_notify_network_not_found(wpa_s); in wpas_select_network_from_last_scan()
2392 static int wpa_supplicant_event_scan_results(struct wpa_supplicant *wpa_s, in wpa_supplicant_event_scan_results() argument
2398 res = _wpa_supplicant_event_scan_results(wpa_s, data, 1, 0); in wpa_supplicant_event_scan_results()
2422 dl_list_for_each(ifs, &wpa_s->radio->ifaces, struct wpa_supplicant, in wpa_supplicant_event_scan_results()
2424 if (ifs != wpa_s) { in wpa_supplicant_event_scan_results()
2440 int wpa_supplicant_fast_associate(struct wpa_supplicant *wpa_s) in wpa_supplicant_fast_associate() argument
2447 wpa_s->ignore_post_flush_scan_res = 0; in wpa_supplicant_fast_associate()
2449 if (wpa_s->last_scan_res_used == 0) in wpa_supplicant_fast_associate()
2453 if (os_reltime_expired(&now, &wpa_s->last_scan, in wpa_supplicant_fast_associate()
2454 wpa_s->conf->scan_res_valid_for_connect)) { in wpa_supplicant_fast_associate()
2459 return wpas_select_network_from_last_scan(wpa_s, 0, 1); in wpa_supplicant_fast_associate()
2467 struct wpa_supplicant *wpa_s = eloop_ctx; in wnm_bss_keep_alive() local
2469 if (wpa_s->wpa_state < WPA_ASSOCIATED) in wnm_bss_keep_alive()
2472 if (!wpa_s->no_keep_alive) { in wnm_bss_keep_alive()
2474 MAC2STR(wpa_s->bssid)); in wnm_bss_keep_alive()
2478 if (wpa_s->l2) in wnm_bss_keep_alive()
2479 l2_packet_send(wpa_s->l2, wpa_s->bssid, 0x0800, in wnm_bss_keep_alive()
2484 if (wpa_s->sme.bss_max_idle_period) { in wnm_bss_keep_alive()
2486 msec = wpa_s->sme.bss_max_idle_period * 1024; /* times 1000 */ in wnm_bss_keep_alive()
2490 wnm_bss_keep_alive, wpa_s, NULL); in wnm_bss_keep_alive()
2496 static void wnm_process_assoc_resp(struct wpa_supplicant *wpa_s, in wnm_process_assoc_resp() argument
2510 wpa_s->sme.bss_max_idle_period = in wnm_process_assoc_resp()
2513 "TU)%s", wpa_s->sme.bss_max_idle_period, in wnm_process_assoc_resp()
2516 if (wpa_s->sme.bss_max_idle_period == 0) in wnm_process_assoc_resp()
2517 wpa_s->sme.bss_max_idle_period = 1; in wnm_process_assoc_resp()
2518 if (wpa_s->drv_flags & WPA_DRIVER_FLAGS_SME) { in wnm_process_assoc_resp()
2519 eloop_cancel_timeout(wnm_bss_keep_alive, wpa_s, NULL); in wnm_process_assoc_resp()
2521 msec = wpa_s->sme.bss_max_idle_period * 1024; in wnm_process_assoc_resp()
2525 wnm_bss_keep_alive, wpa_s, in wnm_process_assoc_resp()
2535 void wnm_bss_keep_alive_deinit(struct wpa_supplicant *wpa_s) in wnm_bss_keep_alive_deinit() argument
2538 eloop_cancel_timeout(wnm_bss_keep_alive, wpa_s, NULL); in wnm_bss_keep_alive_deinit()
2545 static int wpas_qos_map_set(struct wpa_supplicant *wpa_s, const u8 *qos_map, in wpas_qos_map_set() argument
2551 res = wpa_drv_set_qos_map(wpa_s, qos_map, len); in wpas_qos_map_set()
2560 static void interworking_process_assoc_resp(struct wpa_supplicant *wpa_s, in interworking_process_assoc_resp() argument
2572 wpas_qos_map_set(wpa_s, elems.qos_map_set, in interworking_process_assoc_resp()
2580 static void multi_ap_process_assoc_resp(struct wpa_supplicant *wpa_s, in multi_ap_process_assoc_resp() argument
2587 wpa_s->multi_ap_ie = 0; in multi_ap_process_assoc_resp()
2601 wpa_s->multi_ap_backhaul = !!(map_sub_elem[2] & MULTI_AP_BACKHAUL_BSS); in multi_ap_process_assoc_resp()
2602 wpa_s->multi_ap_fronthaul = !!(map_sub_elem[2] & in multi_ap_process_assoc_resp()
2604 wpa_s->multi_ap_ie = 1; in multi_ap_process_assoc_resp()
2608 static void multi_ap_set_4addr_mode(struct wpa_supplicant *wpa_s) in multi_ap_set_4addr_mode() argument
2610 if (!wpa_s->current_ssid || in multi_ap_set_4addr_mode()
2611 !wpa_s->current_ssid->multi_ap_backhaul_sta) in multi_ap_set_4addr_mode()
2614 if (!wpa_s->multi_ap_ie) { in multi_ap_set_4addr_mode()
2620 if (!wpa_s->multi_ap_backhaul) { in multi_ap_set_4addr_mode()
2621 if (wpa_s->multi_ap_fronthaul && in multi_ap_set_4addr_mode()
2622 wpa_s->current_ssid->key_mgmt & WPA_KEY_MGMT_WPS) { in multi_ap_set_4addr_mode()
2632 if (wpa_drv_set_4addr_mode(wpa_s, 1) < 0) { in multi_ap_set_4addr_mode()
2636 wpa_s->enabled_4addr_mode = 1; in multi_ap_set_4addr_mode()
2640 wpa_supplicant_deauthenticate(wpa_s, WLAN_REASON_DEAUTH_LEAVING); in multi_ap_set_4addr_mode()
2645 static int wpas_fst_update_mbie(struct wpa_supplicant *wpa_s, in wpas_fst_update_mbie() argument
2650 if (!ie || !ie_len || !wpa_s->fst) in wpas_fst_update_mbie()
2678 wpabuf_free(wpa_s->received_mb_ies); in wpas_fst_update_mbie()
2679 wpa_s->received_mb_ies = mb_ies_by_info(&mb_ies); in wpas_fst_update_mbie()
2688 static int wpa_supplicant_event_associnfo(struct wpa_supplicant *wpa_s, in wpa_supplicant_event_associnfo() argument
2696 wpa_dbg(wpa_s, MSG_DEBUG, "Association info event"); in wpa_supplicant_event_associnfo()
2697 bssid_known = wpa_drv_get_bssid(wpa_s, bssid) == 0; in wpa_supplicant_event_associnfo()
2705 wpa_tdls_assoc_resp_ies(wpa_s->wpa, data->assoc_info.resp_ies, in wpa_supplicant_event_associnfo()
2709 wnm_process_assoc_resp(wpa_s, data->assoc_info.resp_ies, in wpa_supplicant_event_associnfo()
2713 interworking_process_assoc_resp(wpa_s, data->assoc_info.resp_ies, in wpa_supplicant_event_associnfo()
2716 if (wpa_s->hw_capab == CAPAB_VHT && in wpa_supplicant_event_associnfo()
2719 wpa_s->ieee80211ac = 1; in wpa_supplicant_event_associnfo()
2721 multi_ap_process_assoc_resp(wpa_s, data->assoc_info.resp_ies, in wpa_supplicant_event_associnfo()
2729 wpa_dbg(wpa_s, MSG_DEBUG, "freq=%u MHz", in wpa_supplicant_event_associnfo()
2732 wpa_s->connection_set = 0; in wpa_supplicant_event_associnfo()
2742 wpa_s->connection_set = 1; in wpa_supplicant_event_associnfo()
2743 wpa_s->connection_11b_only = supp_rates_11b_only(&req_elems) || in wpa_supplicant_event_associnfo()
2745 wpa_s->connection_ht = req_elems.ht_capabilities && in wpa_supplicant_event_associnfo()
2750 wpa_s->connection_vht = req_elems.vht_capabilities && in wpa_supplicant_event_associnfo()
2755 wpa_s->connection_he = req_elems.he_capabilities && in wpa_supplicant_event_associnfo()
2760 wpa_s->connection_max_nss_rx = (max_nss_rx_resp > max_nss_rx_req) ? in wpa_supplicant_event_associnfo()
2764 wpa_s->connection_max_nss_tx = (max_nss_tx_resp > max_nss_tx_req) ? in wpa_supplicant_event_associnfo()
2771 if (wpa_s->connection_vht || wpa_s->connection_he) { in wpa_supplicant_event_associnfo()
2772 wpa_s->connection_channel_bandwidth = in wpa_supplicant_event_associnfo()
2775 } else if (wpa_s->connection_ht) { in wpa_supplicant_event_associnfo()
2776 wpa_s->connection_channel_bandwidth = (ap_operation_chan_width in wpa_supplicant_event_associnfo()
2779 wpa_s->connection_channel_bandwidth = CHAN_WIDTH_20; in wpa_supplicant_event_associnfo()
2801 if (wpa_sm_set_assoc_wpa_ie(wpa_s->wpa, p, len)) in wpa_supplicant_event_associnfo()
2804 wpa_find_assoc_pmkid(wpa_s); in wpa_supplicant_event_associnfo()
2807 if (wpa_sm_set_assoc_rsnxe(wpa_s->wpa, p, len)) in wpa_supplicant_event_associnfo()
2815 wpa_sm_set_assoc_wpa_ie(wpa_s->wpa, NULL, 0); in wpa_supplicant_event_associnfo()
2817 wpa_sm_set_assoc_rsnxe(wpa_s->wpa, NULL, 0); in wpa_supplicant_event_associnfo()
2821 if ((wpa_s->sme.auth_alg == WPA_AUTH_ALG_FILS || in wpa_supplicant_event_associnfo()
2822 wpa_s->sme.auth_alg == WPA_AUTH_ALG_FILS_SK_PFS) && in wpa_supplicant_event_associnfo()
2824 fils_process_assoc_resp(wpa_s->wpa, in wpa_supplicant_event_associnfo()
2827 wpa_supplicant_deauthenticate(wpa_s, WLAN_REASON_UNSPECIFIED); in wpa_supplicant_event_associnfo()
2833 if (wpa_s->auth_alg == WPA_AUTH_ALG_FILS && in wpa_supplicant_event_associnfo()
2834 !(wpa_s->drv_flags & WPA_DRIVER_FLAGS_SME)) in wpa_supplicant_event_associnfo()
2835 wpa_sm_set_reset_fils_completed(wpa_s->wpa, 1); in wpa_supplicant_event_associnfo()
2839 if (wpa_s->key_mgmt == WPA_KEY_MGMT_OWE && in wpa_supplicant_event_associnfo()
2841 owe_process_assoc_resp(wpa_s->wpa, bssid, in wpa_supplicant_event_associnfo()
2844 wpa_supplicant_deauthenticate(wpa_s, WLAN_REASON_UNSPECIFIED); in wpa_supplicant_event_associnfo()
2850 wpa_sm_set_dpp_z(wpa_s->wpa, NULL); in wpa_supplicant_event_associnfo()
2851 if (DPP_VERSION > 1 && wpa_s->key_mgmt == WPA_KEY_MGMT_DPP && in wpa_supplicant_event_associnfo()
2852 wpa_s->dpp_pfs) { in wpa_supplicant_event_associnfo()
2860 if (dpp_pfs_process(wpa_s->dpp_pfs, elems.owe_dh, in wpa_supplicant_event_associnfo()
2862 wpa_supplicant_deauthenticate(wpa_s, in wpa_supplicant_event_associnfo()
2867 wpa_sm_set_dpp_z(wpa_s->wpa, wpa_s->dpp_pfs->secret); in wpa_supplicant_event_associnfo()
2874 if (wpa_s->sme.auth_alg == WPA_AUTH_ALG_FT) { in wpa_supplicant_event_associnfo()
2876 wpa_ft_validate_reassoc_resp(wpa_s->wpa, in wpa_supplicant_event_associnfo()
2880 wpa_dbg(wpa_s, MSG_DEBUG, "FT: Validation of " in wpa_supplicant_event_associnfo()
2883 wpa_s, WLAN_REASON_INVALID_IE); in wpa_supplicant_event_associnfo()
2892 if (p && wpa_s->current_ssid && in wpa_supplicant_event_associnfo()
2893 wpa_s->current_ssid->key_mgmt == WPA_KEY_MGMT_WPS) { in wpa_supplicant_event_associnfo()
2897 wpa_msg(wpa_s, MSG_INFO, "WPS-STRICT: AP did not " in wpa_supplicant_event_associnfo()
2905 wpa_s, WLAN_REASON_INVALID_IE); in wpa_supplicant_event_associnfo()
2922 wpa_s->sme.ft_used = 1; in wpa_supplicant_event_associnfo()
2923 os_memcpy(wpa_s->sme.mobility_domain, p + 2, in wpa_supplicant_event_associnfo()
2932 if (((wpa_s->key_mgmt == WPA_KEY_MGMT_FT_PSK) || in wpa_supplicant_event_associnfo()
2933 (wpa_s->key_mgmt == WPA_KEY_MGMT_FT_IEEE8021X) || in wpa_supplicant_event_associnfo()
2934 (wpa_s->key_mgmt == WPA_KEY_MGMT_FT_SAE) || in wpa_supplicant_event_associnfo()
2935 (wpa_s->key_mgmt == WPA_KEY_MGMT_FT_IEEE8021X_SHA384)) && in wpa_supplicant_event_associnfo()
2936 wpa_ft_is_completed(wpa_s->wpa)) { in wpa_supplicant_event_associnfo()
2942 if (!(wpa_s->drv_flags & WPA_DRIVER_FLAGS_SME) && in wpa_supplicant_event_associnfo()
2943 wpa_ft_is_completed(wpa_s->wpa)) { in wpa_supplicant_event_associnfo()
2945 wpa_ft_validate_reassoc_resp(wpa_s->wpa, in wpa_supplicant_event_associnfo()
2949 wpa_dbg(wpa_s, MSG_DEBUG, "FT: Validation of " in wpa_supplicant_event_associnfo()
2952 wpa_s, WLAN_REASON_INVALID_IE); in wpa_supplicant_event_associnfo()
2955 wpa_dbg(wpa_s, MSG_DEBUG, "FT: Reassociation Response done"); in wpa_supplicant_event_associnfo()
2958 wpa_sm_set_ft_params(wpa_s->wpa, data->assoc_info.resp_ies, in wpa_supplicant_event_associnfo()
2963 wpas_handle_assoc_resp_mscs(wpa_s, bssid, in wpa_supplicant_event_associnfo()
2985 wpa_sm_set_ap_wpa_ie(wpa_s->wpa, p, len); in wpa_supplicant_event_associnfo()
2991 wpa_sm_set_ap_rsn_ie(wpa_s->wpa, p, len); in wpa_supplicant_event_associnfo()
2995 wpa_sm_set_ap_rsnxe(wpa_s->wpa, p, len); in wpa_supplicant_event_associnfo()
3002 wpa_sm_set_ap_wpa_ie(wpa_s->wpa, NULL, 0); in wpa_supplicant_event_associnfo()
3004 wpa_sm_set_ap_rsn_ie(wpa_s->wpa, NULL, 0); in wpa_supplicant_event_associnfo()
3005 wpa_sm_set_ap_rsnxe(wpa_s->wpa, NULL, 0); in wpa_supplicant_event_associnfo()
3008 wpa_s->ap_ies_from_associnfo = 1; in wpa_supplicant_event_associnfo()
3010 if (wpa_s->assoc_freq && data->assoc_info.freq && in wpa_supplicant_event_associnfo()
3011 wpa_s->assoc_freq != data->assoc_info.freq) { in wpa_supplicant_event_associnfo()
3014 wpa_s->assoc_freq, data->assoc_info.freq); in wpa_supplicant_event_associnfo()
3015 wpa_supplicant_update_scan_results(wpa_s); in wpa_supplicant_event_associnfo()
3018 wpa_s->assoc_freq = data->assoc_info.freq; in wpa_supplicant_event_associnfo()
3024 static int wpa_supplicant_assoc_update_ie(struct wpa_supplicant *wpa_s) in wpa_supplicant_assoc_update_ie() argument
3028 if (!wpa_s->current_bss || !wpa_s->current_ssid) in wpa_supplicant_assoc_update_ie()
3031 if (!wpa_key_mgmt_wpa_any(wpa_s->current_ssid->key_mgmt)) in wpa_supplicant_assoc_update_ie()
3034 bss_wpa = wpa_bss_get_vendor_ie(wpa_s->current_bss, in wpa_supplicant_assoc_update_ie()
3036 bss_rsn = wpa_bss_get_ie(wpa_s->current_bss, WLAN_EID_RSN); in wpa_supplicant_assoc_update_ie()
3037 bss_rsnx = wpa_bss_get_ie(wpa_s->current_bss, WLAN_EID_RSNX); in wpa_supplicant_assoc_update_ie()
3039 if (wpa_sm_set_ap_wpa_ie(wpa_s->wpa, bss_wpa, in wpa_supplicant_assoc_update_ie()
3041 wpa_sm_set_ap_rsn_ie(wpa_s->wpa, bss_rsn, in wpa_supplicant_assoc_update_ie()
3043 wpa_sm_set_ap_rsnxe(wpa_s->wpa, bss_rsnx, in wpa_supplicant_assoc_update_ie()
3051 static void wpas_fst_update_mb_assoc(struct wpa_supplicant *wpa_s, in wpas_fst_update_mb_assoc() argument
3056 struct wpa_bss *bss = wpa_s->current_bss; in wpas_fst_update_mb_assoc()
3059 wpabuf_free(wpa_s->received_mb_ies); in wpas_fst_update_mb_assoc()
3060 wpa_s->received_mb_ies = NULL; in wpas_fst_update_mb_assoc()
3063 !wpas_fst_update_mbie(wpa_s, ai->resp_ies, ai->resp_ies_len)) { in wpas_fst_update_mb_assoc()
3070 !wpas_fst_update_mbie(wpa_s, ai->beacon_ies, ai->beacon_ies_len)) { in wpas_fst_update_mb_assoc()
3082 if (!wpas_fst_update_mbie(wpa_s, ieprb, bss->ie_len)) in wpas_fst_update_mb_assoc()
3084 else if (!wpas_fst_update_mbie(wpa_s, iebcn, bss->beacon_ie_len)) in wpas_fst_update_mb_assoc()
3090 static void wpa_supplicant_event_assoc(struct wpa_supplicant *wpa_s, in wpa_supplicant_event_assoc() argument
3104 if (wpa_s->ap_iface) { in wpa_supplicant_event_assoc()
3107 hostapd_notif_assoc(wpa_s->ap_iface->bss[0], in wpa_supplicant_event_assoc()
3116 eloop_cancel_timeout(wpas_network_reenabled, wpa_s, NULL); in wpa_supplicant_event_assoc()
3117 wpa_s->own_reconnect_req = 0; in wpa_supplicant_event_assoc()
3120 if (!(wpa_sm_parse_own_wpa_ie(wpa_s->wpa, &ie) < 0)) { in wpa_supplicant_event_assoc()
3124 int use_sha384 = wpa_key_mgmt_sha384(wpa_s->wpa->key_mgmt); in wpa_supplicant_event_assoc()
3125 if (wpa_key_mgmt_ft(wpa_s->key_mgmt) && (wpa_s->key_mgmt == ie.key_mgmt)) { in wpa_supplicant_event_assoc()
3132 wpa_set_ft_completed(wpa_s->wpa); in wpa_supplicant_event_assoc()
3133 wpa_dbg(wpa_s, MSG_DEBUG, "Assume FT reassoc completed by the driver"); in wpa_supplicant_event_assoc()
3140 ft_completed = wpa_ft_is_completed(wpa_s->wpa); in wpa_supplicant_event_assoc()
3141 if (data && wpa_supplicant_event_associnfo(wpa_s, data) < 0) in wpa_supplicant_event_assoc()
3149 ft_completed = wpa_fils_is_completed(wpa_s->wpa); in wpa_supplicant_event_assoc()
3151 if (wpa_drv_get_bssid(wpa_s, bssid) < 0) { in wpa_supplicant_event_assoc()
3152 wpa_dbg(wpa_s, MSG_ERROR, "Failed to get BSSID"); in wpa_supplicant_event_assoc()
3154 wpa_s, WLAN_REASON_DEAUTH_LEAVING); in wpa_supplicant_event_assoc()
3160 if (is_zero_ether_addr(wpa_s->bssid) && in wpa_supplicant_event_assoc()
3161 wpa_key_mgmt_wpa_psk(wpa_s->key_mgmt)) { in wpa_supplicant_event_assoc()
3163 wpa_dbg(wpa_s, MSG_DEBUG, "Pass the PMK to the driver"); in wpa_supplicant_event_assoc()
3164 wpa_sm_install_pmk(wpa_s->wpa); in wpa_supplicant_event_assoc()
3167 wpa_supplicant_set_state(wpa_s, WPA_ASSOCIATED); in wpa_supplicant_event_assoc()
3168 if (os_memcmp(bssid, wpa_s->bssid, ETH_ALEN) != 0) { in wpa_supplicant_event_assoc()
3169 if (os_reltime_initialized(&wpa_s->session_start)) { in wpa_supplicant_event_assoc()
3170 os_reltime_age(&wpa_s->session_start, in wpa_supplicant_event_assoc()
3171 &wpa_s->session_length); in wpa_supplicant_event_assoc()
3172 wpa_s->session_start.sec = 0; in wpa_supplicant_event_assoc()
3173 wpa_s->session_start.usec = 0; in wpa_supplicant_event_assoc()
3174 wpas_notify_session_length(wpa_s); in wpa_supplicant_event_assoc()
3176 wpas_notify_auth_changed(wpa_s); in wpa_supplicant_event_assoc()
3177 os_get_reltime(&wpa_s->session_start); in wpa_supplicant_event_assoc()
3179 wpa_dbg(wpa_s, MSG_DEBUG, "Associated to a new BSS: BSSID=" in wpa_supplicant_event_assoc()
3183 os_memcpy(wpa_s->bssid, bssid, ETH_ALEN); in wpa_supplicant_event_assoc()
3184 os_memset(wpa_s->pending_bssid, 0, ETH_ALEN); in wpa_supplicant_event_assoc()
3185 wpas_notify_bssid_changed(wpa_s); in wpa_supplicant_event_assoc()
3187 if (wpa_supplicant_dynamic_keys(wpa_s) && !ft_completed) { in wpa_supplicant_event_assoc()
3188 wpa_clear_keys(wpa_s, bssid); in wpa_supplicant_event_assoc()
3190 if (wpa_supplicant_select_config(wpa_s) < 0) { in wpa_supplicant_event_assoc()
3192 wpa_s, WLAN_REASON_DEAUTH_LEAVING); in wpa_supplicant_event_assoc()
3197 multi_ap_set_4addr_mode(wpa_s); in wpa_supplicant_event_assoc()
3199 if (wpa_s->conf->ap_scan == 1 && in wpa_supplicant_event_assoc()
3200 wpa_s->drv_flags & WPA_DRIVER_FLAGS_BSS_SELECTION) { in wpa_supplicant_event_assoc()
3201 if (wpa_supplicant_assoc_update_ie(wpa_s) < 0 && new_bss) in wpa_supplicant_event_assoc()
3202 wpa_msg(wpa_s, MSG_WARNING, in wpa_supplicant_event_assoc()
3206 wpas_fst_update_mb_assoc(wpa_s, data); in wpa_supplicant_event_assoc()
3209 os_memcpy(wpa_s->sme.prev_bssid, bssid, ETH_ALEN); in wpa_supplicant_event_assoc()
3210 wpa_s->sme.prev_bssid_set = 1; in wpa_supplicant_event_assoc()
3211 wpa_s->sme.last_unprot_disconnect.sec = 0; in wpa_supplicant_event_assoc()
3214 wpa_msg(wpa_s, MSG_INFO, "Associated with " MACSTR, MAC2STR(bssid)); in wpa_supplicant_event_assoc()
3215 if (wpa_s->current_ssid) { in wpa_supplicant_event_assoc()
3220 wpa_supplicant_scard_init(wpa_s, wpa_s->current_ssid); in wpa_supplicant_event_assoc()
3222 wpa_sm_notify_assoc(wpa_s->wpa, bssid); in wpa_supplicant_event_assoc()
3223 if (wpa_s->l2) in wpa_supplicant_event_assoc()
3224 l2_packet_notify_auth_start(wpa_s->l2); in wpa_supplicant_event_assoc()
3237 eapol_sm_notify_portEnabled(wpa_s->eapol, false); in wpa_supplicant_event_assoc()
3238 eapol_sm_notify_portValid(wpa_s->eapol, false); in wpa_supplicant_event_assoc()
3240 if (wpa_key_mgmt_wpa_psk(wpa_s->key_mgmt) || in wpa_supplicant_event_assoc()
3241 wpa_s->key_mgmt == WPA_KEY_MGMT_DPP || in wpa_supplicant_event_assoc()
3242 wpa_s->key_mgmt == WPA_KEY_MGMT_OWE || ft_completed || in wpa_supplicant_event_assoc()
3243 already_authorized || wpa_s->drv_authorized_port) in wpa_supplicant_event_assoc()
3244 eapol_sm_notify_eap_success(wpa_s->eapol, false); in wpa_supplicant_event_assoc()
3246 eapol_sm_notify_portEnabled(wpa_s->eapol, true); in wpa_supplicant_event_assoc()
3247 wpa_s->eapol_received = 0; in wpa_supplicant_event_assoc()
3248 if (wpa_s->key_mgmt == WPA_KEY_MGMT_NONE || in wpa_supplicant_event_assoc()
3249 wpa_s->key_mgmt == WPA_KEY_MGMT_WPA_NONE || in wpa_supplicant_event_assoc()
3250 (wpa_s->current_ssid && in wpa_supplicant_event_assoc()
3251 wpa_s->current_ssid->mode == WPAS_MODE_IBSS)) { in wpa_supplicant_event_assoc()
3252 if (wpa_s->current_ssid && in wpa_supplicant_event_assoc()
3253 wpa_s->key_mgmt == WPA_KEY_MGMT_WPA_NONE && in wpa_supplicant_event_assoc()
3254 (wpa_s->drv_flags & in wpa_supplicant_event_assoc()
3260 wpa_supplicant_set_wpa_none_key(wpa_s, in wpa_supplicant_event_assoc()
3261 wpa_s->current_ssid); in wpa_supplicant_event_assoc()
3263 wpa_supplicant_cancel_auth_timeout(wpa_s); in wpa_supplicant_event_assoc()
3264 wpa_supplicant_set_state(wpa_s, WPA_COMPLETED); in wpa_supplicant_event_assoc()
3267 wpa_supplicant_req_auth_timeout(wpa_s, 10, 0); in wpa_supplicant_event_assoc()
3269 wpa_supplicant_cancel_scan(wpa_s); in wpa_supplicant_event_assoc()
3276 wpa_supplicant_cancel_auth_timeout(wpa_s); in wpa_supplicant_event_assoc()
3277 wpa_supplicant_set_state(wpa_s, WPA_COMPLETED); in wpa_supplicant_event_assoc()
3278 eapol_sm_notify_portValid(wpa_s->eapol, true); in wpa_supplicant_event_assoc()
3279 eapol_sm_notify_eap_success(wpa_s->eapol, true); in wpa_supplicant_event_assoc()
3280 } else if ((wpa_s->drv_flags & WPA_DRIVER_FLAGS_4WAY_HANDSHAKE_PSK) && in wpa_supplicant_event_assoc()
3281 wpa_key_mgmt_wpa_psk(wpa_s->key_mgmt)) { in wpa_supplicant_event_assoc()
3286 wpa_supplicant_cancel_auth_timeout(wpa_s); in wpa_supplicant_event_assoc()
3287 wpa_supplicant_set_state(wpa_s, WPA_COMPLETED); in wpa_supplicant_event_assoc()
3288 eapol_sm_notify_portValid(wpa_s->eapol, true); in wpa_supplicant_event_assoc()
3289 eapol_sm_notify_eap_success(wpa_s->eapol, true); in wpa_supplicant_event_assoc()
3290 } else if ((wpa_s->drv_flags & WPA_DRIVER_FLAGS_4WAY_HANDSHAKE_8021X) && in wpa_supplicant_event_assoc()
3291 wpa_key_mgmt_wpa_ieee8021x(wpa_s->key_mgmt)) { in wpa_supplicant_event_assoc()
3297 eapol_sm_notify_portValid(wpa_s->eapol, true); in wpa_supplicant_event_assoc()
3300 if (ft_completed && wpa_key_mgmt_ft(wpa_s->key_mgmt)) { in wpa_supplicant_event_assoc()
3301 if (wpa_drv_get_bssid(wpa_s, bssid) < 0) { in wpa_supplicant_event_assoc()
3302 wpa_dbg(wpa_s, MSG_ERROR, "Failed to get BSSID, key_mgmt: 0x%0x", in wpa_supplicant_event_assoc()
3303 wpa_s->key_mgmt); in wpa_supplicant_event_assoc()
3305 wpa_s, WLAN_REASON_DEAUTH_LEAVING); in wpa_supplicant_event_assoc()
3308 os_memcpy(wpa_s->bssid, bssid, ETH_ALEN); in wpa_supplicant_event_assoc()
3309 wpa_s->assoc_freq = data->assoc_info.freq; in wpa_supplicant_event_assoc()
3310 wpa_sm_notify_brcm_ft_reassoc(wpa_s->wpa, bssid); in wpa_supplicant_event_assoc()
3313 wpa_s->last_eapol_matches_bssid = 0; in wpa_supplicant_event_assoc()
3316 if (wpa_s->rsne_override_eapol) { in wpa_supplicant_event_assoc()
3319 wpa_sm_set_assoc_wpa_ie(wpa_s->wpa, in wpa_supplicant_event_assoc()
3320 wpabuf_head(wpa_s->rsne_override_eapol), in wpa_supplicant_event_assoc()
3321 wpabuf_len(wpa_s->rsne_override_eapol)); in wpa_supplicant_event_assoc()
3323 if (wpa_s->rsnxe_override_eapol) { in wpa_supplicant_event_assoc()
3326 wpa_sm_set_assoc_rsnxe(wpa_s->wpa, in wpa_supplicant_event_assoc()
3327 wpabuf_head(wpa_s->rsnxe_override_eapol), in wpa_supplicant_event_assoc()
3328 wpabuf_len(wpa_s->rsnxe_override_eapol)); in wpa_supplicant_event_assoc()
3332 if (wpa_s->pending_eapol_rx) { in wpa_supplicant_event_assoc()
3335 os_reltime_sub(&now, &wpa_s->pending_eapol_rx_time, &age); in wpa_supplicant_event_assoc()
3337 os_memcmp(wpa_s->pending_eapol_rx_src, bssid, ETH_ALEN) == in wpa_supplicant_event_assoc()
3339 wpa_dbg(wpa_s, MSG_DEBUG, "Process pending EAPOL " in wpa_supplicant_event_assoc()
3343 wpa_s, wpa_s->pending_eapol_rx_src, in wpa_supplicant_event_assoc()
3344 wpabuf_head(wpa_s->pending_eapol_rx), in wpa_supplicant_event_assoc()
3345 wpabuf_len(wpa_s->pending_eapol_rx)); in wpa_supplicant_event_assoc()
3347 wpabuf_free(wpa_s->pending_eapol_rx); in wpa_supplicant_event_assoc()
3348 wpa_s->pending_eapol_rx = NULL; in wpa_supplicant_event_assoc()
3352 if ((wpa_s->key_mgmt == WPA_KEY_MGMT_NONE || in wpa_supplicant_event_assoc()
3353 wpa_s->key_mgmt == WPA_KEY_MGMT_IEEE8021X_NO_WPA) && in wpa_supplicant_event_assoc()
3354 wpa_s->current_ssid && in wpa_supplicant_event_assoc()
3355 (wpa_s->drv_flags & WPA_DRIVER_FLAGS_SET_KEYS_AFTER_ASSOC_DONE)) { in wpa_supplicant_event_assoc()
3357 wpa_set_wep_keys(wpa_s, wpa_s->current_ssid); in wpa_supplicant_event_assoc()
3362 if (wpa_s->current_ssid && in wpa_supplicant_event_assoc()
3363 wpa_s->current_ssid->mode == WPAS_MODE_IBSS && in wpa_supplicant_event_assoc()
3364 wpa_s->key_mgmt != WPA_KEY_MGMT_NONE && in wpa_supplicant_event_assoc()
3365 wpa_s->key_mgmt != WPA_KEY_MGMT_WPA_NONE && in wpa_supplicant_event_assoc()
3366 wpa_s->ibss_rsn == NULL) { in wpa_supplicant_event_assoc()
3367 wpa_s->ibss_rsn = ibss_rsn_init(wpa_s, wpa_s->current_ssid); in wpa_supplicant_event_assoc()
3368 if (!wpa_s->ibss_rsn) { in wpa_supplicant_event_assoc()
3369 wpa_msg(wpa_s, MSG_INFO, "Failed to init IBSS RSN"); in wpa_supplicant_event_assoc()
3371 wpa_s, WLAN_REASON_DEAUTH_LEAVING); in wpa_supplicant_event_assoc()
3375 ibss_rsn_set_psk(wpa_s->ibss_rsn, wpa_s->current_ssid->psk); in wpa_supplicant_event_assoc()
3379 wpas_wps_notify_assoc(wpa_s, bssid); in wpa_supplicant_event_assoc()
3382 wmm_ac_notify_assoc(wpa_s, data->assoc_info.resp_ies, in wpa_supplicant_event_assoc()
3386 if (wpa_s->reassoc_same_bss) in wpa_supplicant_event_assoc()
3387 wmm_ac_restore_tspecs(wpa_s); in wpa_supplicant_event_assoc()
3391 bss = wpa_bss_get_bssid(wpa_s, bssid); in wpa_supplicant_event_assoc()
3394 if (wpa_key_mgmt_fils(wpa_s->key_mgmt)) { in wpa_supplicant_event_assoc()
3398 wpa_sm_set_fils_cache_id(wpa_s->wpa, fils_cache_id); in wpa_supplicant_event_assoc()
3403 wpas_mbo_check_pmf(wpa_s, bss, wpa_s->current_ssid); in wpa_supplicant_event_assoc()
3407 wpa_s->dpp_pfs_fallback = 0; in wpa_supplicant_event_assoc()
3420 static void wpa_supplicant_event_disassoc(struct wpa_supplicant *wpa_s, in wpa_supplicant_event_disassoc() argument
3426 if (wpa_s->key_mgmt == WPA_KEY_MGMT_WPA_NONE) { in wpa_supplicant_event_disassoc()
3435 bssid = wpa_s->bssid; in wpa_supplicant_event_disassoc()
3437 bssid = wpa_s->pending_bssid; in wpa_supplicant_event_disassoc()
3440 wpa_s->wpa_state >= WPA_AUTHENTICATING) { in wpa_supplicant_event_disassoc()
3441 wpa_msg(wpa_s, MSG_INFO, WPA_EVENT_DISCONNECTED "bssid=" MACSTR in wpa_supplicant_event_disassoc()
3449 static int could_be_psk_mismatch(struct wpa_supplicant *wpa_s, u16 reason_code, in could_be_psk_mismatch() argument
3452 if (wpa_s->wpa_state != WPA_4WAY_HANDSHAKE || in could_be_psk_mismatch()
3453 !wpa_s->new_connection || in could_be_psk_mismatch()
3454 !wpa_key_mgmt_wpa_psk(wpa_s->key_mgmt) || in could_be_psk_mismatch()
3455 wpa_key_mgmt_sae(wpa_s->key_mgmt)) in could_be_psk_mismatch()
3473 static void wpa_supplicant_event_disassoc_finish(struct wpa_supplicant *wpa_s, in wpa_supplicant_event_disassoc_finish() argument
3485 authenticating = wpa_s->wpa_state == WPA_AUTHENTICATING; in wpa_supplicant_event_disassoc_finish()
3486 os_memcpy(prev_pending_bssid, wpa_s->pending_bssid, ETH_ALEN); in wpa_supplicant_event_disassoc_finish()
3488 if (wpa_s->key_mgmt == WPA_KEY_MGMT_WPA_NONE) { in wpa_supplicant_event_disassoc_finish()
3494 wpa_dbg(wpa_s, MSG_DEBUG, "Disconnect event - ignore in " in wpa_supplicant_event_disassoc_finish()
3499 if (!wpa_s->disconnected && wpa_s->wpa_state >= WPA_AUTHENTICATING && in wpa_supplicant_event_disassoc_finish()
3510 curr = wpa_s->current_bss; in wpa_supplicant_event_disassoc_finish()
3512 if (could_be_psk_mismatch(wpa_s, reason_code, locally_generated)) { in wpa_supplicant_event_disassoc_finish()
3513 wpa_msg(wpa_s, MSG_INFO, "WPA: 4-Way Handshake failed - " in wpa_supplicant_event_disassoc_finish()
3515 if (wpas_p2p_4way_hs_failed(wpa_s) > 0) in wpa_supplicant_event_disassoc_finish()
3517 wpas_auth_failed(wpa_s, "WRONG_KEY"); in wpa_supplicant_event_disassoc_finish()
3519 wpas_dpp_send_conn_status_result(wpa_s, in wpa_supplicant_event_disassoc_finish()
3523 if (!wpa_s->disconnected && in wpa_supplicant_event_disassoc_finish()
3524 (!wpa_s->auto_reconnect_disabled || in wpa_supplicant_event_disassoc_finish()
3525 wpa_s->key_mgmt == WPA_KEY_MGMT_WPS || in wpa_supplicant_event_disassoc_finish()
3526 wpas_wps_searching(wpa_s) || in wpa_supplicant_event_disassoc_finish()
3527 wpas_wps_reenable_networks_pending(wpa_s))) { in wpa_supplicant_event_disassoc_finish()
3528 wpa_dbg(wpa_s, MSG_DEBUG, "Auto connect enabled: try to " in wpa_supplicant_event_disassoc_finish()
3530 wpa_s->key_mgmt == WPA_KEY_MGMT_WPS, in wpa_supplicant_event_disassoc_finish()
3531 wpas_wps_searching(wpa_s), in wpa_supplicant_event_disassoc_finish()
3532 wpa_s->wpa_state); in wpa_supplicant_event_disassoc_finish()
3533 if (wpa_s->wpa_state == WPA_COMPLETED && in wpa_supplicant_event_disassoc_finish()
3534 wpa_s->current_ssid && in wpa_supplicant_event_disassoc_finish()
3535 wpa_s->current_ssid->mode == WPAS_MODE_INFRA && in wpa_supplicant_event_disassoc_finish()
3536 (wpa_s->own_reconnect_req || in wpa_supplicant_event_disassoc_finish()
3547 fast_reconnect = wpa_s->current_bss; in wpa_supplicant_event_disassoc_finish()
3548 fast_reconnect_ssid = wpa_s->current_ssid; in wpa_supplicant_event_disassoc_finish()
3549 } else if (wpa_s->wpa_state >= WPA_ASSOCIATING) { in wpa_supplicant_event_disassoc_finish()
3550 wpa_supplicant_req_scan(wpa_s, 0, 100000); in wpa_supplicant_event_disassoc_finish()
3552 wpa_dbg(wpa_s, MSG_DEBUG, "Do not request new " in wpa_supplicant_event_disassoc_finish()
3556 wpa_dbg(wpa_s, MSG_DEBUG, "Auto connect disabled: do not " in wpa_supplicant_event_disassoc_finish()
3558 wpa_s->reassociate = 0; in wpa_supplicant_event_disassoc_finish()
3559 wpa_s->disconnected = 1; in wpa_supplicant_event_disassoc_finish()
3560 if (!wpa_s->pno) in wpa_supplicant_event_disassoc_finish()
3561 wpa_supplicant_cancel_sched_scan(wpa_s); in wpa_supplicant_event_disassoc_finish()
3563 bssid = wpa_s->bssid; in wpa_supplicant_event_disassoc_finish()
3565 bssid = wpa_s->pending_bssid; in wpa_supplicant_event_disassoc_finish()
3566 if (wpa_s->wpa_state >= WPA_AUTHENTICATING) in wpa_supplicant_event_disassoc_finish()
3567 wpas_connection_failed(wpa_s, bssid); in wpa_supplicant_event_disassoc_finish()
3568 wpa_sm_notify_disassoc(wpa_s->wpa); in wpa_supplicant_event_disassoc_finish()
3569 ptksa_cache_flush(wpa_s->ptksa, wpa_s->bssid, WPA_CIPHER_NONE); in wpa_supplicant_event_disassoc_finish()
3572 wpa_s->disconnect_reason = -reason_code; in wpa_supplicant_event_disassoc_finish()
3574 wpa_s->disconnect_reason = reason_code; in wpa_supplicant_event_disassoc_finish()
3575 wpas_notify_disconnect_reason(wpa_s); in wpa_supplicant_event_disassoc_finish()
3576 if (wpa_supplicant_dynamic_keys(wpa_s)) { in wpa_supplicant_event_disassoc_finish()
3577 wpa_dbg(wpa_s, MSG_DEBUG, "Disconnect event - remove keys"); in wpa_supplicant_event_disassoc_finish()
3578 wpa_clear_keys(wpa_s, wpa_s->bssid); in wpa_supplicant_event_disassoc_finish()
3580 last_ssid = wpa_s->current_ssid; in wpa_supplicant_event_disassoc_finish()
3581 wpa_supplicant_mark_disassoc(wpa_s); in wpa_supplicant_event_disassoc_finish()
3584 wpa_bss_remove(wpa_s, curr, "Connection to AP lost"); in wpa_supplicant_event_disassoc_finish()
3586 if (authenticating && (wpa_s->drv_flags & WPA_DRIVER_FLAGS_SME)) { in wpa_supplicant_event_disassoc_finish()
3587 sme_disassoc_while_authenticating(wpa_s, prev_pending_bssid); in wpa_supplicant_event_disassoc_finish()
3588 wpa_s->current_ssid = last_ssid; in wpa_supplicant_event_disassoc_finish()
3592 !wpas_network_disabled(wpa_s, fast_reconnect_ssid) && in wpa_supplicant_event_disassoc_finish()
3593 !disallowed_bssid(wpa_s, fast_reconnect->bssid) && in wpa_supplicant_event_disassoc_finish()
3594 !disallowed_ssid(wpa_s, fast_reconnect->ssid, in wpa_supplicant_event_disassoc_finish()
3596 !wpas_temp_disabled(wpa_s, fast_reconnect_ssid) && in wpa_supplicant_event_disassoc_finish()
3597 !wpa_is_bss_tmp_disallowed(wpa_s, fast_reconnect)) { in wpa_supplicant_event_disassoc_finish()
3599 wpa_dbg(wpa_s, MSG_DEBUG, "Try to reconnect to the same BSS"); in wpa_supplicant_event_disassoc_finish()
3600 if (wpa_supplicant_connect(wpa_s, fast_reconnect, in wpa_supplicant_event_disassoc_finish()
3603 wpa_supplicant_req_scan(wpa_s, 0, 100000); in wpa_supplicant_event_disassoc_finish()
3613 wpa_supplicant_req_scan(wpa_s, 0, 100000); in wpa_supplicant_event_disassoc_finish()
3621 struct wpa_supplicant *wpa_s = eloop_ctx; in wpa_supplicant_delayed_mic_error_report() local
3623 if (!wpa_s->pending_mic_error_report) in wpa_supplicant_delayed_mic_error_report()
3626 wpa_dbg(wpa_s, MSG_DEBUG, "WPA: Sending pending MIC error report"); in wpa_supplicant_delayed_mic_error_report()
3627 wpa_sm_key_request(wpa_s->wpa, 1, wpa_s->pending_mic_error_pairwise); in wpa_supplicant_delayed_mic_error_report()
3628 wpa_s->pending_mic_error_report = 0; in wpa_supplicant_delayed_mic_error_report()
3634 wpa_supplicant_event_michael_mic_failure(struct wpa_supplicant *wpa_s, in wpa_supplicant_event_michael_mic_failure() argument
3640 wpa_msg(wpa_s, MSG_WARNING, "Michael MIC failure detected"); in wpa_supplicant_event_michael_mic_failure()
3643 if ((wpa_s->last_michael_mic_error.sec && in wpa_supplicant_event_michael_mic_failure()
3644 !os_reltime_expired(&t, &wpa_s->last_michael_mic_error, 60)) || in wpa_supplicant_event_michael_mic_failure()
3645 wpa_s->pending_mic_error_report) { in wpa_supplicant_event_michael_mic_failure()
3646 if (wpa_s->pending_mic_error_report) { in wpa_supplicant_event_michael_mic_failure()
3652 wpa_sm_key_request(wpa_s->wpa, 1, in wpa_supplicant_event_michael_mic_failure()
3653 wpa_s->pending_mic_error_pairwise); in wpa_supplicant_event_michael_mic_failure()
3659 wpa_sm_key_request(wpa_s->wpa, 1, pairwise); in wpa_supplicant_event_michael_mic_failure()
3662 wpa_s->countermeasures = 1; in wpa_supplicant_event_michael_mic_failure()
3664 wpa_bssid_ignore_add(wpa_s, wpa_s->bssid); in wpa_supplicant_event_michael_mic_failure()
3666 wpa_msg(wpa_s, MSG_WARNING, "TKIP countermeasures started"); in wpa_supplicant_event_michael_mic_failure()
3674 wpa_drv_set_countermeasures(wpa_s, 1); in wpa_supplicant_event_michael_mic_failure()
3675 wpa_supplicant_deauthenticate(wpa_s, in wpa_supplicant_event_michael_mic_failure()
3678 wpa_s, NULL); in wpa_supplicant_event_michael_mic_failure()
3681 wpa_s, NULL); in wpa_supplicant_event_michael_mic_failure()
3686 if (wpa_s->mic_errors_seen) { in wpa_supplicant_event_michael_mic_failure()
3704 wpa_dbg(wpa_s, MSG_DEBUG, "WPA: Delay MIC error " in wpa_supplicant_event_michael_mic_failure()
3706 wpa_s->pending_mic_error_report = 1; in wpa_supplicant_event_michael_mic_failure()
3707 wpa_s->pending_mic_error_pairwise = pairwise; in wpa_supplicant_event_michael_mic_failure()
3710 wpa_s, NULL); in wpa_supplicant_event_michael_mic_failure()
3714 wpa_s, NULL); in wpa_supplicant_event_michael_mic_failure()
3716 wpa_sm_key_request(wpa_s->wpa, 1, pairwise); in wpa_supplicant_event_michael_mic_failure()
3719 wpa_sm_key_request(wpa_s->wpa, 1, pairwise); in wpa_supplicant_event_michael_mic_failure()
3722 wpa_s->last_michael_mic_error = t; in wpa_supplicant_event_michael_mic_failure()
3723 wpa_s->mic_errors_seen++; in wpa_supplicant_event_michael_mic_failure()
3730 struct wpa_supplicant *wpa_s; in any_interfaces() local
3732 for (wpa_s = head; wpa_s != NULL; wpa_s = wpa_s->next) in any_interfaces()
3733 if (!wpa_s->interface_removed) in any_interfaces()
3741 wpa_supplicant_event_interface_status(struct wpa_supplicant *wpa_s, in wpa_supplicant_event_interface_status() argument
3744 if (os_strcmp(wpa_s->ifname, data->interface_status.ifname) != 0) in wpa_supplicant_event_interface_status()
3749 if (!wpa_s->interface_removed) in wpa_supplicant_event_interface_status()
3751 wpa_s->interface_removed = 0; in wpa_supplicant_event_interface_status()
3752 wpa_dbg(wpa_s, MSG_DEBUG, "Configured interface was added"); in wpa_supplicant_event_interface_status()
3753 if (wpa_supplicant_driver_init(wpa_s) < 0) { in wpa_supplicant_event_interface_status()
3754 wpa_msg(wpa_s, MSG_INFO, "Failed to initialize the " in wpa_supplicant_event_interface_status()
3759 if (!wpa_s->global->p2p && in wpa_supplicant_event_interface_status()
3760 !wpa_s->global->p2p_disabled && in wpa_supplicant_event_interface_status()
3761 !wpa_s->conf->p2p_disabled && in wpa_supplicant_event_interface_status()
3762 (wpa_s->drv_flags & in wpa_supplicant_event_interface_status()
3765 wpa_s, wpa_s->global->params.conf_p2p_dev) < 0) { in wpa_supplicant_event_interface_status()
3774 wpa_dbg(wpa_s, MSG_DEBUG, "Configured interface was removed"); in wpa_supplicant_event_interface_status()
3775 wpa_s->interface_removed = 1; in wpa_supplicant_event_interface_status()
3776 wpa_supplicant_mark_disassoc(wpa_s); in wpa_supplicant_event_interface_status()
3777 wpa_supplicant_set_state(wpa_s, WPA_INTERFACE_DISABLED); in wpa_supplicant_event_interface_status()
3778 l2_packet_deinit(wpa_s->l2); in wpa_supplicant_event_interface_status()
3779 wpa_s->l2 = NULL; in wpa_supplicant_event_interface_status()
3782 if (wpa_s->global->p2p && in wpa_supplicant_event_interface_status()
3783 wpa_s->global->p2p_init_wpa_s->parent == wpa_s && in wpa_supplicant_event_interface_status()
3784 (wpa_s->drv_flags & in wpa_supplicant_event_interface_status()
3786 wpa_dbg(wpa_s, MSG_DEBUG, in wpa_supplicant_event_interface_status()
3789 wpa_s->global, wpa_s->global->p2p_init_wpa_s, in wpa_supplicant_event_interface_status()
3791 wpa_s->global->p2p_init_wpa_s = NULL; in wpa_supplicant_event_interface_status()
3796 if (wpa_s->matched) { in wpa_supplicant_event_interface_status()
3797 wpa_supplicant_remove_iface(wpa_s->global, wpa_s, 0); in wpa_supplicant_event_interface_status()
3804 if (!any_interfaces(wpa_s->global->ifaces)) in wpa_supplicant_event_interface_status()
3813 static void wpa_supplicant_event_tdls(struct wpa_supplicant *wpa_s, in wpa_supplicant_event_tdls() argument
3820 wpa_tdls_remove(wpa_s->wpa, data->tdls.peer); in wpa_supplicant_event_tdls()
3821 if (wpa_tdls_is_external_setup(wpa_s->wpa)) in wpa_supplicant_event_tdls()
3822 wpa_tdls_start(wpa_s->wpa, data->tdls.peer); in wpa_supplicant_event_tdls()
3824 wpa_drv_tdls_oper(wpa_s, TDLS_SETUP, data->tdls.peer); in wpa_supplicant_event_tdls()
3827 if (wpa_tdls_is_external_setup(wpa_s->wpa)) in wpa_supplicant_event_tdls()
3828 wpa_tdls_teardown_link(wpa_s->wpa, data->tdls.peer, in wpa_supplicant_event_tdls()
3831 wpa_drv_tdls_oper(wpa_s, TDLS_TEARDOWN, in wpa_supplicant_event_tdls()
3835 wpa_tdls_send_discovery_request(wpa_s->wpa, in wpa_supplicant_event_tdls()
3844 static void wpa_supplicant_event_wnm(struct wpa_supplicant *wpa_s, in wpa_supplicant_event_wnm() argument
3854 ieee802_11_send_wnmsleep_req(wpa_s, data->wnm.sleep_action, in wpa_supplicant_event_wnm()
3864 wpa_supplicant_event_ft_response(struct wpa_supplicant *wpa_s, in wpa_supplicant_event_ft_response() argument
3870 if (wpa_ft_process_response(wpa_s->wpa, data->ft_ies.ies, in wpa_supplicant_event_ft_response()
3883 static void wpa_supplicant_event_ibss_rsn_start(struct wpa_supplicant *wpa_s, in wpa_supplicant_event_ibss_rsn_start() argument
3887 if (wpa_s->wpa_state < WPA_ASSOCIATED) in wpa_supplicant_event_ibss_rsn_start()
3891 ssid = wpa_s->current_ssid; in wpa_supplicant_event_ibss_rsn_start()
3897 ibss_rsn_start(wpa_s->ibss_rsn, data->ibss_rsn_start.peer); in wpa_supplicant_event_ibss_rsn_start()
3901 static void wpa_supplicant_event_ibss_auth(struct wpa_supplicant *wpa_s, in wpa_supplicant_event_ibss_auth() argument
3904 struct wpa_ssid *ssid = wpa_s->current_ssid; in wpa_supplicant_event_ibss_auth()
3913 ibss_rsn_handle_auth(wpa_s->ibss_rsn, data->rx_mgmt.frame, in wpa_supplicant_event_ibss_auth()
3920 static void ft_rx_action(struct wpa_supplicant *wpa_s, const u8 *data, in ft_rx_action() argument
3927 if (!(wpa_s->drv_flags & WPA_DRIVER_FLAGS_SME)) in ft_rx_action()
3936 wpa_dbg(wpa_s, MSG_DEBUG, "FT: Received FT Action Response: STA " in ft_rx_action()
3940 if (os_memcmp(sta_addr, wpa_s->own_addr, ETH_ALEN) != 0) { in ft_rx_action()
3941 wpa_dbg(wpa_s, MSG_DEBUG, "FT: Foreign STA Address " MACSTR in ft_rx_action()
3947 wpa_dbg(wpa_s, MSG_DEBUG, "FT: FT Action Response indicates " in ft_rx_action()
3953 if (wpa_ft_process_response(wpa_s->wpa, data + 1 + 2 * ETH_ALEN + 2, in ft_rx_action()
3961 bss = wpa_bss_get_bssid(wpa_s, target_ap_addr); in ft_rx_action()
3963 wpa_s->sme.freq = bss->freq; in ft_rx_action()
3964 wpa_s->sme.auth_alg = WPA_AUTH_ALG_FT; in ft_rx_action()
3965 sme_associate(wpa_s, WPAS_MODE_INFRA, target_ap_addr, in ft_rx_action()
3973 static void wpa_supplicant_event_unprot_deauth(struct wpa_supplicant *wpa_s, in wpa_supplicant_event_unprot_deauth() argument
3980 sme_event_unprot_disconnect(wpa_s, e->sa, e->da, e->reason_code); in wpa_supplicant_event_unprot_deauth()
3984 static void wpa_supplicant_event_unprot_disassoc(struct wpa_supplicant *wpa_s, in wpa_supplicant_event_unprot_disassoc() argument
3991 sme_event_unprot_disconnect(wpa_s, e->sa, e->da, e->reason_code); in wpa_supplicant_event_unprot_disassoc()
3995 static void wpas_event_disconnect(struct wpa_supplicant *wpa_s, const u8 *addr, in wpas_event_disconnect() argument
4000 if (wpa_s->ap_iface && addr) { in wpas_event_disconnect()
4001 hostapd_notif_disassoc(wpa_s->ap_iface->bss[0], addr); in wpas_event_disconnect()
4005 if (wpa_s->ap_iface) { in wpas_event_disconnect()
4006 wpa_dbg(wpa_s, MSG_DEBUG, "Ignore deauth event in AP mode"); in wpas_event_disconnect()
4012 wpa_s->own_disconnect_req = 0; in wpas_event_disconnect()
4014 wpa_supplicant_event_disassoc(wpa_s, reason_code, locally_generated); in wpas_event_disconnect()
4017 ((wpa_key_mgmt_wpa_ieee8021x(wpa_s->key_mgmt) || in wpas_event_disconnect()
4018 (wpa_s->key_mgmt & WPA_KEY_MGMT_IEEE8021X_NO_WPA)) && in wpas_event_disconnect()
4019 eapol_sm_failed(wpa_s->eapol))) && in wpas_event_disconnect()
4020 !wpa_s->eap_expected_failure)) in wpas_event_disconnect()
4021 wpas_auth_failed(wpa_s, "AUTH_FAILED"); in wpas_event_disconnect()
4025 if (wpas_p2p_deauth_notif(wpa_s, addr, reason_code, ie, ie_len, in wpas_event_disconnect()
4036 wpa_supplicant_event_disassoc_finish(wpa_s, reason_code, in wpas_event_disconnect()
4041 static void wpas_event_disassoc(struct wpa_supplicant *wpa_s, in wpas_event_disassoc() argument
4050 wpa_dbg(wpa_s, MSG_DEBUG, "Disassociation notification"); in wpas_event_disassoc()
4058 wpa_dbg(wpa_s, MSG_DEBUG, " * reason %u (%s)%s", reason_code, in wpas_event_disassoc()
4062 wpa_dbg(wpa_s, MSG_DEBUG, " * address " MACSTR, in wpas_event_disassoc()
4069 if (wpa_s->ap_iface && info && info->addr) { in wpas_event_disassoc()
4070 hostapd_notif_disassoc(wpa_s->ap_iface->bss[0], info->addr); in wpas_event_disassoc()
4074 if (wpa_s->ap_iface) { in wpas_event_disassoc()
4075 wpa_dbg(wpa_s, MSG_DEBUG, "Ignore disassoc event in AP mode"); in wpas_event_disassoc()
4083 wpa_s, info->addr, reason_code, info->ie, info->ie_len, in wpas_event_disassoc()
4088 if (wpa_s->drv_flags & WPA_DRIVER_FLAGS_SME) in wpas_event_disassoc()
4089 sme_event_disassoc(wpa_s, info); in wpas_event_disassoc()
4091 wpas_event_disconnect(wpa_s, addr, reason_code, locally_generated, in wpas_event_disassoc()
4096 static void wpas_event_deauth(struct wpa_supplicant *wpa_s, in wpas_event_deauth() argument
4105 wpa_dbg(wpa_s, MSG_DEBUG, "Deauthentication notification"); in wpas_event_deauth()
4113 wpa_dbg(wpa_s, MSG_DEBUG, " * reason %u (%s)%s", in wpas_event_deauth()
4117 wpa_dbg(wpa_s, MSG_DEBUG, " * address " MACSTR, in wpas_event_deauth()
4124 wpa_reset_ft_completed(wpa_s->wpa); in wpas_event_deauth()
4126 wpas_event_disconnect(wpa_s, addr, reason_code, in wpas_event_deauth()
4167 void wpa_supplicant_update_channel_list(struct wpa_supplicant *wpa_s, in wpa_supplicant_update_channel_list() argument
4179 for (ifs = wpa_s; ifs->parent && ifs != ifs->parent; ifs = ifs->parent) in wpa_supplicant_update_channel_list()
4190 if (wpa_s->drv_priv == NULL) in wpa_supplicant_update_channel_list()
4193 dl_list_for_each(ifs, &wpa_s->radio->ifaces, struct wpa_supplicant, in wpa_supplicant_update_channel_list()
4212 wpas_p2p_update_channel_list(wpa_s, WPAS_P2P_CHANNEL_UPDATE_DRIVER); in wpa_supplicant_update_channel_list()
4216 static void wpas_event_rx_mgmt_action(struct wpa_supplicant *wpa_s, in wpas_event_rx_mgmt_action() argument
4233 wpa_dbg(wpa_s, MSG_DEBUG, "Received Action frame: SA=" MACSTR in wpas_event_rx_mgmt_action()
4238 wmm_ac_rx_action(wpa_s, mgmt->da, mgmt->sa, payload, plen); in wpas_event_rx_mgmt_action()
4244 ft_rx_action(wpa_s, payload, plen); in wpas_event_rx_mgmt_action()
4251 sme_sa_query_rx(wpa_s, mgmt->sa, payload, plen); in wpas_event_rx_mgmt_action()
4258 ieee802_11_rx_wnm_action(wpa_s, mgmt, len); in wpas_event_rx_mgmt_action()
4266 gas_query_rx(wpa_s->gas, mgmt->da, mgmt->sa, mgmt->bssid, in wpas_event_rx_mgmt_action()
4275 gas_server_rx(wpa_s->gas_server, mgmt->da, mgmt->sa, mgmt->bssid, in wpas_event_rx_mgmt_action()
4284 wpa_dbg(wpa_s, MSG_DEBUG, in wpas_event_rx_mgmt_action()
4296 wpa_dbg(wpa_s, MSG_DEBUG, "Interworking: Received QoS Map Configure frame from " in wpas_event_rx_mgmt_action()
4298 if (os_memcmp(mgmt->sa, wpa_s->bssid, ETH_ALEN) == 0 && in wpas_event_rx_mgmt_action()
4301 wpas_qos_map_set(wpa_s, pos + 2, pos[1]); in wpas_event_rx_mgmt_action()
4308 wpas_rrm_handle_radio_measurement_request(wpa_s, mgmt->sa, in wpas_event_rx_mgmt_action()
4317 wpas_rrm_process_neighbor_rep(wpa_s, payload + 1, plen - 1); in wpas_event_rx_mgmt_action()
4323 wpas_rrm_handle_link_measurement_request(wpa_s, mgmt->sa, in wpas_event_rx_mgmt_action()
4330 if (mgmt->u.action.category == WLAN_ACTION_FST && wpa_s->fst) { in wpas_event_rx_mgmt_action()
4331 fst_rx_action(wpa_s->fst, mgmt, len); in wpas_event_rx_mgmt_action()
4343 wpas_dpp_rx_action(wpa_s, mgmt->sa, payload, plen, freq); in wpas_event_rx_mgmt_action()
4350 wpas_handle_robust_av_recv_action(wpa_s, mgmt->sa, in wpas_event_rx_mgmt_action()
4355 wpas_p2p_rx_action(wpa_s, mgmt->da, mgmt->sa, mgmt->bssid, in wpas_event_rx_mgmt_action()
4357 if (wpa_s->ifmsh) in wpas_event_rx_mgmt_action()
4358 mesh_mpm_action_rx(wpa_s, mgmt, len); in wpas_event_rx_mgmt_action()
4362 static void wpa_supplicant_notify_avoid_freq(struct wpa_supplicant *wpa_s, in wpa_supplicant_notify_avoid_freq() argument
4372 wpa_msg(wpa_s, MSG_INFO, WPA_EVENT_AVOID_FREQ "ranges=%s", in wpa_supplicant_notify_avoid_freq()
4376 if (freq_range_list_parse(&wpa_s->global->p2p_go_avoid_freq, str)) { in wpa_supplicant_notify_avoid_freq()
4377 wpa_dbg(wpa_s, MSG_ERROR, "%s: Failed to parse freq range", in wpa_supplicant_notify_avoid_freq()
4380 wpa_dbg(wpa_s, MSG_DEBUG, "P2P: Update channel list based on frequency avoid event"); in wpa_supplicant_notify_avoid_freq()
4386 wpas_p2p_update_channel_list(wpa_s, in wpa_supplicant_notify_avoid_freq()
4395 static void wpa_supplicant_event_port_authorized(struct wpa_supplicant *wpa_s) in wpa_supplicant_event_port_authorized() argument
4397 if (wpa_s->wpa_state == WPA_ASSOCIATED) { in wpa_supplicant_event_port_authorized()
4398 wpa_supplicant_cancel_auth_timeout(wpa_s); in wpa_supplicant_event_port_authorized()
4399 wpa_supplicant_set_state(wpa_s, WPA_COMPLETED); in wpa_supplicant_event_port_authorized()
4400 eapol_sm_notify_portValid(wpa_s->eapol, true); in wpa_supplicant_event_port_authorized()
4401 eapol_sm_notify_eap_success(wpa_s->eapol, true); in wpa_supplicant_event_port_authorized()
4402 wpa_s->drv_authorized_port = 1; in wpa_supplicant_event_port_authorized()
4407 static unsigned int wpas_event_cac_ms(const struct wpa_supplicant *wpa_s, in wpas_event_cac_ms() argument
4413 for (i = 0; i < wpa_s->hw.num_modes; i++) { in wpas_event_cac_ms()
4414 const struct hostapd_hw_modes *mode = &wpa_s->hw.modes[i]; in wpas_event_cac_ms()
4429 static void wpas_event_dfs_cac_started(struct wpa_supplicant *wpa_s, in wpas_event_dfs_cac_started() argument
4433 if (wpa_s->ap_iface || wpa_s->ifmsh) { in wpas_event_dfs_cac_started()
4434 wpas_ap_event_dfs_cac_started(wpa_s, radar); in wpas_event_dfs_cac_started()
4438 unsigned int cac_time = wpas_event_cac_ms(wpa_s, radar->freq); in wpas_event_dfs_cac_started()
4445 wpas_auth_timeout_restart(wpa_s, cac_time); in wpas_event_dfs_cac_started()
4450 static void wpas_event_dfs_cac_finished(struct wpa_supplicant *wpa_s, in wpas_event_dfs_cac_finished() argument
4454 if (wpa_s->ap_iface || wpa_s->ifmsh) { in wpas_event_dfs_cac_finished()
4455 wpas_ap_event_dfs_cac_finished(wpa_s, radar); in wpas_event_dfs_cac_finished()
4461 wpas_auth_timeout_restart(wpa_s, 0); in wpas_event_dfs_cac_finished()
4466 static void wpas_event_dfs_cac_aborted(struct wpa_supplicant *wpa_s, in wpas_event_dfs_cac_aborted() argument
4470 if (wpa_s->ap_iface || wpa_s->ifmsh) { in wpas_event_dfs_cac_aborted()
4471 wpas_ap_event_dfs_cac_aborted(wpa_s, radar); in wpas_event_dfs_cac_aborted()
4477 wpas_auth_timeout_restart(wpa_s, 0); in wpas_event_dfs_cac_aborted()
4482 static void wpa_supplicant_event_assoc_auth(struct wpa_supplicant *wpa_s, in wpa_supplicant_event_assoc_auth() argument
4485 wpa_dbg(wpa_s, MSG_DEBUG, in wpa_supplicant_event_assoc_auth()
4487 wpa_s->wpa_state); in wpa_supplicant_event_assoc_auth()
4489 wpa_supplicant_event_port_authorized(wpa_s); in wpa_supplicant_event_assoc_auth()
4491 wpa_sm_set_rx_replay_ctr(wpa_s->wpa, data->assoc_info.key_replay_ctr); in wpa_supplicant_event_assoc_auth()
4492 wpa_sm_set_ptk_kck_kek(wpa_s->wpa, data->assoc_info.ptk_kck, in wpa_supplicant_event_assoc_auth()
4497 if (wpa_s->auth_alg == WPA_AUTH_ALG_FILS) { in wpa_supplicant_event_assoc_auth()
4498 struct wpa_bss *bss = wpa_bss_get_bssid(wpa_s, wpa_s->bssid); in wpa_supplicant_event_assoc_auth()
4503 wpa_s->eapol, data->assoc_info.fils_erp_next_seq_num); in wpa_supplicant_event_assoc_auth()
4507 wpa_sm_pmksa_cache_add(wpa_s->wpa, in wpa_supplicant_event_assoc_auth()
4511 wpa_s->bssid, fils_cache_id); in wpa_supplicant_event_assoc_auth()
4514 pmksa_cache_set_current(wpa_s->wpa, in wpa_supplicant_event_assoc_auth()
4548 static void wpas_event_assoc_reject(struct wpa_supplicant *wpa_s, in wpas_event_assoc_reject() argument
4557 bssid = wpa_s->pending_bssid; in wpas_event_assoc_reject()
4559 if (wpa_s->drv_flags & WPA_DRIVER_FLAGS_SME) in wpas_event_assoc_reject()
4560 reject_bss = wpa_s->current_bss; in wpas_event_assoc_reject()
4562 reject_bss = wpa_bss_get_bssid(wpa_s, bssid); in wpas_event_assoc_reject()
4566 wpa_msg(wpa_s, MSG_INFO, WPA_EVENT_ASSOC_REJECT in wpas_event_assoc_reject()
4579 wpa_msg(wpa_s, MSG_INFO, WPA_EVENT_ASSOC_REJECT in wpas_event_assoc_reject()
4590 wpa_s->assoc_status_code = data->assoc_reject.status_code; in wpas_event_assoc_reject()
4591 wpas_notify_assoc_status_code(wpa_s, bssid, data->assoc_reject.timed_out, in wpas_event_assoc_reject()
4597 wpa_s->key_mgmt == WPA_KEY_MGMT_OWE && in wpas_event_assoc_reject()
4598 wpa_s->current_ssid && in wpas_event_assoc_reject()
4599 wpa_s->current_ssid->owe_group == 0 && in wpas_event_assoc_reject()
4600 wpa_s->last_owe_group != 21) { in wpas_event_assoc_reject()
4601 struct wpa_ssid *ssid = wpa_s->current_ssid; in wpas_event_assoc_reject()
4602 struct wpa_bss *bss = wpa_s->current_bss; in wpas_event_assoc_reject()
4605 bss = wpa_supplicant_get_new_bss(wpa_s, bssid); in wpas_event_assoc_reject()
4607 wpas_connection_failed(wpa_s, bssid); in wpas_event_assoc_reject()
4608 wpa_supplicant_mark_disassoc(wpa_s); in wpas_event_assoc_reject()
4613 wpas_connect_work_done(wpa_s); in wpas_event_assoc_reject()
4614 wpa_supplicant_mark_disassoc(wpa_s); in wpas_event_assoc_reject()
4615 wpa_supplicant_connect(wpa_s, bss, ssid); in wpas_event_assoc_reject()
4625 if (DPP_VERSION > 1 && wpa_s->current_ssid && in wpas_event_assoc_reject()
4626 (wpa_s->current_ssid->key_mgmt == WPA_KEY_MGMT_DPP || in wpas_event_assoc_reject()
4627 ((wpa_s->current_ssid->key_mgmt & WPA_KEY_MGMT_DPP) && in wpas_event_assoc_reject()
4628 wpa_s->key_mgmt == WPA_KEY_MGMT_DPP)) && in wpas_event_assoc_reject()
4629 wpa_s->current_ssid->dpp_pfs == 0 && in wpas_event_assoc_reject()
4633 struct wpa_ssid *ssid = wpa_s->current_ssid; in wpas_event_assoc_reject()
4634 struct wpa_bss *bss = wpa_s->current_bss; in wpas_event_assoc_reject()
4636 wpa_s->current_ssid->dpp_pfs_fallback ^= 1; in wpas_event_assoc_reject()
4638 bss = wpa_supplicant_get_new_bss(wpa_s, bssid); in wpas_event_assoc_reject()
4639 if (!bss || wpa_s->dpp_pfs_fallback) { in wpas_event_assoc_reject()
4642 wpas_connection_failed(wpa_s, bssid); in wpas_event_assoc_reject()
4643 wpa_supplicant_mark_disassoc(wpa_s); in wpas_event_assoc_reject()
4647 wpa_s->dpp_pfs_fallback = 1; in wpas_event_assoc_reject()
4648 wpas_connect_work_done(wpa_s); in wpas_event_assoc_reject()
4649 wpa_supplicant_mark_disassoc(wpa_s); in wpas_event_assoc_reject()
4650 wpa_supplicant_connect(wpa_s, bss, ssid); in wpas_event_assoc_reject()
4671 wpa_bss_tmp_disallow(wpa_s, in wpas_event_assoc_reject()
4679 if (wpa_s->drv_flags & WPA_DRIVER_FLAGS_SME) { in wpas_event_assoc_reject()
4680 sme_event_assoc_reject(wpa_s, data); in wpas_event_assoc_reject()
4687 if (wpa_s->current_ssid && in wpas_event_assoc_reject()
4688 wpa_key_mgmt_sae(wpa_s->current_ssid->key_mgmt) && in wpas_event_assoc_reject()
4690 wpa_dbg(wpa_s, MSG_DEBUG, "SAE: Drop PMKSA cache entry"); in wpas_event_assoc_reject()
4691 wpa_sm_aborted_cached(wpa_s->wpa); in wpas_event_assoc_reject()
4692 wpa_sm_pmksa_cache_flush(wpa_s->wpa, wpa_s->current_ssid); in wpas_event_assoc_reject()
4697 if (wpa_s->current_ssid && in wpas_event_assoc_reject()
4698 wpa_s->current_ssid->key_mgmt == WPA_KEY_MGMT_DPP && in wpas_event_assoc_reject()
4700 wpa_dbg(wpa_s, MSG_DEBUG, "DPP: Drop PMKSA cache entry"); in wpas_event_assoc_reject()
4701 wpa_sm_aborted_cached(wpa_s->wpa); in wpas_event_assoc_reject()
4702 wpa_sm_pmksa_cache_flush(wpa_s->wpa, wpa_s->current_ssid); in wpas_event_assoc_reject()
4708 if (wpa_s->auth_alg == WPA_AUTH_ALG_FILS) { in wpas_event_assoc_reject()
4710 wpa_s->eapol, in wpas_event_assoc_reject()
4712 fils_connection_failure(wpa_s); in wpas_event_assoc_reject()
4716 wpas_connection_failed(wpa_s, bssid); in wpas_event_assoc_reject()
4717 wpa_supplicant_mark_disassoc(wpa_s); in wpas_event_assoc_reject()
4721 static void wpas_event_unprot_beacon(struct wpa_supplicant *wpa_s, in wpas_event_unprot_beacon() argument
4727 if (!data || wpa_s->wpa_state != WPA_COMPLETED || in wpas_event_unprot_beacon()
4728 os_memcmp(data->sa, wpa_s->bssid, ETH_ALEN) != 0) in wpas_event_unprot_beacon()
4730 wpa_msg(wpa_s, MSG_INFO, WPA_EVENT_UNPROT_BEACON MACSTR, in wpas_event_unprot_beacon()
4742 res = wpa_drv_send_action(wpa_s, wpa_s->assoc_freq, 0, wpa_s->bssid, in wpas_event_unprot_beacon()
4743 wpa_s->own_addr, wpa_s->bssid, in wpas_event_unprot_beacon()
4756 struct wpa_supplicant *wpa_s = ctx; in wpa_supplicant_event() local
4763 if (wpa_s->wpa_state == WPA_INTERFACE_DISABLED && in wpa_supplicant_event()
4768 wpa_dbg(wpa_s, MSG_DEBUG, in wpa_supplicant_event()
4785 wpa_dbg(wpa_s, level, "Event %s (%d) received", in wpa_supplicant_event()
4792 if (!wpas_fst_update_mbie(wpa_s, data->auth.ies, in wpa_supplicant_event()
4797 sme_event_auth(wpa_s, data); in wpa_supplicant_event()
4798 wpa_s->auth_status_code = data->auth.status_code; in wpa_supplicant_event()
4799 wpas_notify_auth_status_code(wpa_s); in wpa_supplicant_event()
4803 if (wpa_s->ignore_auth_resp) { in wpa_supplicant_event()
4808 if (wpa_s->testing_resend_assoc) { in wpa_supplicant_event()
4814 if (wpa_s->disconnected) { in wpa_supplicant_event()
4819 wpa_supplicant_event_assoc(wpa_s, data); in wpa_supplicant_event()
4820 wpa_s->assoc_status_code = WLAN_STATUS_SUCCESS; in wpa_supplicant_event()
4823 (!(wpa_s->drv_flags & WPA_DRIVER_FLAGS_SME) && in wpa_supplicant_event()
4824 wpa_fils_is_completed(wpa_s->wpa)))) in wpa_supplicant_event()
4825 wpa_supplicant_event_assoc_auth(wpa_s, data); in wpa_supplicant_event()
4827 wpa_msg(wpa_s, MSG_INFO, in wpa_supplicant_event()
4833 wpas_event_disassoc(wpa_s, in wpa_supplicant_event()
4838 if (wpa_s->ignore_auth_resp) { in wpa_supplicant_event()
4843 if (wpa_s->testing_resend_assoc) { in wpa_supplicant_event()
4849 wpas_event_deauth(wpa_s, in wpa_supplicant_event()
4853 wpa_supplicant_event_michael_mic_failure(wpa_s, data); in wpa_supplicant_event()
4857 if (wpa_s->own_scan_requested || in wpa_supplicant_event()
4861 os_get_reltime(&wpa_s->scan_start_time); in wpa_supplicant_event()
4862 os_reltime_sub(&wpa_s->scan_start_time, in wpa_supplicant_event()
4863 &wpa_s->scan_trigger_time, &diff); in wpa_supplicant_event()
4864 wpa_dbg(wpa_s, MSG_DEBUG, "Own scan request started a scan in %ld.%06ld seconds", in wpa_supplicant_event()
4866 wpa_s->own_scan_requested = 0; in wpa_supplicant_event()
4867 wpa_s->own_scan_running = 1; in wpa_supplicant_event()
4868 if (wpa_s->last_scan_req == MANUAL_SCAN_REQ && in wpa_supplicant_event()
4869 wpa_s->manual_scan_use_id) { in wpa_supplicant_event()
4870 wpa_msg_ctrl(wpa_s, MSG_INFO, in wpa_supplicant_event()
4872 wpa_s->manual_scan_id); in wpa_supplicant_event()
4874 wpa_msg_ctrl(wpa_s, MSG_INFO, in wpa_supplicant_event()
4878 wpa_dbg(wpa_s, MSG_DEBUG, "External program started a scan"); in wpa_supplicant_event()
4879 wpa_s->radio->external_scan_req_interface = wpa_s; in wpa_supplicant_event()
4880 wpa_msg_ctrl(wpa_s, MSG_INFO, WPA_EVENT_SCAN_STARTED); in wpa_supplicant_event()
4884 if (wpa_s->wpa_state == WPA_INTERFACE_DISABLED) { in wpa_supplicant_event()
4885 wpa_s->scan_res_handler = NULL; in wpa_supplicant_event()
4886 wpa_s->own_scan_running = 0; in wpa_supplicant_event()
4887 wpa_s->radio->external_scan_req_interface = NULL; in wpa_supplicant_event()
4888 wpa_s->last_scan_req = NORMAL_SCAN_REQ; in wpa_supplicant_event()
4893 os_reltime_initialized(&wpa_s->scan_start_time)) { in wpa_supplicant_event()
4896 os_reltime_sub(&now, &wpa_s->scan_start_time, &diff); in wpa_supplicant_event()
4897 wpa_s->scan_start_time.sec = 0; in wpa_supplicant_event()
4898 wpa_s->scan_start_time.usec = 0; in wpa_supplicant_event()
4899 wpa_dbg(wpa_s, MSG_DEBUG, "Scan completed in %ld.%06ld seconds", in wpa_supplicant_event()
4902 if (wpa_supplicant_event_scan_results(wpa_s, data)) in wpa_supplicant_event()
4905 wpa_s->own_scan_running = 0; in wpa_supplicant_event()
4907 wpa_s->radio->external_scan_req_interface = NULL; in wpa_supplicant_event()
4908 radio_work_check_next(wpa_s); in wpa_supplicant_event()
4912 wpa_supplicant_event_associnfo(wpa_s, data); in wpa_supplicant_event()
4915 wpa_supplicant_event_interface_status(wpa_s, data); in wpa_supplicant_event()
4918 wpa_supplicant_event_pmkid_candidate(wpa_s, data); in wpa_supplicant_event()
4922 wpa_supplicant_event_tdls(wpa_s, data); in wpa_supplicant_event()
4927 wpa_supplicant_event_wnm(wpa_s, data); in wpa_supplicant_event()
4932 wpa_supplicant_event_ft_response(wpa_s, data); in wpa_supplicant_event()
4937 wpa_supplicant_event_ibss_rsn_start(wpa_s, data); in wpa_supplicant_event()
4941 wpas_event_assoc_reject(wpa_s, data); in wpa_supplicant_event()
4945 if (wpa_s->current_ssid && in wpa_supplicant_event()
4946 wpa_s->current_ssid->mode == WPAS_MODE_MESH) { in wpa_supplicant_event()
4947 wpa_dbg(wpa_s, MSG_DEBUG, in wpa_supplicant_event()
4951 if (wpa_s->drv_flags & WPA_DRIVER_FLAGS_SME) in wpa_supplicant_event()
4952 sme_event_auth_timed_out(wpa_s, data); in wpa_supplicant_event()
4956 if (wpa_s->current_ssid && in wpa_supplicant_event()
4957 wpa_s->current_ssid->mode == WPAS_MODE_MESH) { in wpa_supplicant_event()
4958 wpa_dbg(wpa_s, MSG_DEBUG, in wpa_supplicant_event()
4962 if (wpa_s->drv_flags & WPA_DRIVER_FLAGS_SME) in wpa_supplicant_event()
4963 sme_event_assoc_timed_out(wpa_s, data); in wpa_supplicant_event()
4966 wpa_dbg(wpa_s, MSG_DEBUG, "EVENT_TX_STATUS dst=" MACSTR in wpa_supplicant_event()
4973 wpas_pasn_auth_tx_status(wpa_s, data->tx_status.data, in wpa_supplicant_event()
4979 if (wpa_s->ap_iface == NULL) { in wpa_supplicant_event()
4984 wpa_s, data->tx_status.dst, in wpa_supplicant_event()
4995 wpa_dbg(wpa_s, MSG_DEBUG, "EVENT_TX_STATUS pending_dst=" in wpa_supplicant_event()
4996 MACSTR, MAC2STR(wpa_s->p2pdev->pending_action_dst)); in wpa_supplicant_event()
5006 os_memcmp(wpa_s->p2pdev->pending_action_dst, in wpa_supplicant_event()
5009 wpa_s->p2pdev, data->tx_status.dst, in wpa_supplicant_event()
5021 ap_mgmt_tx_cb(wpa_s, data->tx_status.data, in wpa_supplicant_event()
5027 ap_tx_status(wpa_s, data->tx_status.dst, in wpa_supplicant_event()
5037 ap_eapol_tx_status(wpa_s, data->eapol_tx_status.dst, in wpa_supplicant_event()
5043 ap_client_poll_ok(wpa_s, data->client_poll.addr); in wpa_supplicant_event()
5046 if (wpa_s->ap_iface == NULL) in wpa_supplicant_event()
5048 ap_rx_from_unknown_sta(wpa_s, data->rx_from_unknown.addr, in wpa_supplicant_event()
5055 if (!data || !wpa_s->current_ssid) in wpa_supplicant_event()
5058 wpa_msg(wpa_s, MSG_INFO, in wpa_supplicant_event()
5071 wpa_s->assoc_freq = data->ch_switch.freq; in wpa_supplicant_event()
5072 wpa_s->current_ssid->frequency = data->ch_switch.freq; in wpa_supplicant_event()
5073 if (wpa_s->current_bss && in wpa_supplicant_event()
5074 wpa_s->current_bss->freq != data->ch_switch.freq) { in wpa_supplicant_event()
5075 wpa_s->current_bss->freq = data->ch_switch.freq; in wpa_supplicant_event()
5076 notify_bss_changes(wpa_s, WPA_BSS_FREQ_CHANGED_FLAG, in wpa_supplicant_event()
5077 wpa_s->current_bss); in wpa_supplicant_event()
5083 wpa_s->sme.ht_sec_chan = HT_SEC_CHAN_ABOVE; in wpa_supplicant_event()
5086 wpa_s->sme.ht_sec_chan = HT_SEC_CHAN_BELOW; in wpa_supplicant_event()
5089 wpa_s->sme.ht_sec_chan = HT_SEC_CHAN_UNKNOWN; in wpa_supplicant_event()
5095 if (wpa_s->current_ssid->mode == WPAS_MODE_AP || in wpa_supplicant_event()
5096 wpa_s->current_ssid->mode == WPAS_MODE_P2P_GO || in wpa_supplicant_event()
5097 wpa_s->current_ssid->mode == WPAS_MODE_MESH || in wpa_supplicant_event()
5098 wpa_s->current_ssid->mode == in wpa_supplicant_event()
5100 wpas_ap_ch_switch(wpa_s, data->ch_switch.freq, in wpa_supplicant_event()
5110 if (wpa_s->drv_flags & WPA_DRIVER_FLAGS_SME) in wpa_supplicant_event()
5111 sme_event_ch_switch(wpa_s); in wpa_supplicant_event()
5113 wpas_p2p_update_channel_list(wpa_s, WPAS_P2P_CHANNEL_UPDATE_CS); in wpa_supplicant_event()
5114 wnm_clear_coloc_intf_reporting(wpa_s); in wpa_supplicant_event()
5120 wpas_ap_event_dfs_radar_detected(wpa_s, in wpa_supplicant_event()
5125 wpas_ap_event_dfs_cac_nop_finished(wpa_s, in wpa_supplicant_event()
5132 wpas_event_dfs_cac_started(wpa_s, &data->dfs_event); in wpa_supplicant_event()
5136 wpas_event_dfs_cac_finished(wpa_s, &data->dfs_event); in wpa_supplicant_event()
5140 wpas_event_dfs_cac_aborted(wpa_s, &data->dfs_event); in wpa_supplicant_event()
5147 if (wpa_s->ext_mgmt_frame_handling) { in wpa_supplicant_event()
5154 wpa_msg(wpa_s, MSG_INFO, "MGMT-RX freq=%d datarate=%u ssi_signal=%d %s", in wpa_supplicant_event()
5169 if (wpa_s->ap_iface == NULL) { in wpa_supplicant_event()
5182 wpa_s, src, mgmt->da, in wpa_supplicant_event()
5190 if (wpa_s->current_ssid && in wpa_supplicant_event()
5191 wpa_s->current_ssid->mode == WPAS_MODE_IBSS && in wpa_supplicant_event()
5194 wpa_supplicant_event_ibss_auth(wpa_s, data); in wpa_supplicant_event()
5201 wpa_s, data->rx_mgmt.frame, in wpa_supplicant_event()
5208 if (wpa_s->ifmsh) { in wpa_supplicant_event()
5209 mesh_mpm_mgmt_rx(wpa_s, &data->rx_mgmt); in wpa_supplicant_event()
5214 wpas_pasn_auth_rx(wpa_s, mgmt, in wpa_supplicant_event()
5221 !(wpa_s->drv_flags & WPA_DRIVER_FLAGS_SME) && in wpa_supplicant_event()
5222 (wpa_s->drv_flags & WPA_DRIVER_FLAGS_SAE)) { in wpa_supplicant_event()
5224 wpa_s, data->rx_mgmt.frame, in wpa_supplicant_event()
5229 wpa_dbg(wpa_s, MSG_DEBUG, "AP: ignore received " in wpa_supplicant_event()
5243 wpas_notify_preq(wpa_s, mgmt->sa, mgmt->da, in wpa_supplicant_event()
5248 ap_mgmt_rx(wpa_s, &data->rx_mgmt); in wpa_supplicant_event()
5257 if (wpa_s->ap_iface) { in wpa_supplicant_event()
5258 hostapd_probe_req_rx(wpa_s->ap_iface->bss[0], in wpa_supplicant_event()
5268 wpas_p2p_probe_req_rx(wpa_s, data->rx_probe_req.sa, in wpa_supplicant_event()
5279 wpa_s, data->remain_on_channel.freq, in wpa_supplicant_event()
5283 wpa_s, data->remain_on_channel.freq, in wpa_supplicant_event()
5287 wpa_s, data->remain_on_channel.freq, in wpa_supplicant_event()
5294 wpa_s, data->remain_on_channel.freq); in wpa_supplicant_event()
5297 wpa_s, data->remain_on_channel.freq); in wpa_supplicant_event()
5300 wpa_s, data->remain_on_channel.freq); in wpa_supplicant_event()
5304 wpa_supplicant_rx_eapol(wpa_s, data->eapol_rx.src, in wpa_supplicant_event()
5309 wpa_msg(wpa_s, MSG_INFO, WPA_EVENT_SIGNAL_CHANGE in wpa_supplicant_event()
5315 wpa_bss_update_level(wpa_s->current_bss, in wpa_supplicant_event()
5318 wpa_s, data->signal_change.above_threshold, in wpa_supplicant_event()
5324 wpa_supplicant_update_mac_addr(wpa_s); in wpa_supplicant_event()
5327 wpa_dbg(wpa_s, MSG_DEBUG, "Interface was enabled"); in wpa_supplicant_event()
5328 if (wpa_s->wpa_state == WPA_INTERFACE_DISABLED) { in wpa_supplicant_event()
5330 wpa_s, NULL); in wpa_supplicant_event()
5331 wpa_supplicant_update_mac_addr(wpa_s); in wpa_supplicant_event()
5332 wpa_supplicant_set_default_scan_ies(wpa_s); in wpa_supplicant_event()
5333 if (wpa_s->p2p_mgmt) { in wpa_supplicant_event()
5334 wpa_supplicant_set_state(wpa_s, in wpa_supplicant_event()
5340 if (!wpa_s->ap_iface) { in wpa_supplicant_event()
5341 wpa_supplicant_set_state(wpa_s, in wpa_supplicant_event()
5343 wpa_s->scan_req = NORMAL_SCAN_REQ; in wpa_supplicant_event()
5344 wpa_supplicant_req_scan(wpa_s, 0, 0); in wpa_supplicant_event()
5346 wpa_supplicant_set_state(wpa_s, in wpa_supplicant_event()
5349 wpa_supplicant_set_state(wpa_s, WPA_DISCONNECTED); in wpa_supplicant_event()
5350 wpa_supplicant_req_scan(wpa_s, 0, 0); in wpa_supplicant_event()
5355 wpa_dbg(wpa_s, MSG_DEBUG, "Interface was disabled"); in wpa_supplicant_event()
5357 if (wpa_s->p2p_group_interface == P2P_GROUP_INTERFACE_GO || in wpa_supplicant_event()
5358 (wpa_s->current_ssid && wpa_s->current_ssid->p2p_group && in wpa_supplicant_event()
5359 wpa_s->current_ssid->mode == WPAS_MODE_P2P_GO)) { in wpa_supplicant_event()
5364 wpa_supplicant_set_state(wpa_s, WPA_INTERFACE_DISABLED); in wpa_supplicant_event()
5370 if (wpa_s->current_ssid && in wpa_supplicant_event()
5371 wpa_s->current_ssid->p2p_group) in wpa_supplicant_event()
5372 wpas_p2p_interface_unavailable(wpa_s); in wpa_supplicant_event()
5374 wpas_p2p_disconnect(wpa_s); in wpa_supplicant_event()
5381 if (wpa_s->p2p_scan_work && wpa_s->global->p2p && in wpa_supplicant_event()
5382 p2p_in_progress(wpa_s->global->p2p) > 1) { in wpa_supplicant_event()
5386 p2p_stop_find(wpa_s->global->p2p); in wpa_supplicant_event()
5390 if (wpa_s->wpa_state >= WPA_AUTHENTICATING) { in wpa_supplicant_event()
5396 wpa_s, WLAN_REASON_DEAUTH_LEAVING, 1); in wpa_supplicant_event()
5398 wpa_supplicant_mark_disassoc(wpa_s); in wpa_supplicant_event()
5399 os_reltime_age(&wpa_s->last_scan, &age); in wpa_supplicant_event()
5400 if (age.sec >= wpa_s->conf->scan_res_valid_for_connect) { in wpa_supplicant_event()
5401 clear_at.sec = wpa_s->conf->scan_res_valid_for_connect; in wpa_supplicant_event()
5406 tmp.sec = wpa_s->conf->scan_res_valid_for_connect; in wpa_supplicant_event()
5412 wpa_s, NULL); in wpa_supplicant_event()
5413 radio_remove_works(wpa_s, NULL, 0); in wpa_supplicant_event()
5415 wpa_supplicant_set_state(wpa_s, WPA_INTERFACE_DISABLED); in wpa_supplicant_event()
5419 wpa_s, &data->channel_list_changed); in wpa_supplicant_event()
5422 wpas_p2p_interface_unavailable(wpa_s); in wpa_supplicant_event()
5425 wpa_dbg(wpa_s, MSG_DEBUG, "Best channel event received " in wpa_supplicant_event()
5429 wpa_s->best_24_freq = data->best_chan.freq_24; in wpa_supplicant_event()
5430 wpa_s->best_5_freq = data->best_chan.freq_5; in wpa_supplicant_event()
5431 wpa_s->best_overall_freq = data->best_chan.freq_overall; in wpa_supplicant_event()
5432 wpas_p2p_update_best_channels(wpa_s, data->best_chan.freq_24, in wpa_supplicant_event()
5437 wpa_supplicant_event_unprot_deauth(wpa_s, in wpa_supplicant_event()
5441 wpa_supplicant_event_unprot_disassoc(wpa_s, in wpa_supplicant_event()
5446 if (wpa_s->ap_iface && data) in wpa_supplicant_event()
5447 hostapd_event_sta_low_ack(wpa_s->ap_iface->bss[0], in wpa_supplicant_event()
5452 wpa_tdls_disable_unreachable_link(wpa_s->wpa, in wpa_supplicant_event()
5458 ibss_rsn_stop(wpa_s->ibss_rsn, data->ibss_peer_lost.peer); in wpa_supplicant_event()
5463 wpa_s->bssid, ETH_ALEN)) in wpa_supplicant_event()
5465 if (!wpa_s->wpa) in wpa_supplicant_event()
5467 wpa_sm_update_replay_ctr(wpa_s->wpa, in wpa_supplicant_event()
5471 wpa_s->sched_scanning = 0; in wpa_supplicant_event()
5472 resched = wpa_s->scanning && wpas_scan_scheduled(wpa_s); in wpa_supplicant_event()
5473 wpa_supplicant_notify_scanning(wpa_s, 0); in wpa_supplicant_event()
5475 if (wpa_s->wpa_state == WPA_INTERFACE_DISABLED) in wpa_supplicant_event()
5482 if (!wpa_s->sched_scan_stop_req && in wpa_supplicant_event()
5483 wpa_s->wpa_state == WPA_SCANNING) { in wpa_supplicant_event()
5484 wpa_dbg(wpa_s, MSG_DEBUG, in wpa_supplicant_event()
5486 wpa_supplicant_req_scan(wpa_s, 1, 0); in wpa_supplicant_event()
5490 wpa_s->sched_scan_stop_req = 0; in wpa_supplicant_event()
5496 if (wpa_s->sched_scan_timed_out) { in wpa_supplicant_event()
5497 wpa_supplicant_req_sched_scan(wpa_s); in wpa_supplicant_event()
5498 } else if (wpa_s->pno_sched_pending) { in wpa_supplicant_event()
5499 wpa_s->pno_sched_pending = 0; in wpa_supplicant_event()
5500 wpas_start_pno(wpa_s); in wpa_supplicant_event()
5502 wpa_supplicant_req_scan(wpa_s, 0, 0); in wpa_supplicant_event()
5508 wpas_wps_start_pbc(wpa_s, NULL, 0, 0); in wpa_supplicant_event()
5512 wpa_supplicant_notify_avoid_freq(wpa_s, data); in wpa_supplicant_event()
5516 if (!wpa_s->ap_iface || !data) in wpa_supplicant_event()
5519 wpa_s->ap_iface->bss[0], in wpa_supplicant_event()
5526 if (!wpa_s->ifmsh || !data) in wpa_supplicant_event()
5528 wpa_mesh_notify_peer(wpa_s, data->mesh_peer.peer, in wpa_supplicant_event()
5535 if (!wpa_s->ap_iface) in wpa_supplicant_event()
5537 hostapd_event_get_survey(wpa_s->ap_iface, in wpa_supplicant_event()
5544 if (!wpa_s->ap_iface) in wpa_supplicant_event()
5546 hostapd_acs_channel_selected(wpa_s->ap_iface->bss[0], in wpa_supplicant_event()
5553 wpa_s->p2p_lo_started = 0; in wpa_supplicant_event()
5554 wpa_msg(wpa_s, MSG_INFO, P2P_EVENT_LISTEN_OFFLOAD_STOP in wpa_supplicant_event()
5560 if (!wpa_s->current_bss || !wpa_s->current_ssid) in wpa_supplicant_event()
5562 wpa_msg(wpa_s, MSG_INFO, WPA_EVENT_BEACON_LOSS); in wpa_supplicant_event()
5563 bgscan_notify_beacon_loss(wpa_s); in wpa_supplicant_event()
5567 if (!wpa_s->current_ssid) { in wpa_supplicant_event()
5571 sme_external_auth_trigger(wpa_s, data); in wpa_supplicant_event()
5575 wpa_supplicant_event_port_authorized(wpa_s); in wpa_supplicant_event()
5579 if (!wpa_s->ap_iface || !data) in wpa_supplicant_event()
5582 hostapd_event_sta_opmode_changed(wpa_s->ap_iface->bss[0], in wpa_supplicant_event()
5590 wpas_event_unprot_beacon(wpa_s, &data->unprot_beacon); in wpa_supplicant_event()
5593 wpa_msg(wpa_s, MSG_INFO, "Unknown event %d", event); in wpa_supplicant_event()
5602 struct wpa_supplicant *wpa_s; in wpa_supplicant_event_global() local
5607 wpa_s = wpa_supplicant_get_iface(ctx, data->interface_status.ifname); in wpa_supplicant_event_global()
5608 if (wpa_s && wpa_s->driver->get_ifindex) { in wpa_supplicant_event_global()
5611 ifindex = wpa_s->driver->get_ifindex(wpa_s->drv_priv); in wpa_supplicant_event_global()
5613 wpa_dbg(wpa_s, MSG_DEBUG, in wpa_supplicant_event_global()
5627 wpa_s = wpa_supplicant_add_iface(ctx, wpa_i, NULL); in wpa_supplicant_event_global()
5632 if (wpa_s) in wpa_supplicant_event_global()
5633 wpa_supplicant_event(wpa_s, event, data); in wpa_supplicant_event_global()