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->aa, entry->pmkid);
47 pmksa->pmksa_count--;
48 pmksa->free_cb(entry, pmksa->ctx, reason);
55 struct rsn_pmksa_cache *pmksa = eloop_ctx;
59 while (pmksa->pmksa && pmksa->pmksa->expiration <= now.sec) {
60 struct rsn_pmksa_cache_entry *entry = pmksa->pmksa;
61 pmksa->pmksa = entry->next;
64 pmksa_cache_free_entry(pmksa, entry, PMKSA_EXPIRE);
67 pmksa_cache_set_expiration(pmksa);
73 struct rsn_pmksa_cache *pmksa = eloop_ctx;
74 pmksa->sm->cur_pmksa = NULL;
75 eapol_sm_request_reauth(pmksa->sm->eapol);
79 static void pmksa_cache_set_expiration(struct rsn_pmksa_cache *pmksa)
85 eloop_cancel_timeout(pmksa_cache_expire, pmksa, NULL);
86 eloop_cancel_timeout(pmksa_cache_reauth, pmksa, NULL);
87 if (pmksa->pmksa == NULL)
90 sec = pmksa->pmksa->expiration - now.sec;
93 eloop_register_timeout(sec + 1, 0, pmksa_cache_expire, pmksa, NULL);
95 entry = pmksa->sm->cur_pmksa ? pmksa->sm->cur_pmksa :
96 pmksa_cache_get(pmksa, pmksa->sm->bssid, NULL, NULL);
98 sec = pmksa->pmksa->reauth_time - now.sec;
101 eloop_register_timeout(sec, 0, pmksa_cache_reauth, pmksa,
109 * @pmksa: Pointer to PMKSA cache data from pmksa_cache_init()
126 pmksa_cache_add(struct rsn_pmksa_cache *pmksa, const u8 *pmk, size_t pmk_len,
152 entry->expiration = now.sec + pmksa->sm->dot11RSNAConfigPMKLifetime;
153 entry->reauth_time = now.sec + pmksa->sm->dot11RSNAConfigPMKLifetime *
154 pmksa->sm->dot11RSNAConfigPMKReauthThreshold / 100;
161 pos = pmksa->pmksa;
175 pmksa->pmksa = pos->next;
192 pmksa_cache_flush(pmksa, network_ctx, pos->pmk,
194 pmksa_cache_free_entry(pmksa, pos, PMKSA_REPLACE);
201 if (pmksa->pmksa_count >= pmksa_cache_max_entries && pmksa->pmksa) {
203 pos = pmksa->pmksa;
205 if (pos == pmksa->sm->cur_pmksa) {
212 pmksa->pmksa->next = pos ? pos->next : NULL;
214 pmksa->pmksa = pos->next;
221 pmksa_cache_free_entry(pmksa, pos, PMKSA_FREE);
226 pos = pmksa->pmksa;
235 entry->next = pmksa->pmksa;
236 pmksa->pmksa = entry;
237 pmksa_cache_set_expiration(pmksa);
242 pmksa->pmksa_count++;
245 wpa_sm_add_pmkid(pmksa->sm, entry->aa, entry->pmkid);
253 * @pmksa: Pointer to PMKSA cache data from pmksa_cache_init()
258 void pmksa_cache_flush(struct rsn_pmksa_cache *pmksa, void *network_ctx,
264 entry = pmksa->pmksa;
276 pmksa->pmksa = entry->next;
279 pmksa_cache_free_entry(pmksa, tmp, PMKSA_FREE);
287 pmksa_cache_set_expiration(pmksa);
293 * @pmksa: Pointer to PMKSA cache data from pmksa_cache_init()
295 void pmksa_cache_deinit(struct rsn_pmksa_cache *pmksa)
299 if (pmksa == NULL)
302 entry = pmksa->pmksa;
303 pmksa->pmksa = NULL;
309 pmksa_cache_set_expiration(pmksa);
310 os_free(pmksa);
316 * @pmksa: Pointer to PMKSA cache data from pmksa_cache_init()
322 struct rsn_pmksa_cache_entry * pmksa_cache_get(struct rsn_pmksa_cache *pmksa,
326 struct rsn_pmksa_cache_entry *entry = pmksa->pmksa;
340 pmksa_cache_clone_entry(struct rsn_pmksa_cache *pmksa,
346 new_entry = pmksa_cache_add(pmksa, old_entry->pmk, old_entry->pmk_len,
348 aa, pmksa->sm->own_addr,
363 * @pmksa: Pointer to PMKSA cache data from pmksa_cache_init()
373 pmksa_cache_get_opportunistic(struct rsn_pmksa_cache *pmksa, void *network_ctx,
376 struct rsn_pmksa_cache_entry *entry = pmksa->pmksa;
383 entry = pmksa_cache_clone_entry(pmksa, entry, aa);
435 struct rsn_pmksa_cache *pmksa = sm->pmksa;
447 sm->cur_pmksa = pmksa_cache_get(pmksa, NULL, pmkid,
450 sm->cur_pmksa = pmksa_cache_get(pmksa, bssid, NULL,
453 sm->cur_pmksa = pmksa_cache_get_opportunistic(pmksa,
468 * @pmksa: Pointer to PMKSA cache data from pmksa_cache_init()
476 int pmksa_cache_list(struct rsn_pmksa_cache *pmksa, char *buf, size_t len)
491 entry = pmksa->pmksa;
525 struct rsn_pmksa_cache *pmksa;
527 pmksa = os_zalloc(sizeof(*pmksa));
528 if (pmksa) {
529 pmksa->free_cb = free_cb;
530 pmksa->ctx = ctx;
531 pmksa->sm = sm;
534 return pmksa;