Lines Matching defs:sta

47 				struct sta_info *sta, int success,
51 static void ieee802_1x_send(struct hostapd_data *hapd, struct sta_info *sta,
80 if (wpa_auth_pairwise_set(sta->wpa_sm))
91 MAC2STR(sta->addr), hex);
96 if (sta->flags & WLAN_STA_PREAUTH) {
97 rsn_preauth_send(hapd, sta, buf, len);
100 hapd, sta->addr, buf, len,
101 encrypt, hostapd_sta_flags_to_drv(sta->flags));
109 struct sta_info *sta, int authorized)
113 if (sta->flags & WLAN_STA_PREAUTH)
117 ap_sta_set_authorized(hapd, sta, 1);
118 res = hostapd_set_authorized(hapd, sta, 1);
119 hostapd_logger(hapd, sta->addr, HOSTAPD_MODULE_IEEE8021X,
122 ap_sta_set_authorized(hapd, sta, 0);
123 res = hostapd_set_authorized(hapd, sta, 0);
124 hostapd_logger(hapd, sta->addr, HOSTAPD_MODULE_IEEE8021X,
131 MAC2STR(sta->addr), errno);
135 os_get_reltime(&sta->connected_time);
136 accounting_sta_start(hapd, sta);
145 struct sta_info *sta,
153 struct eapol_state_machine *sm = sta->eapol_sm;
235 ieee802_1x_send(hapd, sta, IEEE802_1X_TYPE_EAPOL_KEY, (u8 *) key, len);
236 if (sta->eapol_sm)
237 sta->eapol_sm->dot1xAuthEapolFramesTx++;
242 static void ieee802_1x_tx_key(struct hostapd_data *hapd, struct sta_info *sta)
245 struct eapol_state_machine *sm = sta->eapol_sm;
251 MAC2STR(sta->addr));
254 if (sta->vlan_id > 0) {
261 ieee802_1x_tx_key_one(hapd, sta, eapol->default_wep_key_idx, 1,
281 ieee802_1x_tx_key_one(hapd, sta, 0, 0, ikey,
287 sta->addr, 0, 1, NULL, 0, ikey,
317 int radius_sta_rate(struct hostapd_data *hapd, struct sta_info *sta)
322 for (i = 0; i < sta->supported_rates_len; i++)
323 if ((sta->supported_rates[i] & 0x7f) > rate)
324 rate = sta->supported_rates[i] & 0x7f;
370 struct sta_info *sta,
376 ver = wpa_auth_sta_wpa_version(sta->wpa_sm);
377 val = wpa_auth_get_pairwise(sta->wpa_sm);
400 val = wpa_auth_sta_key_mgmt(sta->wpa_sm);
432 struct sta_info *sta,
447 sta->aid > 0 &&
448 !radius_msg_add_attr_int32(msg, RADIUS_ATTR_NAS_PORT, sta->aid)) {
454 MAC2STR(sta->addr));
462 if (sta->flags & WLAN_STA_PREAUTH) {
467 radius_sta_rate(hapd, sta) / 2,
468 (radius_sta_rate(hapd, sta) & 1) ? ".5" : "",
480 if (sta->acct_session_id) {
482 (unsigned long long) sta->acct_session_id);
492 sta->eapol_sm && sta->eapol_sm->acct_multi_session_id) {
495 sta->eapol_sm->acct_multi_session_id);
507 sta->wpa_sm &&
508 (wpa_key_mgmt_ft(wpa_auth_sta_key_mgmt(sta->wpa_sm)) ||
509 sta->auth_alg == WLAN_AUTH_FT) &&
520 if ((hapd->conf->wpa || hapd->conf->osen) && sta->wpa_sm &&
521 add_common_radius_sta_attr_rsn(hapd, req_attr, sta, msg) < 0)
530 struct sta_info *sta,
604 if (sta && add_common_radius_sta_attr(hapd, req_attr, sta, msg) < 0)
621 int add_sqlite_radius_attr(struct hostapd_data *hapd, struct sta_info *sta,
633 os_snprintf(addrtxt, sizeof(addrtxt), MACSTR, MAC2STR(sta->addr));
635 sql = "SELECT attr FROM radius_attributes WHERE sta=? AND (reqtype=? OR reqtype IS NULL);";
679 struct sta_info *sta,
683 struct eapol_state_machine *sm = sta->eapol_sm;
713 if (add_common_radius_attr(hapd, hapd->conf->radius_auth_req_attr, sta,
717 if (sta && add_sqlite_radius_attr(hapd, sta, msg, 0) < 0)
782 if (sta->hs20_ie && wpabuf_len(sta->hs20_ie) > 0) {
786 pos = wpabuf_head_u8(sta->hs20_ie);
789 wpabuf_len(sta->hs20_ie) >= 3)
804 if (sta->roaming_consortium &&
807 wpabuf_head(sta->roaming_consortium),
808 wpabuf_len(sta->roaming_consortium))) {
841 if (radius_client_send(hapd->radius, msg, RADIUS_AUTH, sta->addr) < 0)
853 struct sta_info *sta, struct eap_hdr *eap,
857 struct eapol_state_machine *sm = sta->eapol_sm;
885 struct sta_info *sta, struct eap_hdr *eap,
890 struct eapol_state_machine *sm = sta->eapol_sm;
918 static void handle_eap(struct hostapd_data *hapd, struct sta_info *sta,
952 handle_eap_response(hapd, sta, eap, eap_len);
962 handle_eap_initiate(hapd, sta, eap, eap_len);
975 ieee802_1x_alloc_eapol_sm(struct hostapd_data *hapd, struct sta_info *sta)
978 if (sta->flags & WLAN_STA_PREAUTH)
980 if (sta->wpa_sm) {
982 if (wpa_auth_sta_get_pmksa(sta->wpa_sm))
985 return eapol_auth_alloc(hapd->eapol_auth, sta->addr, flags,
986 sta->wps_ie, sta->p2p_ie, sta,
987 sta->identity, sta->radius_cui);
991 static void ieee802_1x_save_eapol(struct sta_info *sta, const u8 *buf,
994 if (sta->pending_eapol_rx) {
995 wpabuf_free(sta->pending_eapol_rx->buf);
997 sta->pending_eapol_rx =
998 os_malloc(sizeof(*sta->pending_eapol_rx));
999 if (!sta->pending_eapol_rx)
1003 sta->pending_eapol_rx->buf = wpabuf_alloc_copy(buf, len);
1004 if (!sta->pending_eapol_rx->buf) {
1005 os_free(sta->pending_eapol_rx);
1006 sta->pending_eapol_rx = NULL;
1010 os_get_reltime(&sta->pending_eapol_rx->rx_time);
1026 struct sta_info *sta;
1039 sta = ap_get_sta(hapd, sa);
1040 if (!sta || (!(sta->flags & (WLAN_STA_ASSOC | WLAN_STA_PREAUTH)) &&
1045 if (sta && (sta->flags & WLAN_STA_AUTH)) {
1047 " for later use", MAC2STR(sta->addr));
1048 ieee802_1x_save_eapol(sta, buf, len);
1066 if (sta->eapol_sm)
1067 sta->eapol_sm->dot1xAuthEapLengthErrorFramesRx++;
1076 if (sta->eapol_sm) {
1077 sta->eapol_sm->dot1xAuthLastEapolFrameVersion = hdr->version;
1078 sta->eapol_sm->dot1xAuthEapolFramesRx++;
1086 wpa_receive(hapd->wpa_auth, sta->wpa_sm, (u8 *) hdr,
1092 !(sta->flags & (WLAN_STA_WPS | WLAN_STA_MAYBE_WPS))) {
1098 key_mgmt = wpa_auth_sta_key_mgmt(sta->wpa_sm);
1107 if (!sta->eapol_sm) {
1108 sta->eapol_sm = ieee802_1x_alloc_eapol_sm(hapd, sta);
1109 if (!sta->eapol_sm)
1114 u32 wflags = sta->flags & (WLAN_STA_WPS |
1129 sta->eapol_sm->flags |= EAPOL_SM_WAIT_START;
1134 sta->eapol_sm->eap_if->portEnabled = TRUE;
1146 handle_eap(hapd, sta, (u8 *) (hdr + 1), datalen);
1150 hostapd_logger(hapd, sta->addr, HOSTAPD_MODULE_IEEE8021X,
1153 sta->eapol_sm->flags &= ~EAPOL_SM_WAIT_START;
1154 pmksa = wpa_auth_sta_get_pmksa(sta->wpa_sm);
1156 hostapd_logger(hapd, sta->addr, HOSTAPD_MODULE_WPA,
1160 wpa_auth_sta_clear_pmksa(sta->wpa_sm, pmksa);
1162 sta->eapol_sm->eapolStart = TRUE;
1163 sta->eapol_sm->dot1xAuthEapolStartFramesRx++;
1164 eap_server_clear_identity(sta->eapol_sm->eap);
1165 wpa_auth_sm_event(sta->wpa_sm, WPA_REAUTH_EAPOL);
1169 hostapd_logger(hapd, sta->addr, HOSTAPD_MODULE_IEEE8021X,
1172 sta->acct_terminate_cause =
1174 accounting_sta_stop(hapd, sta);
1175 sta->eapol_sm->eapolLogoff = TRUE;
1176 sta->eapol_sm->dot1xAuthEapolLogoffFramesRx++;
1177 eap_server_clear_identity(sta->eapol_sm->eap);
1182 if (!ap_sta_is_authorized(sta)) {
1203 sta->eapol_sm->dot1xAuthInvalidEapolFramesRx++;
1207 eapol_auth_step(sta->eapol_sm);
1214 * @sta: The station
1219 void ieee802_1x_new_station(struct hostapd_data *hapd, struct sta_info *sta)
1228 ((hapd->conf->wpa && (sta->flags & WLAN_STA_MAYBE_WPS)) ||
1229 (sta->flags & WLAN_STA_WPS))) {
1246 ieee802_1x_free_station(hapd, sta);
1250 key_mgmt = wpa_auth_sta_key_mgmt(sta->wpa_sm);
1259 ieee802_1x_free_station(hapd, sta);
1263 if (sta->eapol_sm == NULL) {
1264 hostapd_logger(hapd, sta->addr, HOSTAPD_MODULE_IEEE8021X,
1266 sta->eapol_sm = ieee802_1x_alloc_eapol_sm(hapd, sta);
1267 if (sta->eapol_sm == NULL) {
1268 hostapd_logger(hapd, sta->addr,
1278 sta->eapol_sm->flags &= ~EAPOL_SM_WAIT_START;
1280 !(sta->flags & WLAN_STA_WPS2)) {
1288 sta->eapol_sm->flags |= EAPOL_SM_WAIT_START;
1292 sta->eapol_sm->eap_if->portEnabled = TRUE;
1295 if (sta->auth_alg == WLAN_AUTH_FT) {
1296 hostapd_logger(hapd, sta->addr, HOSTAPD_MODULE_IEEE8021X,
1301 sta->eapol_sm->keyRun = TRUE;
1302 sta->eapol_sm->eap_if->eapKeyAvailable = TRUE;
1303 sta->eapol_sm->auth_pae_state = AUTH_PAE_AUTHENTICATING;
1304 sta->eapol_sm->be_auth_state = BE_AUTH_SUCCESS;
1305 sta->eapol_sm->authSuccess = TRUE;
1306 sta->eapol_sm->authFail = FALSE;
1307 sta->eapol_sm->portValid = TRUE;
1308 if (sta->eapol_sm->eap)
1309 eap_sm_notify_cached(sta->eapol_sm->eap);
1310 ap_sta_bind_vlan(hapd, sta);
1316 if (sta->auth_alg == WLAN_AUTH_FILS_SK ||
1317 sta->auth_alg == WLAN_AUTH_FILS_SK_PFS ||
1318 sta->auth_alg == WLAN_AUTH_FILS_PK) {
1319 hostapd_logger(hapd, sta->addr, HOSTAPD_MODULE_IEEE8021X,
1324 sta->eapol_sm->keyRun = TRUE;
1325 sta->eapol_sm->eap_if->eapKeyAvailable = TRUE;
1326 sta->eapol_sm->auth_pae_state = AUTH_PAE_AUTHENTICATING;
1327 sta->eapol_sm->be_auth_state = BE_AUTH_SUCCESS;
1328 sta->eapol_sm->authSuccess = TRUE;
1329 sta->eapol_sm->authFail = FALSE;
1330 sta->eapol_sm->portValid = TRUE;
1331 if (sta->eapol_sm->eap)
1332 eap_sm_notify_cached(sta->eapol_sm->eap);
1333 wpa_auth_set_ptk_rekey_timer(sta->wpa_sm);
1338 pmksa = wpa_auth_sta_get_pmksa(sta->wpa_sm);
1340 hostapd_logger(hapd, sta->addr, HOSTAPD_MODULE_IEEE8021X,
1345 sta->eapol_sm->keyRun = TRUE;
1346 sta->eapol_sm->eap_if->eapKeyAvailable = TRUE;
1347 sta->eapol_sm->auth_pae_state = AUTH_PAE_AUTHENTICATING;
1348 sta->eapol_sm->be_auth_state = BE_AUTH_SUCCESS;
1349 sta->eapol_sm->authSuccess = TRUE;
1350 sta->eapol_sm->authFail = FALSE;
1351 if (sta->eapol_sm->eap)
1352 eap_sm_notify_cached(sta->eapol_sm->eap);
1353 pmksa_cache_to_eapol_data(hapd, pmksa, sta->eapol_sm);
1354 ap_sta_bind_vlan(hapd, sta);
1362 sta->eapol_sm->reAuthenticate = TRUE;
1364 eapol_auth_step(sta->eapol_sm);
1369 void ieee802_1x_free_station(struct hostapd_data *hapd, struct sta_info *sta)
1371 struct eapol_state_machine *sm = sta->eapol_sm;
1374 eloop_cancel_timeout(ieee802_1x_wnm_notif_send, hapd, sta);
1377 if (sta->pending_eapol_rx) {
1378 wpabuf_free(sta->pending_eapol_rx->buf);
1379 os_free(sta->pending_eapol_rx);
1380 sta->pending_eapol_rx = NULL;
1386 sta->eapol_sm = NULL;
1399 struct sta_info *sta)
1406 struct eapol_state_machine *sm = sta->eapol_sm;
1421 hostapd_logger(hapd, sta->addr, HOSTAPD_MODULE_IEEE8021X,
1429 hostapd_logger(hapd, sta->addr, HOSTAPD_MODULE_IEEE8021X,
1463 hostapd_logger(hapd, sta->addr, HOSTAPD_MODULE_IEEE8021X,
1476 struct sta_info *sta, struct radius_msg *msg,
1484 struct eapol_state_machine *sm = sta->eapol_sm;
1538 struct sta_info *sta,
1543 struct eapol_state_machine *sm = sta->eapol_sm;
1587 MAC2STR(sta->addr));
1591 /* Update sta->identity based on User-Name attribute in Access-Accept */
1593 struct sta_info *sta,
1598 struct eapol_state_machine *sm = sta->eapol_sm;
1611 hostapd_logger(hapd, sta->addr, HOSTAPD_MODULE_IEEE8021X,
1625 struct sta_info *sta,
1628 struct eapol_state_machine *sm = sta->eapol_sm;
1651 static void ieee802_1x_hs20_sub_rem(struct sta_info *sta, u8 *pos, size_t len)
1653 sta->remediation = 1;
1654 os_free(sta->remediation_url);
1656 sta->remediation_url = os_malloc(len);
1657 if (!sta->remediation_url)
1659 sta->remediation_method = pos[0];
1660 os_memcpy(sta->remediation_url, pos + 1, len - 1);
1661 sta->remediation_url[len - 1] = '\0';
1664 MAC2STR(sta->addr), sta->remediation_method,
1665 sta->remediation_url);
1667 sta->remediation_url = NULL;
1669 "for " MACSTR, MAC2STR(sta->addr));
1676 struct sta_info *sta, u8 *pos,
1681 sta->hs20_deauth_requested = 1;
1685 wpabuf_free(sta->hs20_deauth_req);
1686 sta->hs20_deauth_req = wpabuf_alloc(len + 1);
1687 if (sta->hs20_deauth_req) {
1688 wpabuf_put_data(sta->hs20_deauth_req, pos, 3);
1689 wpabuf_put_u8(sta->hs20_deauth_req, len - 3);
1690 wpabuf_put_data(sta->hs20_deauth_req, pos + 3, len - 3);
1692 ap_sta_session_timeout(hapd, sta, hapd->conf->hs20_deauth_req_timeout);
1697 struct sta_info *sta, u8 *pos,
1705 os_free(sta->hs20_session_info_url);
1706 sta->hs20_session_info_url = os_malloc(len);
1707 if (sta->hs20_session_info_url == NULL)
1710 os_memcpy(sta->hs20_session_info_url, pos + 1, len - 1);
1711 sta->hs20_session_info_url[len - 1] = '\0';
1714 sta->hs20_session_info_url, swt, session_timeout);
1730 sta->hs20_disassoc_timer = swt * 60 * 1000 / beacon_int * 125 / 128;
1731 if (sta->hs20_disassoc_timer > 65535)
1732 sta->hs20_disassoc_timer = 65535;
1734 ap_sta_session_warning_timeout(hapd, sta, warning_time);
1739 struct sta_info *sta, u8 *pos,
1747 hs20_t_c_filtering(hapd, sta, pos[0] & BIT(0));
1752 struct sta_info *sta, u8 *pos, size_t len)
1754 os_free(sta->t_c_url);
1755 sta->t_c_url = os_malloc(len + 1);
1756 if (!sta->t_c_url)
1758 os_memcpy(sta->t_c_url, pos, len);
1759 sta->t_c_url[len] = '\0';
1761 "HS 2.0: Terms and Conditions URL %s", sta->t_c_url);
1768 struct sta_info *sta,
1777 sta->remediation = 0;
1778 sta->hs20_deauth_requested = 0;
1802 ieee802_1x_hs20_sub_rem(sta, pos, sublen);
1805 ieee802_1x_hs20_deauth_req(hapd, sta, pos, sublen);
1808 ieee802_1x_hs20_session_info(hapd, sta, pos, sublen,
1812 ieee802_1x_hs20_t_c_filtering(hapd, sta, pos, sublen);
1815 ieee802_1x_hs20_t_c_url(hapd, sta, pos, sublen);
1830 struct sta_info *sta,
1834 struct eapol_state_machine *sm = sta->eapol_sm;
1859 struct sta_info *sta)
1870 sta->eapol_sm->authFail = TRUE;
1871 hostapd_logger(hapd, sta->addr, HOSTAPD_MODULE_RADIUS,
1877 ap_sta_set_vlan(hapd, sta, &vlan_desc);
1883 sta->eapol_sm->authFail = TRUE;
1884 hostapd_logger(hapd, sta->addr, HOSTAPD_MODULE_IEEE8021X,
1890 return ap_sta_set_vlan(hapd, sta, &vlan_desc);
1910 struct sta_info *sta;
1924 sta = sm->sta;
1950 MAC2STR(sta->addr));
1967 hostapd_logger(hapd, sta->addr,
1974 sta->acct_interim_interval = acct_interim_interval;
1982 ieee802_1x_update_vlan(msg, hapd, sta) < 0)
1985 if (sta->vlan_id > 0) {
1986 hostapd_logger(hapd, sta->addr,
1989 "VLAN ID %d", sta->vlan_id);
1992 if ((sta->flags & WLAN_STA_ASSOC) &&
1993 ap_sta_bind_vlan(hapd, sta) < 0)
1997 sta->session_timeout_set = !!session_timeout_set;
1998 os_get_reltime(&sta->session_timeout);
1999 sta->session_timeout.sec += session_timeout;
2006 ap_sta_session_timeout(hapd, sta, session_timeout);
2008 ap_sta_no_session_timeout(hapd, sta);
2012 ieee802_1x_get_keys(hapd, sta, msg, req, shared_secret,
2014 ieee802_1x_store_radius_class(hapd, sta, msg);
2015 ieee802_1x_update_sta_identity(hapd, sta, msg);
2016 ieee802_1x_update_sta_cui(hapd, sta, msg);
2017 ieee802_1x_check_hs20(hapd, sta, msg,
2028 MACSTR, reason_code, MAC2STR(sta->addr));
2029 sta->disconnect_reason_code = reason_code;
2053 ieee802_1x_decapsulate_radius(hapd, sta);
2059 if (sta->flags & WLAN_STA_PENDING_FILS_ERP) {
2062 hapd, sta, hdr->code == RADIUS_CODE_ACCESS_ACCEPT,
2077 void ieee802_1x_abort_auth(struct hostapd_data *hapd, struct sta_info *sta)
2079 struct eapol_state_machine *sm = sta->eapol_sm;
2083 hostapd_logger(hapd, sta->addr, HOSTAPD_MODULE_IEEE8021X,
2098 MAC2STR(sta->addr));
2101 ap_sta_disconnect(hapd, sta, sta->addr,
2134 struct sta_info *sta, void *ctx)
2136 if (sta->eapol_sm) {
2137 sta->eapol_sm->eap_if->eapKeyAvailable = TRUE;
2138 eapol_auth_step(sta->eapol_sm);
2195 struct sta_info *sta = sta_ctx;
2197 if ((sta->flags & (WLAN_STA_WPS | WLAN_STA_MAYBE_WPS)) ==
2201 struct eapol_state_machine *sm = sta->eapol_sm;
2213 sta->flags |= WLAN_STA_WPS;
2227 struct sta_info *sta = sta_ctx;
2229 ieee802_1x_encapsulate_radius(hapd, sta, data, datalen);
2238 struct sta_info *sta = sta_ctx;
2240 rsn_preauth_finished(hapd, sta, success);
2242 ieee802_1x_finished(hapd, sta, success, remediation);
2298 struct sta_info *sta;
2299 sta = ap_get_sta(hapd, addr);
2300 if (sta == NULL || sta->eapol_sm == NULL)
2336 struct sta_info *sta = sta_ctx;
2337 ieee802_1x_set_sta_authorized(hapd, sta, authorized);
2344 struct sta_info *sta = sta_ctx;
2345 ieee802_1x_abort_auth(hapd, sta);
2354 struct sta_info *sta = sta_ctx;
2355 ieee802_1x_tx_key(hapd, sta);
2365 struct sta_info *sta = sta_ctx;
2368 wpa_auth_sm_notify(sta->wpa_sm);
2371 wpa_auth_sm_event(sta->wpa_sm, WPA_REAUTH_EAPOL);
2527 int ieee802_1x_tx_status(struct hostapd_data *hapd, struct sta_info *sta,
2535 if (sta == NULL)
2549 return ieee802_1x_eapol_tx_status(hapd, sta, pos, buf + len - pos,
2554 int ieee802_1x_eapol_tx_status(struct hostapd_data *hapd, struct sta_info *sta,
2566 MAC2STR(sta->addr), xhdr->version, xhdr->type,
2571 (sta->flags & WLAN_STA_WPS) &&
2572 ap_sta_pending_delayed_1x_auth_fail_disconnect(hapd, sta)) {
2588 sta->wpa_sm, ack);
2598 hostapd_logger(hapd, sta->addr, HOSTAPD_MODULE_IEEE8021X,
2717 int ieee802_1x_get_mib_sta(struct hostapd_data *hapd, struct sta_info *sta,
2721 struct eapol_state_machine *sm = sta->eapol_sm;
2736 sta->aid,
2840 os_reltime_age(&sta->acct_session_start, &diff);
2859 (unsigned long long) sta->acct_session_id,
2861 wpa_auth_sta_key_mgmt(sta->wpa_sm))) ?
2900 struct sta_info *sta = timeout_ctx;
2902 if (sta->remediation) {
2905 MAC2STR(sta->addr));
2906 hs20_send_wnm_notification(hapd, sta->addr,
2907 sta->remediation_method,
2908 sta->remediation_url);
2909 os_free(sta->remediation_url);
2910 sta->remediation_url = NULL;
2913 if (sta->hs20_deauth_req) {
2916 MAC2STR(sta->addr));
2917 hs20_send_wnm_notification_deauth_req(hapd, sta->addr,
2918 sta->hs20_deauth_req);
2921 if (sta->hs20_t_c_filtering) {
2924 MAC2STR(sta->addr));
2925 hs20_send_wnm_notification_t_c(hapd, sta->addr, sta->t_c_url);
2926 os_free(sta->t_c_url);
2927 sta->t_c_url = NULL;
2934 struct sta_info *sta, int success,
2945 if (remediation && !sta->remediation) {
2946 sta->remediation = 1;
2947 os_free(sta->remediation_url);
2948 sta->remediation_url =
2950 sta->remediation_method = 1; /* SOAP-XML SPP */
2953 if (success && (sta->remediation || sta->hs20_deauth_req ||
2954 sta->hs20_t_c_filtering)) {
2956 MACSTR " in 100 ms", MAC2STR(sta->addr));
2957 eloop_cancel_timeout(ieee802_1x_wnm_notif_send, hapd, sta);
2959 hapd, sta);
2964 ieee802_1x_notify_create_actor_hapd(hapd, sta);
2967 key = ieee802_1x_get_key(sta->eapol_sm, &len);
2968 if (sta->session_timeout_set) {
2970 os_reltime_sub(&sta->session_timeout, &now, &remaining);
2975 if (success && key && len >= PMK_LEN && !sta->remediation &&
2976 !sta->hs20_deauth_requested &&
2977 wpa_auth_pmksa_add(sta->wpa_sm, key, len, session_timeout,
2978 sta->eapol_sm) == 0) {
2979 hostapd_logger(hapd, sta->addr, HOSTAPD_MODULE_WPA,
2995 ap_sta_delayed_1x_auth_fail_disconnect(hapd, sta);