Lines Matching refs:ssid
139 int wpa_set_wep_keys(struct wpa_supplicant *wpa_s, struct wpa_ssid *ssid)
144 if (ssid->wep_key_len[i] == 0)
149 i, i == ssid->wep_tx_keyidx, NULL, 0,
150 ssid->wep_key[i], ssid->wep_key_len[i],
151 i == ssid->wep_tx_keyidx ?
162 struct wpa_ssid *ssid)
173 if (ssid->mode != WPAS_MODE_IBSS) {
175 "IBSS/ad-hoc) for WPA-None", ssid->mode);
179 if (!ssid->psk_set) {
187 os_memcpy(key, ssid->psk, 16);
192 os_memcpy(key, ssid->psk, 16);
198 os_memcpy(key, ssid->psk, 16 + 8);
199 os_memcpy(key + 16 + 8, ssid->psk + 16, 8);
315 struct wpa_ssid *ssid = wpa_s->current_ssid;
318 if (ssid->mode == WPAS_MODE_IBSS &&
345 if (ssid->eapol_flags & EAPOL_FLAG_REQUIRE_KEY_UNICAST) {
348 if (ssid->eapol_flags & EAPOL_FLAG_REQUIRE_KEY_BROADCAST) {
357 eapol_conf.workaround = ssid->eap_workaround;
381 eapol_sm_notify_config(wpa_s->eapol, &ssid->eap, &eapol_conf);
384 if (wpa_s->key_mgmt == WPA_KEY_MGMT_NONE && ssid->mka_psk_set)
385 ieee802_1x_create_preshared_mka(wpa_s, ssid);
387 ieee802_1x_alloc_kay_sm(wpa_s, ssid);
396 * @ssid: Configuration data for the network
403 struct wpa_ssid *ssid)
410 if (ssid->key_mgmt & WPA_KEY_MGMT_WPS)
412 else if (ssid->key_mgmt & WPA_KEY_MGMT_IEEE8021X_NO_WPA)
428 if (ssid->wep_key_len[i] > 5) {
432 } else if (ssid->wep_key_len[i] > 0) {
563 struct wpa_ssid *ssid;
564 for (ssid = wpa_s->conf->ssid; ssid; ssid = ssid->next)
565 wpas_notify_network_removed(wpa_s, ssid);
858 * wpa_supplicant_reset_bgscan - Reset the bgscan for the current SSID.
936 const u8 *ssid;
942 ssid = wpa_s->current_bss->ssid;
947 os_memcmp(wpa_s->current_ssid->ssid, ssid, ssid_len) != 0))
955 "SSID not yet verified; check if the driver has received a verified Beacon frame");
973 os_memcmp(&ie[2], ssid, ssid_len) == 0) {
975 "SSID verified based on a Beacon frame and beacon protection");
996 "SSID not yet verified; try to verify using beacon protection");
1093 struct wpa_ssid *ssid = wpa_s->current_ssid;
1116 ssid ? ssid->id : -1,
1117 ssid && ssid->id_str ? ssid->id_str : "",
1120 wpas_clear_temp_disabled(wpa_s, ssid, 1);
1134 ssid && ssid->eap.erp)
1138 if (ssid && (ssid->key_mgmt & WPA_KEY_MGMT_OWE))
1369 struct wpa_ssid *ssid,
1383 if (!(ie->group_cipher & ssid->group_cipher)) {
1386 ie->group_cipher, ssid->group_cipher);
1389 if (!(ie->pairwise_cipher & ssid->pairwise_cipher)) {
1392 ie->pairwise_cipher, ssid->pairwise_cipher);
1395 if (!(ie->key_mgmt & ssid->key_mgmt)) {
1398 ie->key_mgmt, ssid->key_mgmt);
1403 wpas_get_ssid_pmf(wpa_s, ssid) == MGMT_FRAME_PROTECTION_REQUIRED) {
1414 static int matching_ciphers(struct wpa_ssid *ssid, struct wpa_ie_data *ie,
1421 return (ie->group_cipher & ssid->group_cipher) &&
1422 (ie->pairwise_cipher & ssid->pairwise_cipher);
1427 struct wpa_ssid *ssid, struct wpa_ie_data *ie)
1432 if (ssid->group_mgmt_cipher)
1433 sel &= ssid->group_mgmt_cipher;
1434 if (wpas_get_ssid_pmf(wpa_s, ssid) == NO_MGMT_FRAME_PROTECTION ||
1439 ie->mgmt_group_cipher, ssid->group_mgmt_cipher, sel);
1463 wpas_get_ssid_pmf(wpa_s, ssid));
1470 * @ssid: Configuration data for the selected network
1478 struct wpa_bss *bss, struct wpa_ssid *ssid,
1481 if (ssid->psk_set) {
1483 ssid->psk, PMK_LEN);
1484 os_memcpy(psk, ssid->psk, PMK_LEN);
1489 if (bss && ssid->bssid_set && ssid->ssid_len == 0 && ssid->passphrase) {
1490 if (pbkdf2_sha1(ssid->passphrase, bss->ssid, bss->ssid_len,
1502 if (ssid->ext_psk) {
1504 ssid->ext_psk);
1527 if (pbkdf2_sha1(pw_str, bss->ssid, bss->ssid_len,
1570 struct wpa_ssid *ssid)
1582 if (ssid->key_mgmt & WPA_KEY_MGMT_SAE) {
1588 if (ssid->key_mgmt & WPA_KEY_MGMT_SAE_EXT_KEY) {
1594 if (ssid->key_mgmt & WPA_KEY_MGMT_PSK_SHA256)
1599 if (ssid->key_mgmt & WPA_KEY_MGMT_SAE) {
1605 if (ssid->key_mgmt & WPA_KEY_MGMT_SAE_EXT_KEY) {
1611 if (ssid->key_mgmt & WPA_KEY_MGMT_PSK)
1615 if (ssid->key_mgmt & WPA_KEY_MGMT_PSK) {
1621 if (ssid->key_mgmt & WPA_KEY_MGMT_SAE_EXT_KEY) {
1627 if (ssid->key_mgmt & WPA_KEY_MGMT_PSK_SHA256)
1632 if (ssid->key_mgmt & WPA_KEY_MGMT_SAE) {
1638 if (ssid->key_mgmt & WPA_KEY_MGMT_PSK) {
1644 if (ssid->key_mgmt & WPA_KEY_MGMT_PSK_SHA256)
1656 if (ssid->sae_pk)
1679 * @ssid: Configuration data for the selected network
1691 struct wpa_bss *bss, struct wpa_ssid *ssid,
1710 if (bss_rsn && (ssid->proto & WPA_PROTO_RSN) &&
1712 matching_ciphers(ssid, &ie, bss->freq) &&
1713 (ie.key_mgmt & ssid->key_mgmt)) {
1716 } else if (bss_wpa && (ssid->proto & WPA_PROTO_WPA) &&
1718 (ie.group_cipher & ssid->group_cipher) &&
1719 (ie.pairwise_cipher & ssid->pairwise_cipher) &&
1720 (ie.key_mgmt & ssid->key_mgmt)) {
1724 } else if (bss_osen && (ssid->proto & WPA_PROTO_OSEN) &&
1726 (ie.group_cipher & ssid->group_cipher) &&
1727 (ie.pairwise_cipher & ssid->pairwise_cipher) &&
1728 (ie.key_mgmt & ssid->key_mgmt)) {
1731 } else if (bss_rsn && (ssid->proto & WPA_PROTO_OSEN) &&
1733 (ie.group_cipher & ssid->group_cipher) &&
1734 (ie.pairwise_cipher & ssid->pairwise_cipher) &&
1735 (ie.key_mgmt & ssid->key_mgmt)) {
1742 "WPA: ssid proto=0x%x pairwise_cipher=0x%x group_cipher=0x%x key_mgmt=0x%x",
1743 ssid->proto, ssid->pairwise_cipher, ssid->group_cipher,
1744 ssid->key_mgmt);
1745 wpa_dbg(wpa_s, MSG_DEBUG, "WPA: BSS " MACSTR " ssid='%s'%s%s%s",
1747 wpa_ssid_txt(bss->ssid, bss->ssid_len),
1777 if (ssid->proto & WPA_PROTO_OSEN)
1779 else if (ssid->proto & WPA_PROTO_RSN)
1783 if (wpa_supplicant_suites_from_ai(wpa_s, ssid, &ie) < 0) {
1785 ie.group_cipher = ssid->group_cipher;
1786 ie.pairwise_cipher = ssid->pairwise_cipher;
1787 ie.key_mgmt = ssid->key_mgmt;
1789 if (ssid->ieee80211w != NO_MGMT_FRAME_PROTECTION) {
1790 if (ssid->group_mgmt_cipher &
1794 else if (ssid->group_mgmt_cipher &
1798 else if (ssid->group_mgmt_cipher &
1807 if ((ssid->key_mgmt & WPA_KEY_MGMT_OWE) &&
1808 !ssid->owe_only &&
1810 wpa_supplicant_set_non_wpa_policy(wpa_s, ssid);
1825 if (ssid->ieee80211w) {
1833 !!(ssid->proto & (WPA_PROTO_RSN | WPA_PROTO_OSEN)));
1849 sel = ie.group_cipher & ssid->group_cipher;
1852 ie.group_cipher, ssid->group_cipher, sel);
1862 sel = ie.pairwise_cipher & ssid->pairwise_cipher;
1865 ie.pairwise_cipher, ssid->pairwise_cipher, sel);
1876 sel = ie.key_mgmt & ssid->key_mgmt;
1880 wpas_is_sae_avoided(wpa_s, ssid, &ie))
1891 ie.key_mgmt, ssid->key_mgmt, sel);
1900 if (!ssid->ft_eap_pmksa_caching &&
1951 if (!ssid->ft_eap_pmksa_caching &&
2024 (wpas_get_ssid_pmf(wpa_s, ssid) == MGMT_FRAME_PROTECTION_REQUIRED ||
2031 wpas_set_mgmt_group_cipher(wpa_s, ssid, &ie);
2035 wpa_sm_set_param(wpa_s->wpa, WPA_PARAM_OCV, ssid->ocv);
2038 if ((ssid->sae_password_id ||
2051 wpa_key_mgmt_sae(ssid->key_mgmt) &&
2052 ssid->sae_pk != SAE_PK_MODE_DISABLED &&
2053 ((ssid->sae_password &&
2054 sae_pk_valid_password(ssid->sae_password)) ||
2055 (!ssid->sae_password && ssid->passphrase &&
2056 sae_pk_valid_password(ssid->passphrase))));
2059 wpas_get_ssid_pmf(wpa_s, ssid) != MGMT_FRAME_PROTECTION_REQUIRED) {
2080 if (ssid->mode == WPAS_MODE_INFRA && wpa_s->conf->extended_key_id &&
2081 (ssid->proto & WPA_PROTO_RSN) &&
2082 ssid->pairwise_cipher & (WPA_CIPHER_CCMP | WPA_CIPHER_CCMP_256 |
2119 if (ssid->ssid_protection && proto == WPA_PROTO_RSN) {
2122 /* Enable SSID protection based on the AP advertising support
2158 wpa_sm_set_param(wpa_s->wpa, WPA_PARAM_DPP_PFS, ssid->dpp_pfs);
2161 } else if (wpa_key_mgmt_wpa_psk(ssid->key_mgmt)) {
2164 if (wpa_key_mgmt_wpa_psk_no_sae(ssid->key_mgmt)) {
2167 if (wpa_supplicant_get_psk(wpa_s, bss, ssid,
2176 if (wpa_key_mgmt_sae(ssid->key_mgmt) &&
2177 (ssid->sae_password || ssid->passphrase || ssid->ext_psk))
2195 if (ssid->mode != WPAS_MODE_IBSS &&
2197 (ssid->wpa_deny_ptk0_rekey == PTK0_REKEY_ALLOW_NEVER ||
2198 (ssid->wpa_deny_ptk0_rekey == PTK0_REKEY_ALLOW_LOCAL_OK &&
2211 wpas_update_allowed_key_mgmt(wpa_s, ssid);
2246 *pos |= 0x02; /* Bit 25 - SSID List */
2373 struct wpa_ssid *ssid;
2375 for (ssid = wpa_s->conf->ssid; ssid; ssid = ssid->next) {
2376 if (ssid == test_ssid)
2420 struct wpa_ssid *ssid)
2432 if (ether_addr_equal(wpa_s->own_addr, ssid->mac_value))
2457 if (!ssid) {
2459 "Invalid 'ssid' for address policy 3");
2462 os_memcpy(addr, ssid->mac_value, ETH_ALEN);
2502 void wpa_s_setup_sae_pt(struct wpa_config *conf, struct wpa_ssid *ssid,
2513 password = ssid->sae_password;
2515 password = ssid->passphrase;
2518 !wpa_key_mgmt_sae(ssid->key_mgmt) ||
2519 (conf->sae_pwe == SAE_PWE_HUNT_AND_PECK && !ssid->sae_password_id &&
2520 !wpa_key_mgmt_sae_ext_key(ssid->key_mgmt) &&
2525 sae_deinit_pt(ssid->pt);
2526 ssid->pt = NULL;
2530 if (ssid->pt)
2532 ssid->pt = sae_derive_pt(groups, ssid->ssid, ssid->ssid_len,
2534 ssid->sae_password_id);
2585 * @ssid: Configuration data for the selected network
2590 struct wpa_bss *bss, struct wpa_ssid *ssid)
2606 if (ssid->mac_addr == WPAS_MAC_ADDR_STYLE_NOT_SET)
2609 rand_style = ssid->mac_addr;
2626 if (wpa_s->last_ssid == ssid) {
2644 wpa_s_setup_sae_pt(wpa_s->conf, ssid, false);
2648 int status = wpas_update_random_addr(wpa_s, rand_style, ssid);
2654 wpa_sm_pmksa_cache_flush(wpa_s->wpa, ssid);
2660 wpa_s->last_ssid = ssid;
2666 if (ssid->mode == WPAS_MODE_IBSS &&
2667 !(ssid->key_mgmt & (WPA_KEY_MGMT_NONE | WPA_KEY_MGMT_WPA_NONE))) {
2674 if (ssid->mode == WPAS_MODE_AP || ssid->mode == WPAS_MODE_P2P_GO ||
2675 ssid->mode == WPAS_MODE_P2P_GROUP_FORMATION) {
2682 if (wpa_supplicant_create_ap(wpa_s, ssid) < 0) {
2684 if (ssid->mode == WPAS_MODE_P2P_GROUP_FORMATION)
2696 if (ssid->mode == WPAS_MODE_MESH) {
2704 ssid->frequency = bss->freq;
2705 if (wpa_supplicant_join_mesh(wpa_s, ssid) < 0) {
2725 wpa_supplicant_rsn_supp_set_config(wpa_s, ssid);
2728 if (wpas_dpp_check_connect(wpa_s, ssid, bss) != 0)
2738 wpas_mbo_check_pmf(wpa_s, bss, ssid);
2742 ssid->mode == WPAS_MODE_INFRA) {
2743 ssid);
2758 if (ssid->mode == WPAS_MODE_IBSS || ssid->mode == WPAS_MODE_MESH) {
2771 cwork->ssid = ssid;
2788 const struct wpa_ssid *ssid)
2795 hw_mode = ieee80211_freq_to_chan(ssid->frequency, &channel);
2830 const struct wpa_ssid *ssid)
2840 if (ssid->ssid_len == bss->ssid_len &&
2841 os_memcmp(ssid->ssid, bss->ssid, bss->ssid_len) == 0)
2849 const struct wpa_ssid *ssid,
2853 if (ssid->mode == WPAS_MODE_IBSS &&
2869 if (ssid->disable_ht)
2878 const struct wpa_ssid *ssid,
2884 if (!drv_supports_vht(wpa_s, ssid))
2888 if (ssid->mode == WPAS_MODE_IBSS &&
2896 if (ssid->disable_vht)
2905 const struct wpa_ssid *ssid,
2910 if (ssid->disable_he)
2926 const struct wpa_ssid *ssid,
2930 if (ssid->disable_eht)
2945 const struct wpa_ssid *ssid,
2976 if (ssid->disable_ht40)
3052 const struct wpa_ssid *ssid,
3085 if (ssid->max_oper_chwidth == CONF_OPER_CHWIDTH_USE_HT)
3124 if (ssid->max_oper_chwidth == CONF_OPER_CHWIDTH_80P80MHZ) {
3158 } else if (ssid->max_oper_chwidth == CONF_OPER_CHWIDTH_160MHZ) {
3172 freq->channel, ssid->enable_edmg,
3173 ssid->edmg_channel, freq->ht_enabled,
3191 const struct wpa_ssid *ssid,
3194 int ieee80211_mode = wpas_mode_to_ieee80211_mode(ssid->mode);
3201 freq->freq = ssid->frequency;
3203 if (ssid->mode == WPAS_MODE_IBSS && !ssid->fixed_freq) {
3204 struct wpa_bss *bss = ibss_find_existing_bss(wpa_s, ssid);
3217 hw_mode, is_6ghz_freq(ssid->frequency));
3233 freq->ht_enabled = ibss_mesh_can_use_ht(wpa_s, ssid, mode);
3235 freq->vht_enabled = ibss_mesh_can_use_vht(wpa_s, ssid, mode);
3237 freq->he_enabled = ibss_mesh_can_use_he(wpa_s, ssid, mode,
3242 ibss_mesh_select_40mhz(wpa_s, ssid, mode, freq, obss_scan);
3243 if (!ibss_mesh_select_80_160mhz(wpa_s, ssid, mode, freq,
3249 freq->eht_enabled = ibss_mesh_can_use_eht(wpa_s, ssid, mode,
3423 struct wpa_bss *bss, struct wpa_ssid *ssid,
3460 wpa_key_mgmt_wpa(ssid->key_mgmt)) {
3474 try_opportunistic = (ssid->proactive_key_caching < 0 ?
3476 ssid->proactive_key_caching) &&
3477 (ssid->proto & WPA_PROTO_RSN);
3479 if (wpa_key_mgmt_fils(ssid->key_mgmt))
3483 ssid, try_opportunistic,
3491 if (wpa_supplicant_set_suites(wpa_s, bss, ssid,
3500 (ssid->key_mgmt & WPA_KEY_MGMT_OSEN)) {
3503 if (wpa_supplicant_set_suites(wpa_s, bss, ssid,
3511 } else if ((ssid->key_mgmt & WPA_KEY_MGMT_IEEE8021X_NO_WPA) && bss &&
3512 wpa_key_mgmt_wpa_ieee8021x(ssid->key_mgmt)) {
3518 wpa_supplicant_set_non_wpa_policy(wpa_s, ssid);
3521 } else if (wpa_key_mgmt_wpa_any(ssid->key_mgmt)) {
3523 if (wpa_supplicant_set_suites(wpa_s, NULL, ssid,
3532 } else if (ssid->key_mgmt & WPA_KEY_MGMT_WPS) {
3534 wps_ie = wps_build_assoc_req_ie(wpas_wps_get_req_type(ssid));
3541 wpa_supplicant_set_non_wpa_policy(wpa_s, ssid);
3549 wpa_supplicant_set_non_wpa_policy(wpa_s, ssid);
3555 if (ssid->key_mgmt & WPA_KEY_MGMT_IEEE8021X_NO_WPA) {
3556 if (ssid->leap) {
3557 if (ssid->non_leap == 0)
3569 ssid->eap.erp && wpa_key_mgmt_fils(wpa_s->key_mgmt) &&
3570 eapol_sm_get_erp_info(wpa_s->eapol, &ssid->eap, &username,
3588 ssid->eap.erp && wpa_key_mgmt_fils(wpa_s->key_mgmt) &&
3600 if (ssid->auth_alg) {
3601 algs = ssid->auth_alg;
3622 ssid->p2p_group);
3647 wpa_ie_len += wpas_supp_op_class_ie(wpa_s, ssid, bss,
3662 if (ssid->p2p_group)
3684 if (ssid->max_idle && wpa_ie_len + 5 <= max_wpa_ie_len) {
3689 WPA_PUT_LE16(pos, ssid->max_idle);
3696 if (is_hs20_network(wpa_s, ssid, bss)) {
3701 int pps_mo_id = hs20_get_pps_mo_id(wpa_s, ssid);
3706 wpas_hs20_add_roam_cons_sel(hs20, ssid);
3775 ssid->key_mgmt == WPA_KEY_MGMT_OWE &&
3780 if (ssid->owe_group) {
3781 group = ssid->owe_group;
3810 ssid->dpp_netaccesskey &&
3811 ssid->dpp_pfs != 2 && !ssid->dpp_pfs_fallback) {
3819 wpa_s->dpp_pfs = dpp_pfs_init(ssid->dpp_netaccesskey,
3820 ssid->dpp_netaccesskey_len);
3927 if (ssid->multi_ap_backhaul_sta) {
3932 multi_ap.profile = ssid->multi_ap_profile;
4143 struct wpa_ssid *ssid = cwork->ssid;
4185 if (cwork->bss_removed || !wpas_valid_bss_ssid(wpa_s, bss, ssid) ||
4186 wpas_network_disabled(wpa_s, ssid)) {
4187 wpa_dbg(wpa_s, MSG_DEBUG, "BSS/SSID entry for association not valid anymore - drop connection attempt");
4215 wpa_ie = wpas_populate_assoc_ies(wpa_s, bss, ssid, ¶ms, NULL);
4227 " (SSID='%s' freq=%d MHz)", MAC2STR(bss->bssid),
4228 wpa_ssid_txt(bss->ssid, bss->ssid_len), bss->freq);
4245 } else if ((ssid->ssid == NULL || ssid->ssid_len == 0) &&
4247 (ssid->key_mgmt & WPA_KEY_MGMT_WPS)) {
4258 wpa_msg(wpa_s, MSG_INFO, "Trying to associate with SSID '%s'",
4259 wpa_ssid_txt(ssid->ssid, ssid->ssid_len));
4280 if (wpa_set_wep_keys(wpa_s, ssid)) {
4291 if ((ssid->eapol_flags &
4307 wpa_supplicant_set_wpa_none_key(wpa_s, ssid);
4311 * selected SSID is available to wpas_notify_state_changed(). */
4313 wpa_s->current_ssid = ssid;
4317 params.ssid = bss->ssid;
4319 if (!wpas_driver_bss_selection(wpa_s) || ssid->bssid_set ||
4325 ssid->bssid_set,
4334 if (ssid->bssid_hint_set)
4335 params.bssid_hint = ssid->bssid_hint;
4337 params.ssid = ssid->ssid;
4338 params.ssid_len = ssid->ssid_len;
4339 params.pbss = (ssid->pbss != 2) ? ssid->pbss : 0;
4342 if (ssid->mode == WPAS_MODE_IBSS && ssid->bssid_set &&
4344 params.bssid = ssid->bssid;
4349 if ((ssid->mode == WPAS_MODE_IBSS || ssid->mode == WPAS_MODE_MESH) &&
4350 ssid->frequency > 0 && params.freq.freq == 0)
4351 ibss_mesh_setup_freq(wpa_s, ssid, ¶ms.freq);
4353 if (ssid->mode == WPAS_MODE_IBSS) {
4354 params.fixed_freq = ssid->fixed_freq;
4355 if (ssid->beacon_int)
4356 params.beacon_int = ssid->beacon_int;
4361 if (bss && ssid->enable_edmg)
4380 if (ssid->edmg_channel) {
4390 hostapd_encode_edmg_chan(ssid->enable_edmg,
4391 ssid->edmg_channel,
4400 ssid->edmg_channel);
4407 ssid->edmg_channel);
4433 params.mode = ssid->mode;
4434 params.bg_scan_period = ssid->bg_scan_period;
4440 if (ssid->wep_key_len[i])
4441 params.wep_key[i] = ssid->wep_key[i];
4442 params.wep_key_len[i] = ssid->wep_key_len[i];
4444 params.wep_tx_keyidx = ssid->wep_tx_keyidx;
4453 params.passphrase = ssid->passphrase;
4454 if (wpa_supplicant_get_psk(wpa_s, bss, ssid, psk) == 0)
4474 ssid->proactive_key_caching < 0 ?
4475 wpa_s->conf->okc : ssid->proactive_key_caching;
4481 wpa_supplicant_get_psk(wpa_s, bss, ssid, psk) == 0)
4488 if (ssid->sae_password) {
4489 params.sae_password = ssid->sae_password;
4490 params.sae_password_id = ssid->sae_password_id;
4491 } else if (ssid->passphrase) {
4492 params.passphrase = ssid->passphrase;
4498 params.mgmt_frame_protection = wpas_get_ssid_pmf(wpa_s, ssid);
4511 } else if (!rsn && (ssid->key_mgmt & WPA_KEY_MGMT_OWE) &&
4512 !ssid->owe_only) {
4518 params.p2p = ssid->p2p_group;
4530 wpa_supplicant_apply_ht_overrides(wpa_s, ssid, ¶ms);
4537 wpa_supplicant_apply_vht_overrides(wpa_s, ssid, ¶ms);
4540 wpa_supplicant_apply_he_overrides(wpa_s, ssid, ¶ms);
4542 wpa_supplicant_apply_eht_overrides(wpa_s, ssid, ¶ms);
4558 wpa_s, params.freq.freq, ssid) < 0) {
4601 wpa_supplicant_set_wpa_none_key(wpa_s, ssid);
4607 } else if (ssid->mode == WPAS_MODE_IBSS &&
4622 timeout = ssid->mode == WPAS_MODE_IBSS ? 10 : 5;
4625 timeout = ssid->mode == WPAS_MODE_IBSS ? 20 : 10;
4634 wpa_set_wep_keys(wpa_s, ssid);
4638 if (old_ssid && old_ssid != ssid) {
4650 ssid->bssid_set) {
4659 wpa_sm_set_ssid(wpa_s->wpa, bss->ssid, bss->ssid_len);
4777 struct wpa_ssid *ssid)
4779 if (!ssid || !ssid->disabled || ssid->disabled == 2)
4782 ssid->disabled = 0;
4783 ssid->owe_transition_bss_select_count = 0;
4784 wpas_clear_temp_disabled(wpa_s, ssid, 1);
4785 wpas_notify_network_enabled_changed(wpa_s, ssid);
4809 struct wpa_ssid *ssid;
4811 ssid = wpa_config_add_network(wpa_s->conf);
4812 if (!ssid)
4814 wpas_notify_network_added(wpa_s, ssid);
4815 ssid->disabled = 1;
4816 wpa_config_set_network_defaults(ssid);
4818 return ssid;
4837 struct wpa_ssid *ssid, *prev = wpa_s->current_ssid;
4840 ssid = wpa_config_get_network(wpa_s->conf, id);
4841 if (!ssid)
4843 wpas_notify_network_removed(wpa_s, ssid);
4845 if (ssid == prev || !prev) {
4856 if (ssid == prev) {
4866 was_disabled = ssid->disabled;
4895 struct wpa_ssid *ssid;
4917 ssid = wpa_s->conf->ssid;
4918 while (ssid) {
4919 struct wpa_ssid *remove_ssid = ssid;
4922 id = ssid->id;
4923 ssid = ssid->next;
4934 * @ssid: wpa_ssid structure for a configured network or %NULL
4939 struct wpa_ssid *ssid)
4941 if (ssid == NULL) {
4942 for (ssid = wpa_s->conf->ssid; ssid; ssid = ssid->next)
4943 wpa_supplicant_enable_one_network(wpa_s, ssid);
4945 wpa_supplicant_enable_one_network(wpa_s, ssid);
4968 * @ssid: wpa_ssid structure for a configured network or %NULL
4973 struct wpa_ssid *ssid)
4978 if (ssid == NULL) {
4982 for (other_ssid = wpa_s->conf->ssid; other_ssid;
5001 } else if (ssid->disabled != 2) {
5002 if (ssid == wpa_s->current_ssid) {
5009 was_disabled = ssid->disabled;
5011 ssid->disabled = 1;
5013 if (was_disabled != ssid->disabled) {
5014 wpas_notify_network_enabled_changed(wpa_s, ssid);
5029 * @ssid: wpa_ssid structure for a configured network or %NULL for any network
5032 struct wpa_ssid *ssid)
5038 if (ssid && ssid != wpa_s->current_ssid && wpa_s->current_ssid) {
5046 if (ssid)
5047 wpas_clear_temp_disabled(wpa_s, ssid, 1);
5053 for (other_ssid = wpa_s->conf->ssid; other_ssid;
5059 other_ssid->disabled = ssid ? (ssid->id != other_ssid->id) : 0;
5067 if (ssid && ssid == wpa_s->current_ssid && wpa_s->current_ssid &&
5075 if (ssid) {
5076 wpa_s->current_ssid = ssid;
5079 (ssid->mode == WPAS_MODE_MESH ||
5080 ssidssid : NULL;
5096 if (ssid) {
5097 ssid->owe_transition_bss_select_count = 0;
5098 wpa_s_setup_sae_pt(wpa_s->conf, ssid, false);
5108 if (ssid)
5109 wpas_notify_network_selected(wpa_s, ssid);
5122 struct wpa_ssid *ssid, *next;
5139 ssid = wpa_s->conf->ssid;
5140 while (ssid) {
5141 next = ssid->next;
5143 if (ssid->parent_cred == cred) {
5146 ssid->id);
5147 if (wpa_supplicant_remove_network(wpa_s, ssid->id) ==
5151 ssid->id);
5155 ssid = next;
5405 /* Check network profile SSID aganst the SSID in the
5440 u8 ssid[SSID_MAX_LEN];
5446 res = wpa_drv_get_ssid(wpa_s, ssid);
5448 wpa_msg(wpa_s, MSG_WARNING, "Could not read SSID from "
5463 entry = wpa_s->conf->ssid;
5467 (!entry->ssid ||
5468 os_memcmp(ssid, entry->ssid, ssid_len) == 0)) ||
5476 (entry->ssid == NULL || entry->ssid_len == 0) &&
5484 (entry->ssid &&
5485 owe_trans_ssid_match(wpa_s, bssid, entry->ssid,
6256 struct wpa_supplicant *wpa_s, struct wpa_ssid *ssid,
6262 if (!ssid)
6265 params->disable_ht = ssid->disable_ht;
6271 wpa_set_htcap_mcs(wpa_s, htcaps, htcaps_mask, ssid->ht_mcs);
6273 ssid->disable_max_amsdu);
6274 wpa_set_ampdu_factor(wpa_s, htcaps, htcaps_mask, ssid->ampdu_factor);
6275 wpa_set_ampdu_density(wpa_s, htcaps, htcaps_mask, ssid->ampdu_density);
6276 wpa_set_disable_ht40(wpa_s, htcaps, htcaps_mask, ssid->disable_ht40);
6277 wpa_set_disable_sgi(wpa_s, htcaps, htcaps_mask, ssid->disable_sgi);
6278 wpa_set_disable_ldpc(wpa_s, htcaps, htcaps_mask, ssid->disable_ldpc);
6279 wpa_set_rx_stbc(wpa_s, htcaps, htcaps_mask, ssid->rx_stbc);
6280 wpa_set_tx_stbc(wpa_s, htcaps, htcaps_mask, ssid->tx_stbc);
6282 if (ssid->ht40_intolerant) {
6294 struct wpa_supplicant *wpa_s, struct wpa_ssid *ssid,
6300 if (!ssid)
6303 params->disable_vht = ssid->disable_vht;
6311 vhtcaps->vht_capabilities_info = host_to_le32(ssid->vht_capa);
6312 vhtcaps_mask->vht_capabilities_info = host_to_le32(ssid->vht_capa_mask);
6315 if (ssid->disable_sgi) {
6326 if (ssid->vht_capa_mask & VHT_CAP_MAX_A_MPDU_LENGTH_EXPONENT_MAX) {
6329 max_ampdu = (ssid->vht_capa &
6342 if (ssid->vht_tx_mcs_nss_ ##i >= 0) { \
6346 host_to_le16(ssid->vht_tx_mcs_nss_ ##i << \
6349 if (ssid->vht_rx_mcs_nss_ ##i >= 0) { \
6353 host_to_le16(ssid->vht_rx_mcs_nss_ ##i << \
6371 struct wpa_supplicant *wpa_s, struct wpa_ssid *ssid,
6374 if (!ssid)
6377 params->disable_he = ssid->disable_he;
6383 struct wpa_supplicant *wpa_s, struct wpa_ssid *ssid,
6386 if (!ssid)
6389 params->disable_eht = ssid->disable_eht;
7760 struct wpa_ssid *ssid;
7800 for (ssid = wpa_s->conf->ssid; ssid; ssid = ssid->next)
7801 wpas_notify_network_added(wpa_s, ssid);
8356 os_memcmp(bss->ssid, cbss->ssid, bss->ssid_len) == 0 &&
8487 struct wpa_ssid *ssid = wpa_s->current_ssid;
8503 if (!ssid || !ssid->eap.erp || !wpa_key_mgmt_fils(ssid->key_mgmt))
8506 if (eapol_sm_get_erp_info(wpa_s->eapol, &ssid->eap,
8514 wpa_sm_external_pmksa_cache_flush(wpa_s->wpa, ssid);
8520 wpa_sm_pmksa_cache_flush(wpa_s->wpa, ssid);
8526 struct wpa_ssid *ssid = wpa_s->current_ssid;
8531 if (!ssid || !ssid->eap.erp || !wpa_key_mgmt_fils(ssid->key_mgmt) ||
8532 eapol_sm_get_erp_info(wpa_s->eapol, &ssid->eap,
8561 struct wpa_ssid *ssid,
8566 struct eap_peer_config *eap = &ssid->eap;
8580 if (ssid == wpa_s->current_ssid)
8590 if (ssid == wpa_s->current_ssid)
8600 if (ssid == wpa_s->current_ssid)
8609 if (ssid == wpa_s->current_ssid)
8628 if (ssid == wpa_s->current_ssid)
8639 if (wpa_config_set(ssid, "psk", value, 0) < 0)
8641 ssid->mem_only_psk = 1;
8642 if (ssid->passphrase)
8643 wpa_config_update_psk(ssid);
8671 int wpas_network_disabled(struct wpa_supplicant *wpa_s, struct wpa_ssid *ssid)
8681 if (ssid == NULL)
8684 if (ssid->disabled)
8694 size_t len = ssid->wep_key_len[i];
8707 if (wpa_key_mgmt_wpa_psk(ssid->key_mgmt) && !ssid->psk_set &&
8708 (!ssid->passphrase || ssid->ssid_len != 0) && !ssid->ext_psk &&
8709 !(wpa_key_mgmt_sae(ssid->key_mgmt) && ssid->sae_password) &&
8710 !ssid->mem_only_psk)
8715 if (ssid->eap.imsi_privacy_cert) {
8719 key = crypto_rsa_key_read(ssid->eap.imsi_privacy_cert, false);
8726 ssid->eap.imsi_privacy_cert);
8737 int wpas_get_ssid_pmf(struct wpa_supplicant *wpa_s, struct wpa_ssid *ssid)
8739 if (ssid == NULL || ssid->ieee80211w == MGMT_FRAME_PROTECTION_DEFAULT) {
8750 if (ssid &&
8751 (ssid->key_mgmt &
8766 ssid && ssid->ocv)
8773 return ssid->ieee80211w;
8779 struct wpa_ssid *ssid,
8785 wpas_get_ssid_pmf(wpa_s, ssid) == NO_MGMT_FRAME_PROTECTION);
8820 struct wpa_ssid *ssid = wpa_s->current_ssid;
8824 if (ssid == NULL) {
8826 "SSID block");
8830 if (ssid->key_mgmt == WPA_KEY_MGMT_WPS)
8833 ssid->auth_failures++;
8836 if (ssid->p2p_group &&
8846 if (ssid->auth_failures > 50)
8848 else if (ssid->auth_failures > 10)
8850 else if (ssid->auth_failures > 5)
8852 else if (ssid->auth_failures > 3)
8854 else if (ssid->auth_failures > 2)
8856 else if (ssid->auth_failures > 1)
8861 if (ssid->auth_failures > 1 &&
8862 wpa_key_mgmt_wpa_ieee8021x(ssid->key_mgmt))
8863 dur += os_random() % (ssid->auth_failures * 10);
8866 if (now.sec + dur <= ssid->disabled_until.sec)
8869 ssid->disabled_until.sec = now.sec + dur;
8872 "id=%d ssid=\"%s\" auth_failures=%u duration=%d reason=%s",
8873 ssid->id, wpa_ssid_txt(ssid->ssid, ssid->ssid_len),
8874 ssid->auth_failures, dur, reason);
8877 os_memcpy(ssid->disabled_due_to, bssid, ETH_ALEN);
8882 struct wpa_ssid *ssid, int clear_failures)
8884 if (ssid == NULL)
8887 if (ssid->disabled_until.sec) {
8889 "id=%d ssid=\"%s\"",
8890 ssid->id, wpa_ssid_txt(ssid->ssid, ssid->ssid_len));
8892 ssid->disabled_until.sec = 0;
8893 ssid->disabled_until.usec = 0;
8895 ssid->auth_failures = 0;
8896 } else if (!is_zero_ether_addr(ssid->disabled_due_to)) {
8899 MAC2STR(ssid->disabled_due_to));
8900 wpa_bssid_ignore_add(wpa_s, ssid->disabled_due_to);
8901 os_memset(ssid->disabled_due_to, 0, ETH_ALEN);
8923 int disallowed_ssid(struct wpa_supplicant *wpa_s, const u8 *ssid,
8928 if (wpa_s->disallow_aps_ssid == NULL || ssid == NULL)
8934 os_memcmp(ssid, s->ssid, ssid_len) == 0)