xref: /freebsd/contrib/wpa/src/common/ptksa_cache.h (revision 9bc300465e48e19d794d88d0c158a2adb92c7197)
1 /*
2  * RSN PTKSA cache interface
3  *
4  * Copyright (C) 2019 Intel Corporation
5  *
6  * This software may be distributed under the terms of the BSD license.
7  * See README for more details.
8  */
9 
10 #ifndef PTKSA_CACHE_H
11 #define PTKSA_CACHE_H
12 
13 #include "wpa_common.h"
14 #include "defs.h"
15 #include "list.h"
16 
17 /**
18  * struct ptksa_cache_entry - PTKSA cache entry
19  */
20 struct ptksa_cache_entry {
21 	struct dl_list list;
22 	struct wpa_ptk ptk;
23 	os_time_t expiration;
24 	u32 cipher;
25 	u8 addr[ETH_ALEN];
26 	u8 own_addr[ETH_ALEN];
27 	void (*cb)(struct ptksa_cache_entry *e);
28 	void *ctx;
29 	u32 akmp;
30 };
31 
32 
33 struct ptksa_cache;
34 
35 struct ptksa_cache * ptksa_cache_init(void);
36 void ptksa_cache_deinit(struct ptksa_cache *ptksa);
37 struct ptksa_cache_entry * ptksa_cache_get(struct ptksa_cache *ptksa,
38 					   const u8 *addr, u32 cipher);
39 int ptksa_cache_list(struct ptksa_cache *ptksa, char *buf, size_t len);
40 struct ptksa_cache_entry * ptksa_cache_add(struct ptksa_cache *ptksa,
41 					   const u8 *own_addr,
42 					   const u8 *addr, u32 cipher,
43 					   u32 life_time,
44 					   const struct wpa_ptk *ptk,
45 					   void (*cb)
46 					   (struct ptksa_cache_entry *e),
47 					   void *ctx, u32 akmp);
48 void ptksa_cache_flush(struct ptksa_cache *ptksa, const u8 *addr, u32 cipher);
49 
50 #endif /* PTKSA_CACHE_H */
51