Lines Matching defs:sta

47 				      struct sta_info *sta)
55 __func__, MAC2STR(sta->addr));
56 eloop_cancel_timeout(fils_hlp_timeout, hapd, sta);
57 if (!sta->fils_pending_assoc_req)
60 ieee802_11_parse_elems(sta->fils_pending_assoc_req,
61 sta->fils_pending_assoc_req_len, &elems, 0);
68 p = hostapd_eid_assoc_fils_session(sta->wpa_sm, p,
70 sta->fils_hlp_resp);
72 reply_res = hostapd_sta_assoc(hapd, sta->addr,
73 sta->fils_pending_assoc_is_reassoc,
76 ap_sta_set_authorized(hapd, sta, 1);
77 new_assoc = (sta->flags & WLAN_STA_ASSOC) == 0;
78 sta->flags |= WLAN_STA_AUTH | WLAN_STA_ASSOC;
79 sta->flags &= ~WLAN_STA_WNM_SLEEP_MODE;
80 hostapd_set_sta_flags(hapd, sta);
81 wpa_auth_sm_event(sta->wpa_sm, WPA_ASSOC_FILS);
82 ieee802_1x_notify_port_enabled(sta->eapol_sm, 1);
83 hostapd_new_assoc_sta(hapd, sta, !new_assoc);
84 os_free(sta->fils_pending_assoc_req);
85 sta->fils_pending_assoc_req = NULL;
86 sta->fils_pending_assoc_req_len = 0;
87 wpabuf_free(sta->fils_hlp_resp);
88 sta->fils_hlp_resp = NULL;
89 wpabuf_free(sta->hlp_dhcp_discover);
90 sta->hlp_dhcp_discover = NULL;
98 if (reply_res != WLAN_STATUS_SUCCESS || sta->added_unassoc) {
99 hostapd_drv_sta_remove(hapd, sta->addr);
100 sta->added_unassoc = 0;
109 struct sta_info *sta;
165 sta = ap_get_sta(hapd, addr);
166 if (sta) {
167 ap_sta_no_session_timeout(hapd, sta);
168 accounting_sta_stop(hapd, sta);
174 sta->timeout_next = STA_NULLFUNC;
176 sta = ap_sta_add(hapd, addr);
177 if (sta == NULL) {
183 sta->flags &= ~(WLAN_STA_WPS | WLAN_STA_MAYBE_WPS | WLAN_STA_WPS2);
202 wpabuf_free(sta->p2p_ie);
203 sta->p2p_ie = ieee802_11_vendor_ie_concat(req_ies, req_ies_len,
205 if (sta->p2p_ie)
206 p2p_dev_addr = p2p_get_go_dev_addr(sta->p2p_ie);
221 ht40_intolerant_add(hapd->iface, sta);
229 sta->qos_map_enabled = 1;
234 wpabuf_free(sta->hs20_ie);
236 sta->hs20_ie = wpabuf_alloc_copy(elems.hs20 + 4,
239 sta->hs20_ie = NULL;
241 wpabuf_free(sta->roaming_consortium);
243 sta->roaming_consortium = wpabuf_alloc_copy(
247 sta->roaming_consortium = NULL;
251 wpabuf_free(sta->mb_ies);
253 sta->mb_ies = mb_ies_by_info(&elems.mb_ies);
255 sta->mb_ies = NULL;
258 mbo_ap_check_sta_assoc(hapd, sta, &elems);
260 ap_copy_sta_supp_op_classes(sta, elems.supp_op_classes,
269 sta->flags |= WLAN_STA_MAYBE_WPS;
284 sta->flags |= WLAN_STA_WPS;
291 sta->flags |= WLAN_STA_WPS2;
299 if (sta->wpa_sm == NULL)
300 sta->wpa_sm = wpa_auth_sta_init(hapd->wpa_auth,
301 sta->addr,
303 if (sta->wpa_sm == NULL) {
308 res = wpa_validate_wpa_ie(hapd->wpa_auth, sta->wpa_sm,
344 if ((sta->flags & (WLAN_STA_ASSOC | WLAN_STA_MFP)) ==
346 !sta->sa_query_timed_out &&
347 sta->sa_query_count > 0)
348 ap_check_sa_query_timeout(hapd, sta);
349 if ((sta->flags & (WLAN_STA_ASSOC | WLAN_STA_MFP)) ==
351 !sta->sa_query_timed_out &&
352 (sta->auth_alg != WLAN_AUTH_FT)) {
360 if (sta->sa_query_count == 0)
361 ap_sta_start_sa_query(hapd, sta);
365 p = hostapd_eid_assoc_comeback_time(hapd, sta, p);
372 if (wpa_auth_uses_mfp(sta->wpa_sm))
373 sta->flags |= WLAN_STA_MFP;
375 sta->flags &= ~WLAN_STA_MFP;
379 if (sta->auth_alg == WLAN_AUTH_FT) {
380 status = wpa_ft_validate_reassoc(sta->wpa_sm, req_ies,
411 sta->flags |= WLAN_STA_WPS;
415 sta->flags |= WLAN_STA_WPS2;
418 sta->flags |= WLAN_STA_MAYBE_WPS;
425 hapd, sta->addr, HOSTAPD_MODULE_IEEE80211,
432 if (sta->wpa_sm == NULL)
433 sta->wpa_sm = wpa_auth_sta_init(hapd->wpa_auth,
434 sta->addr, NULL);
435 if (sta->wpa_sm == NULL) {
440 if (wpa_validate_osen(hapd->wpa_auth, sta->wpa_sm,
448 elems.mbo && sta->cell_capa && !(sta->flags & WLAN_STA_MFP) &&
461 p = wpa_sm_write_assoc_resp_ies(sta->wpa_sm, buf, sizeof(buf),
462 sta->auth_alg, req_ies, req_ies_len);
470 if (sta->auth_alg == WLAN_AUTH_FILS_SK ||
471 sta->auth_alg == WLAN_AUTH_FILS_SK_PFS ||
472 sta->auth_alg == WLAN_AUTH_FILS_PK) {
478 if (!wpa_fils_validate_fils_session(sta->wpa_sm, req_ies,
480 sta->fils_session)) {
486 res = wpa_fils_validate_key_confirm(sta->wpa_sm, req_ies,
494 if (fils_process_hlp(hapd, sta, req_ies, req_ies_len) > 0) {
503 if (sta) {
505 eloop_cancel_timeout(fils_hlp_timeout, hapd, sta);
506 os_free(sta->fils_pending_assoc_req);
507 sta->fils_pending_assoc_req = NULL;
508 sta->fils_pending_assoc_req_len = 0;
509 wpabuf_free(sta->fils_hlp_resp);
510 sta->fils_hlp_resp = NULL;
511 sta->fils_drv_assoc_finish = 0;
514 if (sta && delay_assoc && status == WLAN_STATUS_SUCCESS) {
524 sta->fils_pending_assoc_req = req_tmp;
525 sta->fils_pending_assoc_req_len = req_ies_len;
526 sta->fils_pending_assoc_is_reassoc = reassoc;
527 sta->fils_drv_assoc_finish = 1;
530 MACSTR, MAC2STR(sta->addr));
533 fils_hlp_timeout, hapd, sta);
536 p = hostapd_eid_assoc_fils_session(sta->wpa_sm, p,
538 sta->fils_hlp_resp);
546 wpa_auth_sta_key_mgmt(sta->wpa_sm) == WPA_KEY_MGMT_OWE &&
550 npos = owe_assoc_req_process(hapd, sta,
570 dpp_pfs_free(sta->dpp_pfs);
571 sta->dpp_pfs = NULL;
574 hapd->conf->dpp_netaccesskey && sta->wpa_sm &&
575 wpa_auth_sta_key_mgmt(sta->wpa_sm) == WPA_KEY_MGMT_DPP &&
577 sta->dpp_pfs = dpp_pfs_init(
580 if (!sta->dpp_pfs) {
587 if (dpp_pfs_process(sta->dpp_pfs, elems.owe_dh,
589 dpp_pfs_free(sta->dpp_pfs);
590 sta->dpp_pfs = NULL;
596 wpa_auth_set_dpp_z(sta->wpa_sm, sta->dpp_pfs ?
597 sta->dpp_pfs->secret : NULL);
604 if (sta->auth_alg == WLAN_AUTH_FT ||
605 sta->auth_alg == WLAN_AUTH_FILS_SK ||
606 sta->auth_alg == WLAN_AUTH_FILS_SK_PFS ||
607 sta->auth_alg == WLAN_AUTH_FILS_PK)
608 ap_sta_set_authorized(hapd, sta, 1);
615 new_assoc = (sta->flags & WLAN_STA_ASSOC) == 0;
616 sta->flags |= WLAN_STA_AUTH | WLAN_STA_ASSOC;
617 sta->flags &= ~WLAN_STA_WNM_SLEEP_MODE;
619 hostapd_set_sta_flags(hapd, sta);
621 if (reassoc && (sta->auth_alg == WLAN_AUTH_FT))
622 wpa_auth_sm_event(sta->wpa_sm, WPA_ASSOC_FT);
624 else if (sta->auth_alg == WLAN_AUTH_FILS_SK ||
625 sta->auth_alg == WLAN_AUTH_FILS_SK_PFS ||
626 sta->auth_alg == WLAN_AUTH_FILS_PK)
627 wpa_auth_sm_event(sta->wpa_sm, WPA_ASSOC_FILS);
630 wpa_auth_sm_event(sta->wpa_sm, WPA_ASSOC);
632 hostapd_new_assoc_sta(hapd, sta, !new_assoc);
634 ieee802_1x_notify_port_enabled(sta->eapol_sm, 1);
638 p2p_group_notif_assoc(hapd->p2p_group, sta->addr,
649 hostapd_drv_sta_disassoc(hapd, sta->addr, reason);
650 ap_free_sta(hapd, sta);
657 struct sta_info *sta;
675 sta = ap_get_sta(hapd, addr);
676 if (sta == NULL) {
683 ap_sta_set_authorized(hapd, sta, 0);
684 sta->flags &= ~(WLAN_STA_AUTH | WLAN_STA_ASSOC);
685 wpa_auth_sm_event(sta->wpa_sm, WPA_DISASSOC);
686 sta->acct_terminate_cause = RADIUS_ACCT_TERMINATE_CAUSE_USER_REQUEST;
687 ieee802_1x_notify_port_enabled(sta->eapol_sm, 0);
688 ap_free_sta(hapd, sta);
694 struct sta_info *sta = ap_get_sta(hapd, addr);
696 if (!sta || !hapd->conf->disassoc_low_ack || sta->agreed_to_steer)
703 ap_sta_disassociate(hapd, sta, WLAN_REASON_DISASSOC_LOW_ACK);
711 struct sta_info *sta = ap_get_sta(hapd, addr);
714 if (!sta)
1034 struct sta_info *sta;
1036 sta = ap_get_sta(hapd, dst);
1037 if (sta == NULL)
1042 sta->flags |= WLAN_STA_AUTH;
1051 struct sta_info *sta, u16 resp,
1055 hostapd_logger(hapd, sta->addr, HOSTAPD_MODULE_IEEE80211,
1057 sta->flags |= WLAN_STA_AUTH;
1058 wpa_auth_sm_event(sta->wpa_sm, WPA_AUTH);
1059 sta->auth_alg = WLAN_AUTH_FILS_SK;
1060 mlme_authenticate_indication(hapd, sta);
1062 hostapd_logger(hapd, sta->addr, HOSTAPD_MODULE_IEEE80211,
1067 hostapd_sta_auth(hapd, sta->addr, 2, resp,
1078 struct sta_info *sta;
1083 sta = ap_get_sta(hapd, rx_auth->peer);
1084 if (!sta) {
1085 sta = ap_sta_add(hapd, rx_auth->peer);
1086 if (sta == NULL) {
1091 sta->flags &= ~WLAN_STA_PREAUTH;
1092 ieee802_1x_notify_pre_auth(sta->eapol_sm, 0);
1095 sta->auth_alg = WLAN_AUTH_FT;
1096 if (sta->wpa_sm == NULL)
1097 sta->wpa_sm = wpa_auth_sta_init(hapd->wpa_auth,
1098 sta->addr, NULL);
1099 if (sta->wpa_sm == NULL) {
1105 wpa_ft_process_auth(sta->wpa_sm, rx_auth->bssid,
1115 sta->auth_alg = WLAN_AUTH_FILS_SK;
1116 handle_auth_fils(hapd, sta, rx_auth->ies, rx_auth->ies_len,
1135 struct sta_info *sta;
1156 sta = ap_get_sta(hapd, mgmt->sa);
1157 if (sta == NULL) {
1163 wpa_ft_action_rx(sta->wpa_sm, (u8 *) &mgmt->u.action, plen);
1345 struct sta_info *sta = ap_get_sta(hapd, addr);
1347 if (sta)
1352 sta = ap_sta_add(hapd, addr);
1353 if (sta) {
1354 hostapd_new_assoc_sta(hapd, sta, 0);
1369 struct sta_info *sta;
1373 sta = ap_get_sta(iface->bss[j], src);
1374 if (sta && sta->flags & WLAN_STA_ASSOC) {
1575 struct sta_info *sta = ap_get_sta(hapd, addr);
1577 if (sta) {
1578 os_free(sta->ifname_wds);
1580 sta->ifname_wds = os_strdup(ifname);
1582 sta->ifname_wds = NULL;
1598 struct sta_info *sta;
1626 sta = ap_get_sta(hapd, peer);
1627 if (sta) {
1628 ap_sta_no_session_timeout(hapd, sta);
1629 accounting_sta_stop(hapd, sta);
1635 sta->timeout_next = STA_NULLFUNC;
1637 sta = ap_sta_add(hapd, peer);
1638 if (!sta) {
1643 sta->flags &= ~(WLAN_STA_WPS | WLAN_STA_MAYBE_WPS | WLAN_STA_WPS2);
1645 status = owe_process_rsn_ie(hapd, sta, elems.rsn_ie,
1649 ap_free_sta(hapd, sta);