Lines Matching refs:pmksa

29 	struct rsn_pmksa_cache_entry *pmksa; /* PMKSA cache */
39 static void pmksa_cache_set_expiration(struct rsn_pmksa_cache *pmksa);
48 static void pmksa_cache_free_entry(struct rsn_pmksa_cache *pmksa,
52 pmksa->pmksa_count--;
53 pmksa->free_cb(entry, pmksa->ctx, replace);
60 struct rsn_pmksa_cache *pmksa = eloop_ctx;
64 while (pmksa->pmksa && pmksa->pmksa->expiration <= now.sec) {
65 struct rsn_pmksa_cache_entry *entry = pmksa->pmksa;
66 pmksa->pmksa = entry->next;
69 pmksa_cache_free_entry(pmksa, entry, 0);
72 pmksa_cache_set_expiration(pmksa);
78 struct rsn_pmksa_cache *pmksa = eloop_ctx;
79 pmksa->sm->cur_pmksa = NULL;
80 eapol_sm_request_reauth(pmksa->sm->eapol);
84 static void pmksa_cache_set_expiration(struct rsn_pmksa_cache *pmksa)
90 eloop_cancel_timeout(pmksa_cache_expire, pmksa, NULL);
91 eloop_cancel_timeout(pmksa_cache_reauth, pmksa, NULL);
92 if (pmksa->pmksa == NULL)
95 sec = pmksa->pmksa->expiration - now.sec;
98 eloop_register_timeout(sec + 1, 0, pmksa_cache_expire, pmksa, NULL);
100 entry = pmksa->sm->cur_pmksa ? pmksa->sm->cur_pmksa :
101 pmksa_cache_get(pmksa, pmksa->sm->bssid, NULL);
103 sec = pmksa->pmksa->reauth_time - now.sec;
106 eloop_register_timeout(sec, 0, pmksa_cache_reauth, pmksa,
114 * @pmksa: Pointer to PMKSA cache data from pmksa_cache_init()
129 pmksa_cache_add(struct rsn_pmksa_cache *pmksa, const u8 *pmk, size_t pmk_len,
146 entry->expiration = now.sec + pmksa->sm->dot11RSNAConfigPMKLifetime;
147 entry->reauth_time = now.sec + pmksa->sm->dot11RSNAConfigPMKLifetime *
148 pmksa->sm->dot11RSNAConfigPMKReauthThreshold / 100;
155 pos = pmksa->pmksa;
169 pmksa->pmksa = pos->next;
172 if (pos == pmksa->sm->cur_pmksa) {
183 pmksa->sm->cur_pmksa = NULL;
187 pmksa_cache_free_entry(pmksa, pos, 1);
194 if (pmksa->pmksa_count >= pmksa_cache_max_entries && pmksa->pmksa) {
196 pos = pmksa->pmksa;
197 pmksa->pmksa = pos->next;
201 wpa_sm_remove_pmkid(pmksa->sm, pos->aa, pos->pmkid);
202 pmksa_cache_free_entry(pmksa, pos, 0);
206 pos = pmksa->pmksa;
215 entry->next = pmksa->pmksa;
216 pmksa->pmksa = entry;
217 pmksa_cache_set_expiration(pmksa);
222 pmksa->pmksa_count++;
225 wpa_sm_add_pmkid(pmksa->sm, entry->aa, entry->pmkid);
233 * @pmksa: Pointer to PMKSA cache data from pmksa_cache_init()
235 void pmksa_cache_deinit(struct rsn_pmksa_cache *pmksa)
239 if (pmksa == NULL)
242 entry = pmksa->pmksa;
243 pmksa->pmksa = NULL;
249 pmksa_cache_set_expiration(pmksa);
250 os_free(pmksa);
256 * @pmksa: Pointer to PMKSA cache data from pmksa_cache_init()
261 struct rsn_pmksa_cache_entry * pmksa_cache_get(struct rsn_pmksa_cache *pmksa,
264 struct rsn_pmksa_cache_entry *entry = pmksa->pmksa;
278 * @pmksa: Pointer to PMKSA cache data from pmksa_cache_init()
282 void pmksa_cache_notify_reconfig(struct rsn_pmksa_cache *pmksa)
284 struct rsn_pmksa_cache_entry *entry = pmksa->pmksa;
293 pmksa_cache_clone_entry(struct rsn_pmksa_cache *pmksa,
299 new_entry = pmksa_cache_add(pmksa, old_entry->pmk, old_entry->pmk_len,
300 aa, pmksa->sm->own_addr,
315 * @pmksa: Pointer to PMKSA cache data from pmksa_cache_init()
325 pmksa_cache_get_opportunistic(struct rsn_pmksa_cache *pmksa, void *network_ctx,
328 struct rsn_pmksa_cache_entry *entry = pmksa->pmksa;
334 entry = pmksa_cache_clone_entry(pmksa, entry, aa);
386 struct rsn_pmksa_cache *pmksa = sm->pmksa;
389 sm->cur_pmksa = pmksa_cache_get(pmksa, NULL, pmkid);
391 sm->cur_pmksa = pmksa_cache_get(pmksa, bssid, NULL);
393 sm->cur_pmksa = pmksa_cache_get_opportunistic(pmksa,
407 * @pmksa: Pointer to PMKSA cache data from pmksa_cache_init()
415 int pmksa_cache_list(struct rsn_pmksa_cache *pmksa, char *buf, size_t len)
430 entry = pmksa->pmksa;
464 struct rsn_pmksa_cache *pmksa;
466 pmksa = os_zalloc(sizeof(*pmksa));
467 if (pmksa) {
468 pmksa->free_cb = free_cb;
469 pmksa->ctx = ctx;
470 pmksa->sm = sm;
473 return pmksa;