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 */ 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]; 26}; 27 28#ifdef CONFIG_PTKSA_CACHE 29 30struct ptksa_cache; 31 32struct ptksa_cache * ptksa_cache_init(void); 33void ptksa_cache_deinit(struct ptksa_cache *ptksa); 34struct ptksa_cache_entry * ptksa_cache_get(struct ptksa_cache *ptksa, 35 const u8 *addr, u32 cipher); 36int ptksa_cache_list(struct ptksa_cache *ptksa, char *buf, size_t len); 37struct ptksa_cache_entry * ptksa_cache_add(struct ptksa_cache *ptksa, 38 const u8 *addr, u32 cipher, 39 u32 life_time, 40 const struct wpa_ptk *ptk); 41void ptksa_cache_flush(struct ptksa_cache *ptksa, const u8 *addr, u32 cipher); 42 43#else /* CONFIG_PTKSA_CACHE */ 44 45static inline struct ptksa_cache * ptksa_cache_init(void) 46{ 47 return (struct ptksa_cache *) 1; 48} 49 50static inline void ptksa_cache_deinit(struct ptksa_cache *ptksa) 51{ 52} 53 54static inline struct ptksa_cache_entry * 55ptksa_cache_get(struct ptksa_cache *ptksa, const u8 *addr, u32 cipher) 56{ 57 return NULL; 58} 59 60static inline int ptksa_cache_list(struct ptksa_cache *ptksa, 61 char *buf, size_t len) 62{ 63 return -1; 64} 65 66static inline struct ptksa_cache_entry * 67ptksa_cache_add(struct ptksa_cache *ptksa, const u8 *addr, u32 cipher, 68 u32 life_time, const struct wpa_ptk *ptk) 69{ 70 return NULL; 71} 72 73static inline void ptksa_cache_flush(struct ptksa_cache *ptksa, 74 const u8 *addr, u32 cipher) 75{ 76} 77 78#endif /* CONFIG_PTKSA_CACHE */ 79#endif /* PTKSA_CACHE_H */ 80