Lines Matching refs:pmksa

23 	struct rsn_pmksa_cache_entry *pmksa; /* PMKSA cache */  member
36 static void pmksa_cache_set_expiration(struct rsn_pmksa_cache *pmksa);
45 static void pmksa_cache_free_entry(struct rsn_pmksa_cache *pmksa, in pmksa_cache_free_entry() argument
49 if (pmksa->sm) in pmksa_cache_free_entry()
50 wpa_sm_remove_pmkid(pmksa->sm, entry->network_ctx, entry->aa, in pmksa_cache_free_entry()
54 pmksa->pmksa_count--; in pmksa_cache_free_entry()
55 if (pmksa->free_cb) in pmksa_cache_free_entry()
56 pmksa->free_cb(entry, pmksa->ctx, reason); in pmksa_cache_free_entry()
61 void pmksa_cache_remove(struct rsn_pmksa_cache *pmksa, in pmksa_cache_remove() argument
66 e = pmksa->pmksa; in pmksa_cache_remove()
69 pmksa->pmksa = entry->next; in pmksa_cache_remove()
85 pmksa_cache_free_entry(pmksa, entry, PMKSA_FREE); in pmksa_cache_remove()
91 struct rsn_pmksa_cache *pmksa = eloop_ctx; in pmksa_cache_expire() local
94 struct rsn_pmksa_cache_entry *entry = pmksa->pmksa; in pmksa_cache_expire()
98 if (wpa_key_mgmt_sae(entry->akmp) && pmksa->is_current_cb && in pmksa_cache_expire()
99 pmksa->is_current_cb(entry, pmksa->ctx)) { in pmksa_cache_expire()
118 pmksa->pmksa = entry->next; in pmksa_cache_expire()
121 pmksa_cache_free_entry(pmksa, tmp, PMKSA_EXPIRE); in pmksa_cache_expire()
124 pmksa_cache_set_expiration(pmksa); in pmksa_cache_expire()
130 struct rsn_pmksa_cache *pmksa = eloop_ctx; in pmksa_cache_reauth() local
132 if (!pmksa->sm) in pmksa_cache_reauth()
135 if (pmksa->sm->driver_bss_selection) { in pmksa_cache_reauth()
138 entry = pmksa->sm->cur_pmksa ? in pmksa_cache_reauth()
139 pmksa->sm->cur_pmksa : in pmksa_cache_reauth()
140 pmksa_cache_get(pmksa, pmksa->sm->bssid, NULL, NULL, in pmksa_cache_reauth()
146 wpa_sm_remove_pmkid(pmksa->sm, entry->network_ctx, in pmksa_cache_reauth()
152 pmksa->sm->cur_pmksa = NULL; in pmksa_cache_reauth()
153 eapol_sm_request_reauth(pmksa->sm->eapol); in pmksa_cache_reauth()
157 static void pmksa_cache_set_expiration(struct rsn_pmksa_cache *pmksa) in pmksa_cache_set_expiration() argument
163 eloop_cancel_timeout(pmksa_cache_expire, pmksa, NULL); in pmksa_cache_set_expiration()
164 eloop_cancel_timeout(pmksa_cache_reauth, pmksa, NULL); in pmksa_cache_set_expiration()
165 if (pmksa->pmksa == NULL) in pmksa_cache_set_expiration()
168 sec = pmksa->pmksa->expiration - now.sec; in pmksa_cache_set_expiration()
171 if (wpa_key_mgmt_sae(pmksa->pmksa->akmp) && in pmksa_cache_set_expiration()
172 pmksa->is_current_cb && in pmksa_cache_set_expiration()
173 pmksa->is_current_cb(pmksa->pmksa, pmksa->ctx)) { in pmksa_cache_set_expiration()
179 entry = pmksa->pmksa->next; in pmksa_cache_set_expiration()
191 eloop_register_timeout(sec + 1, 0, pmksa_cache_expire, pmksa, NULL); in pmksa_cache_set_expiration()
193 if (!pmksa->sm) in pmksa_cache_set_expiration()
196 entry = pmksa->sm->cur_pmksa ? pmksa->sm->cur_pmksa : in pmksa_cache_set_expiration()
197 pmksa_cache_get(pmksa, pmksa->sm->bssid, NULL, NULL, NULL, 0); in pmksa_cache_set_expiration()
200 (pmksa->sm->driver_bss_selection && in pmksa_cache_set_expiration()
202 sec = pmksa->pmksa->reauth_time - now.sec; in pmksa_cache_set_expiration()
205 eloop_register_timeout(sec, 0, pmksa_cache_reauth, pmksa, in pmksa_cache_set_expiration()
232 pmksa_cache_add(struct rsn_pmksa_cache *pmksa, const u8 *pmk, size_t pmk_len, in pmksa_cache_add() argument
268 if (pmksa->sm) { in pmksa_cache_add()
269 pmk_lifetime = pmksa->sm->dot11RSNAConfigPMKLifetime; in pmksa_cache_add()
271 pmksa->sm->dot11RSNAConfigPMKReauthThreshold; in pmksa_cache_add()
285 return pmksa_cache_add_entry(pmksa, entry); in pmksa_cache_add()
290 pmksa_cache_add_entry(struct rsn_pmksa_cache *pmksa, in pmksa_cache_add_entry() argument
297 pos = pmksa->pmksa; in pmksa_cache_add_entry()
313 pmksa->pmksa = pos->next; in pmksa_cache_add_entry()
330 pmksa_cache_flush(pmksa, entry->network_ctx, in pmksa_cache_add_entry()
333 pmksa_cache_free_entry(pmksa, pos, PMKSA_REPLACE); in pmksa_cache_add_entry()
340 if (pmksa->pmksa_count >= pmksa_cache_max_entries && pmksa->pmksa) { in pmksa_cache_add_entry()
342 pos = pmksa->pmksa; in pmksa_cache_add_entry()
344 if (pmksa->sm && pos == pmksa->sm->cur_pmksa) { in pmksa_cache_add_entry()
351 pmksa->pmksa->next = pos ? pos->next : NULL; in pmksa_cache_add_entry()
353 pmksa->pmksa = pos->next; in pmksa_cache_add_entry()
360 pmksa_cache_free_entry(pmksa, pos, PMKSA_FREE); in pmksa_cache_add_entry()
365 pos = pmksa->pmksa; in pmksa_cache_add_entry()
374 entry->next = pmksa->pmksa; in pmksa_cache_add_entry()
375 pmksa->pmksa = entry; in pmksa_cache_add_entry()
376 pmksa_cache_set_expiration(pmksa); in pmksa_cache_add_entry()
381 pmksa->pmksa_count++; in pmksa_cache_add_entry()
387 if (!pmksa->sm) in pmksa_cache_add_entry()
390 if (pmksa->notify_cb) in pmksa_cache_add_entry()
391 pmksa->notify_cb(entry, pmksa->ctx); in pmksa_cache_add_entry()
393 wpa_sm_add_pmkid(pmksa->sm, entry->network_ctx, entry->aa, entry->pmkid, in pmksa_cache_add_entry()
396 pmksa->sm->dot11RSNAConfigPMKLifetime, in pmksa_cache_add_entry()
397 pmksa->sm->dot11RSNAConfigPMKReauthThreshold, in pmksa_cache_add_entry()
413 void pmksa_cache_flush(struct rsn_pmksa_cache *pmksa, void *network_ctx, in pmksa_cache_flush() argument
419 entry = pmksa->pmksa; in pmksa_cache_flush()
432 pmksa->pmksa = entry->next; in pmksa_cache_flush()
435 pmksa_cache_free_entry(pmksa, tmp, PMKSA_FREE); in pmksa_cache_flush()
443 pmksa_cache_set_expiration(pmksa); in pmksa_cache_flush()
451 void pmksa_cache_deinit(struct rsn_pmksa_cache *pmksa) in pmksa_cache_deinit() argument
455 if (pmksa == NULL) in pmksa_cache_deinit()
458 entry = pmksa->pmksa; in pmksa_cache_deinit()
459 pmksa->pmksa = NULL; in pmksa_cache_deinit()
465 pmksa_cache_set_expiration(pmksa); in pmksa_cache_deinit()
466 os_free(pmksa); in pmksa_cache_deinit()
479 struct rsn_pmksa_cache_entry * pmksa_cache_get(struct rsn_pmksa_cache *pmksa, in pmksa_cache_get() argument
485 struct rsn_pmksa_cache_entry *entry = pmksa->pmksa; in pmksa_cache_get()
501 pmksa_cache_clone_entry(struct rsn_pmksa_cache *pmksa, in pmksa_cache_clone_entry() argument
510 if (!pmksa->sm) in pmksa_cache_clone_entry()
516 new_entry = pmksa_cache_add(pmksa, old_entry->pmk, old_entry->pmk_len, in pmksa_cache_clone_entry()
518 aa, pmksa->sm->own_addr, in pmksa_cache_clone_entry()
547 pmksa_cache_get_opportunistic(struct rsn_pmksa_cache *pmksa, void *network_ctx, in pmksa_cache_get_opportunistic() argument
550 struct rsn_pmksa_cache_entry *entry = pmksa->pmksa; in pmksa_cache_get_opportunistic()
572 entry = pmksa_cache_clone_entry(pmksa, entry, aa); in pmksa_cache_get_opportunistic()
587 pmksa_cache_get_fils_cache_id(struct rsn_pmksa_cache *pmksa, in pmksa_cache_get_fils_cache_id() argument
592 for (entry = pmksa->pmksa; entry; entry = entry->next) { in pmksa_cache_get_fils_cache_id()
648 struct rsn_pmksa_cache *pmksa = sm->pmksa; in pmksa_cache_set_current() local
665 sm->cur_pmksa = pmksa_cache_get(pmksa, NULL, sm->own_addr, in pmksa_cache_set_current()
668 sm->cur_pmksa = pmksa_cache_get(pmksa, bssid, sm->own_addr, in pmksa_cache_set_current()
671 sm->cur_pmksa = pmksa_cache_get_opportunistic(pmksa, in pmksa_cache_set_current()
675 sm->cur_pmksa = pmksa_cache_get_fils_cache_id(pmksa, in pmksa_cache_set_current()
728 int pmksa_cache_list(struct rsn_pmksa_cache *pmksa, char *buf, size_t len) in pmksa_cache_list() argument
736 for (entry = pmksa->pmksa; entry; entry = entry->next) { in pmksa_cache_list()
752 entry = pmksa->pmksa; in pmksa_cache_list()
786 struct rsn_pmksa_cache_entry * pmksa_cache_head(struct rsn_pmksa_cache *pmksa) in pmksa_cache_head() argument
788 return pmksa->pmksa; in pmksa_cache_head()
808 struct rsn_pmksa_cache *pmksa; in pmksa_cache_init() local
810 pmksa = os_zalloc(sizeof(*pmksa)); in pmksa_cache_init()
811 if (pmksa) { in pmksa_cache_init()
812 pmksa->free_cb = free_cb; in pmksa_cache_init()
813 pmksa->is_current_cb = is_current_cb; in pmksa_cache_init()
814 pmksa->notify_cb = notify_cb; in pmksa_cache_init()
815 pmksa->ctx = ctx; in pmksa_cache_init()
816 pmksa->sm = sm; in pmksa_cache_init()
819 return pmksa; in pmksa_cache_init()
823 void pmksa_cache_reconfig(struct rsn_pmksa_cache *pmksa) in pmksa_cache_reconfig() argument
828 if (!pmksa || !pmksa->pmksa) in pmksa_cache_reconfig()
832 for (entry = pmksa->pmksa; entry; entry = entry->next) { in pmksa_cache_reconfig()
846 wpa_sm_add_pmkid(pmksa->sm, entry->network_ctx, entry->aa, in pmksa_cache_reconfig()
870 void pmksa_cache_deinit(struct rsn_pmksa_cache *pmksa) in pmksa_cache_deinit() argument
876 pmksa_cache_get(struct rsn_pmksa_cache *pmksa, const u8 *aa, const u8 *spa, in pmksa_cache_get() argument
890 int pmksa_cache_list(struct rsn_pmksa_cache *pmksa, char *buf, size_t len) in pmksa_cache_list() argument
897 pmksa_cache_head(struct rsn_pmksa_cache *pmksa) in pmksa_cache_head() argument
904 pmksa_cache_add_entry(struct rsn_pmksa_cache *pmksa, in pmksa_cache_add_entry() argument
912 pmksa_cache_add(struct rsn_pmksa_cache *pmksa, const u8 *pmk, size_t pmk_len, in pmksa_cache_add() argument
934 void pmksa_cache_flush(struct rsn_pmksa_cache *pmksa, void *network_ctx, in pmksa_cache_flush() argument
940 void pmksa_cache_remove(struct rsn_pmksa_cache *pmksa, in pmksa_cache_remove() argument
946 void pmksa_cache_reconfig(struct rsn_pmksa_cache *pmksa) in pmksa_cache_reconfig() argument