| /* |
| * RSN PTKSA cache interface |
| * |
| * Copyright (C) 2019 Intel Corporation |
| * |
| * This software may be distributed under the terms of the BSD license. |
| * See README for more details. |
| */ |
| |
| #ifndef PTKSA_CACHE_H |
| #define PTKSA_CACHE_H |
| |
| #include "wpa_common.h" |
| #include "defs.h" |
| #include "list.h" |
| |
| /** |
| * struct ptksa_cache_entry - PTKSA cache entry |
| */ |
| struct ptksa_cache_entry { |
| struct dl_list list; |
| struct wpa_ptk ptk; |
| os_time_t expiration; |
| u32 cipher; |
| u8 addr[ETH_ALEN]; |
| u8 own_addr[ETH_ALEN]; |
| void (*cb)(struct ptksa_cache_entry *e); |
| void *ctx; |
| u32 akmp; |
| }; |
| |
| #ifdef CONFIG_PTKSA_CACHE |
| |
| struct ptksa_cache; |
| |
| struct ptksa_cache * ptksa_cache_init(void); |
| void ptksa_cache_deinit(struct ptksa_cache *ptksa); |
| struct ptksa_cache_entry * ptksa_cache_get(struct ptksa_cache *ptksa, |
| const u8 *addr, u32 cipher); |
| int ptksa_cache_list(struct ptksa_cache *ptksa, char *buf, size_t len); |
| struct ptksa_cache_entry * ptksa_cache_add(struct ptksa_cache *ptksa, |
| const u8 *own_addr, |
| const u8 *addr, u32 cipher, |
| u32 life_time, |
| const struct wpa_ptk *ptk, |
| void (*cb) |
| (struct ptksa_cache_entry *e), |
| void *ctx, u32 akmp); |
| void ptksa_cache_flush(struct ptksa_cache *ptksa, const u8 *addr, u32 cipher); |
| |
| #else /* CONFIG_PTKSA_CACHE */ |
| |
| static inline struct ptksa_cache * ptksa_cache_init(void) |
| { |
| return (struct ptksa_cache *) 1; |
| } |
| |
| static inline void ptksa_cache_deinit(struct ptksa_cache *ptksa) |
| { |
| } |
| |
| static inline struct ptksa_cache_entry * |
| ptksa_cache_get(struct ptksa_cache *ptksa, const u8 *addr, u32 cipher) |
| { |
| return NULL; |
| } |
| |
| static inline int ptksa_cache_list(struct ptksa_cache *ptksa, |
| char *buf, size_t len) |
| { |
| return -1; |
| } |
| |
| static inline struct ptksa_cache_entry * |
| ptksa_cache_add(struct ptksa_cache *ptksa, const u8 *own_addr, const u8 *addr, |
| u32 cipher, u32 life_time, const struct wpa_ptk *ptk, |
| void (*cb)(struct ptksa_cache_entry *e), void *ctx, u32 akmp) |
| { |
| return NULL; |
| } |
| |
| static inline void ptksa_cache_flush(struct ptksa_cache *ptksa, |
| const u8 *addr, u32 cipher) |
| { |
| } |
| |
| #endif /* CONFIG_PTKSA_CACHE */ |
| #endif /* PTKSA_CACHE_H */ |