Lines Matching defs:pmksa

23 	struct rsn_pmksa_cache_entry *pmksa; /* PMKSA cache */
33 static void pmksa_cache_set_expiration(struct rsn_pmksa_cache *pmksa);
42 static void pmksa_cache_free_entry(struct rsn_pmksa_cache *pmksa,
46 wpa_sm_remove_pmkid(pmksa->sm, entry->network_ctx, entry->aa,
50 pmksa->pmksa_count--;
51 pmksa->free_cb(entry, pmksa->ctx, reason);
58 struct rsn_pmksa_cache *pmksa = eloop_ctx;
62 while (pmksa->pmksa && pmksa->pmksa->expiration <= now.sec) {
63 struct rsn_pmksa_cache_entry *entry = pmksa->pmksa;
64 pmksa->pmksa = entry->next;
67 pmksa_cache_free_entry(pmksa, entry, PMKSA_EXPIRE);
70 pmksa_cache_set_expiration(pmksa);
76 struct rsn_pmksa_cache *pmksa = eloop_ctx;
77 pmksa->sm->cur_pmksa = NULL;
78 eapol_sm_request_reauth(pmksa->sm->eapol);
82 static void pmksa_cache_set_expiration(struct rsn_pmksa_cache *pmksa)
88 eloop_cancel_timeout(pmksa_cache_expire, pmksa, NULL);
89 eloop_cancel_timeout(pmksa_cache_reauth, pmksa, NULL);
90 if (pmksa->pmksa == NULL)
93 sec = pmksa->pmksa->expiration - now.sec;
96 eloop_register_timeout(sec + 1, 0, pmksa_cache_expire, pmksa, NULL);
98 entry = pmksa->sm->cur_pmksa ? pmksa->sm->cur_pmksa :
99 pmksa_cache_get(pmksa, pmksa->sm->bssid, NULL, NULL, 0);
101 sec = pmksa->pmksa->reauth_time - now.sec;
104 eloop_register_timeout(sec, 0, pmksa_cache_reauth, pmksa,
112 * @pmksa: Pointer to PMKSA cache data from pmksa_cache_init()
131 pmksa_cache_add(struct rsn_pmksa_cache *pmksa, const u8 *pmk, size_t pmk_len,
159 entry->expiration = now.sec + pmksa->sm->dot11RSNAConfigPMKLifetime;
160 entry->reauth_time = now.sec + pmksa->sm->dot11RSNAConfigPMKLifetime *
161 pmksa->sm->dot11RSNAConfigPMKReauthThreshold / 100;
170 return pmksa_cache_add_entry(pmksa, entry);
175 pmksa_cache_add_entry(struct rsn_pmksa_cache *pmksa,
182 pos = pmksa->pmksa;
197 pmksa->pmksa = pos->next;
214 pmksa_cache_flush(pmksa, entry->network_ctx,
216 pmksa_cache_free_entry(pmksa, pos, PMKSA_REPLACE);
223 if (pmksa->pmksa_count >= pmksa_cache_max_entries && pmksa->pmksa) {
225 pos = pmksa->pmksa;
227 if (pos == pmksa->sm->cur_pmksa) {
234 pmksa->pmksa->next = pos ? pos->next : NULL;
236 pmksa->pmksa = pos->next;
243 pmksa_cache_free_entry(pmksa, pos, PMKSA_FREE);
248 pos = pmksa->pmksa;
257 entry->next = pmksa->pmksa;
258 pmksa->pmksa = entry;
259 pmksa_cache_set_expiration(pmksa);
264 pmksa->pmksa_count++;
268 wpa_sm_add_pmkid(pmksa->sm, entry->network_ctx, entry->aa, entry->pmkid,
278 * @pmksa: Pointer to PMKSA cache data from pmksa_cache_init()
283 void pmksa_cache_flush(struct rsn_pmksa_cache *pmksa, void *network_ctx,
289 entry = pmksa->pmksa;
301 pmksa->pmksa = entry->next;
304 pmksa_cache_free_entry(pmksa, tmp, PMKSA_FREE);
312 pmksa_cache_set_expiration(pmksa);
318 * @pmksa: Pointer to PMKSA cache data from pmksa_cache_init()
320 void pmksa_cache_deinit(struct rsn_pmksa_cache *pmksa)
324 if (pmksa == NULL)
327 entry = pmksa->pmksa;
328 pmksa->pmksa = NULL;
334 pmksa_cache_set_expiration(pmksa);
335 os_free(pmksa);
341 * @pmksa: Pointer to PMKSA cache data from pmksa_cache_init()
348 struct rsn_pmksa_cache_entry * pmksa_cache_get(struct rsn_pmksa_cache *pmksa,
353 struct rsn_pmksa_cache_entry *entry = pmksa->pmksa;
368 pmksa_cache_clone_entry(struct rsn_pmksa_cache *pmksa,
375 new_entry = pmksa_cache_add(pmksa, old_entry->pmk, old_entry->pmk_len,
377 aa, pmksa->sm->own_addr,
394 * @pmksa: Pointer to PMKSA cache data from pmksa_cache_init()
405 pmksa_cache_get_opportunistic(struct rsn_pmksa_cache *pmksa, void *network_ctx,
408 struct rsn_pmksa_cache_entry *entry = pmksa->pmksa;
416 entry = pmksa_cache_clone_entry(pmksa, entry, aa);
431 pmksa_cache_get_fils_cache_id(struct rsn_pmksa_cache *pmksa,
436 for (entry = pmksa->pmksa; entry; entry = entry->next) {
488 struct rsn_pmksa_cache *pmksa = sm->pmksa;
505 sm->cur_pmksa = pmksa_cache_get(pmksa, NULL, pmkid,
508 sm->cur_pmksa = pmksa_cache_get(pmksa, bssid, NULL,
511 sm->cur_pmksa = pmksa_cache_get_opportunistic(pmksa,
515 sm->cur_pmksa = pmksa_cache_get_fils_cache_id(pmksa,
530 * @pmksa: Pointer to PMKSA cache data from pmksa_cache_init()
538 int pmksa_cache_list(struct rsn_pmksa_cache *pmksa, char *buf, size_t len)
546 for (entry = pmksa->pmksa; entry; entry = entry->next) {
562 entry = pmksa->pmksa;
596 struct rsn_pmksa_cache_entry * pmksa_cache_head(struct rsn_pmksa_cache *pmksa)
598 return pmksa->pmksa;
614 struct rsn_pmksa_cache *pmksa;
616 pmksa = os_zalloc(sizeof(*pmksa));
617 if (pmksa) {
618 pmksa->free_cb = free_cb;
619 pmksa->ctx = ctx;
620 pmksa->sm = sm;
623 return pmksa;