00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #ifndef PMKSA_CACHE_H
00016 #define PMKSA_CACHE_H
00017
00018 #include "radius/radius.h"
00019
00023 struct rsn_pmksa_cache_entry {
00024 struct rsn_pmksa_cache_entry *next, *hnext;
00025 u8 pmkid[PMKID_LEN];
00026 u8 pmk[PMK_LEN];
00027 size_t pmk_len;
00028 os_time_t expiration;
00029 int akmp;
00030 u8 spa[ETH_ALEN];
00031
00032 u8 *identity;
00033 size_t identity_len;
00034 struct radius_class_data radius_class;
00035 u8 eap_type_authsrv;
00036 int vlan_id;
00037 int opportunistic;
00038 };
00039
00040 struct rsn_pmksa_cache;
00041
00042 struct rsn_pmksa_cache *
00043 pmksa_cache_auth_init(void (*free_cb)(struct rsn_pmksa_cache_entry *entry,
00044 void *ctx), void *ctx);
00045 void pmksa_cache_auth_deinit(struct rsn_pmksa_cache *pmksa);
00046 struct rsn_pmksa_cache_entry *
00047 pmksa_cache_auth_get(struct rsn_pmksa_cache *pmksa,
00048 const u8 *spa, const u8 *pmkid);
00049 struct rsn_pmksa_cache_entry * pmksa_cache_get_okc(
00050 struct rsn_pmksa_cache *pmksa, const u8 *spa, const u8 *aa,
00051 const u8 *pmkid);
00052 struct rsn_pmksa_cache_entry *
00053 pmksa_cache_auth_add(struct rsn_pmksa_cache *pmksa,
00054 const u8 *pmk, size_t pmk_len,
00055 const u8 *aa, const u8 *spa, int session_timeout,
00056 struct eapol_state_machine *eapol, int akmp);
00057 struct rsn_pmksa_cache_entry *
00058 pmksa_cache_add_okc(struct rsn_pmksa_cache *pmksa,
00059 const struct rsn_pmksa_cache_entry *old_entry,
00060 const u8 *aa, const u8 *pmkid);
00061 void pmksa_cache_to_eapol_data(struct rsn_pmksa_cache_entry *entry,
00062 struct eapol_state_machine *eapol);
00063
00064 #endif