blob: 6182215cddd72554f1bd7a683edb76069e9cd62e [file] [log] [blame]
Hai Shalom60840252021-02-19 19:02:11 -08001/*
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 */
20struct 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];
Sunil Ravi89eba102022-09-13 21:04:37 -070026 u8 own_addr[ETH_ALEN];
27 void (*cb)(struct ptksa_cache_entry *e);
28 void *ctx;
Sunil Ravi38ad1ed2023-01-17 23:58:31 +000029 u32 akmp;
Hai Shalom60840252021-02-19 19:02:11 -080030};
31
32#ifdef CONFIG_PTKSA_CACHE
33
34struct ptksa_cache;
35
36struct ptksa_cache * ptksa_cache_init(void);
37void ptksa_cache_deinit(struct ptksa_cache *ptksa);
38struct ptksa_cache_entry * ptksa_cache_get(struct ptksa_cache *ptksa,
39 const u8 *addr, u32 cipher);
40int ptksa_cache_list(struct ptksa_cache *ptksa, char *buf, size_t len);
41struct ptksa_cache_entry * ptksa_cache_add(struct ptksa_cache *ptksa,
Sunil Ravi89eba102022-09-13 21:04:37 -070042 const u8 *own_addr,
Hai Shalom60840252021-02-19 19:02:11 -080043 const u8 *addr, u32 cipher,
44 u32 life_time,
Sunil Ravi89eba102022-09-13 21:04:37 -070045 const struct wpa_ptk *ptk,
46 void (*cb)
47 (struct ptksa_cache_entry *e),
Sunil Ravi38ad1ed2023-01-17 23:58:31 +000048 void *ctx, u32 akmp);
Hai Shalom60840252021-02-19 19:02:11 -080049void ptksa_cache_flush(struct ptksa_cache *ptksa, const u8 *addr, u32 cipher);
50
51#else /* CONFIG_PTKSA_CACHE */
52
53static inline struct ptksa_cache * ptksa_cache_init(void)
54{
55 return (struct ptksa_cache *) 1;
56}
57
58static inline void ptksa_cache_deinit(struct ptksa_cache *ptksa)
59{
60}
61
62static inline struct ptksa_cache_entry *
63ptksa_cache_get(struct ptksa_cache *ptksa, const u8 *addr, u32 cipher)
64{
65 return NULL;
66}
67
68static inline int ptksa_cache_list(struct ptksa_cache *ptksa,
69 char *buf, size_t len)
70{
71 return -1;
72}
73
74static inline struct ptksa_cache_entry *
Sunil Ravi89eba102022-09-13 21:04:37 -070075ptksa_cache_add(struct ptksa_cache *ptksa, const u8 *own_addr, const u8 *addr,
76 u32 cipher, u32 life_time, const struct wpa_ptk *ptk,
Sunil Ravi38ad1ed2023-01-17 23:58:31 +000077 void (*cb)(struct ptksa_cache_entry *e), void *ctx, u32 akmp)
Hai Shalom60840252021-02-19 19:02:11 -080078{
79 return NULL;
80}
81
82static inline void ptksa_cache_flush(struct ptksa_cache *ptksa,
83 const u8 *addr, u32 cipher)
84{
85}
86
87#endif /* CONFIG_PTKSA_CACHE */
88#endif /* PTKSA_CACHE_H */