12 #include "common/defs.h" 13 #include "common/eapol_common.h" 14 #include "common/wpa_common.h" 15 #include "common/ieee802_11_defs.h" 26 void (*set_state)(
void *ctx,
enum wpa_states state);
27 enum wpa_states (*get_state)(
void *ctx);
28 void (*deauthenticate)(
void * ctx,
int reason_code);
29 int (*set_key)(
void *ctx,
enum wpa_alg alg,
30 const u8 *addr,
int key_idx,
int set_tx,
31 const u8 *seq,
size_t seq_len,
32 const u8 *key,
size_t key_len);
33 void * (*get_network_ctx)(
void *ctx);
34 int (*get_bssid)(
void *ctx, u8 *bssid);
35 int (*ether_send)(
void *ctx,
const u8 *dest, u16 proto,
const u8 *buf,
37 int (*get_beacon_ie)(
void *ctx);
38 void (*cancel_auth_timeout)(
void *ctx);
39 u8 * (*alloc_eapol)(
void *ctx, u8 type,
const void *data, u16 data_len,
40 size_t *msg_len,
void **data_pos);
41 int (*add_pmkid)(
void *ctx,
void *network_ctx,
const u8 *bssid,
43 int (*remove_pmkid)(
void *ctx,
void *network_ctx,
const u8 *bssid,
48 int (*mlme_setprotection)(
void *ctx,
const u8 *addr,
49 int protection_type,
int key_type);
50 int (*update_ft_ies)(
void *ctx,
const u8 *md,
const u8 *ies,
52 int (*send_ft_action)(
void *ctx, u8 action,
const u8 *target_ap,
53 const u8 *ies,
size_t ies_len);
54 int (*mark_authenticated)(
void *ctx,
const u8 *target_ap);
56 int (*tdls_get_capa)(
void *ctx,
int *tdls_supported,
57 int *tdls_ext_setup,
int *tdls_chan_switch);
58 int (*send_tdls_mgmt)(
void *ctx,
const u8 *dst,
59 u8 action_code, u8 dialog_token,
60 u16 status_code, u32 peer_capab,
61 int initiator,
const u8 *buf,
size_t len);
62 int (*tdls_oper)(
void *ctx,
int oper,
const u8 *peer);
63 int (*tdls_peer_addset)(
void *ctx,
const u8 *addr,
int add, u16 aid,
64 u16 capability,
const u8 *supp_rates,
65 size_t supp_rates_len,
68 u8 qosinfo,
int wmm,
const u8 *ext_capab,
69 size_t ext_capab_len,
const u8 *supp_channels,
70 size_t supp_channels_len,
71 const u8 *supp_oper_classes,
72 size_t supp_oper_classes_len);
73 int (*tdls_enable_channel_switch)(
74 void *ctx,
const u8 *addr, u8 oper_class,
76 int (*tdls_disable_channel_switch)(
void *ctx,
const u8 *addr);
78 void (*set_rekey_offload)(
void *ctx,
const u8 *kek,
size_t kek_len,
79 const u8 *kck,
size_t kck_len,
80 const u8 *replay_ctr);
81 int (*key_mgmt_set_pmk)(
void *ctx,
const u8 *pmk,
size_t pmk_len);
85 enum wpa_sm_conf_params {
87 RSNA_PMK_REAUTH_THRESHOLD ,
94 WPA_PARAM_RSN_ENABLED,
101 int allowed_pairwise_cipher;
102 int proactive_key_caching;
109 int wpa_rsc_relaxation;
112 #ifndef CONFIG_NO_WPA 115 void wpa_sm_deinit(
struct wpa_sm *sm);
116 void wpa_sm_notify_assoc(
struct wpa_sm *sm,
const u8 *bssid);
117 void wpa_sm_notify_disassoc(
struct wpa_sm *sm);
118 void wpa_sm_set_pmk(
struct wpa_sm *sm,
const u8 *pmk,
size_t pmk_len,
119 const u8 *pmkid,
const u8 *bssid);
120 void wpa_sm_set_pmk_from_pmksa(
struct wpa_sm *sm);
121 void wpa_sm_set_fast_reauth(
struct wpa_sm *sm,
int fast_reauth);
122 void wpa_sm_set_scard_ctx(
struct wpa_sm *sm,
void *scard_ctx);
124 void wpa_sm_set_own_addr(
struct wpa_sm *sm,
const u8 *addr);
125 void wpa_sm_set_ifname(
struct wpa_sm *sm,
const char *ifname,
126 const char *bridge_ifname);
128 int wpa_sm_set_assoc_wpa_ie(
struct wpa_sm *sm,
const u8 *ie,
size_t len);
129 int wpa_sm_set_assoc_wpa_ie_default(
struct wpa_sm *sm, u8 *wpa_ie,
131 int wpa_sm_set_ap_wpa_ie(
struct wpa_sm *sm,
const u8 *ie,
size_t len);
132 int wpa_sm_set_ap_rsn_ie(
struct wpa_sm *sm,
const u8 *ie,
size_t len);
133 int wpa_sm_get_mib(
struct wpa_sm *sm,
char *buf,
size_t buflen);
135 int wpa_sm_set_param(
struct wpa_sm *sm,
enum wpa_sm_conf_params param,
138 int wpa_sm_get_status(
struct wpa_sm *sm,
char *buf,
size_t buflen,
140 int wpa_sm_pmf_enabled(
struct wpa_sm *sm);
142 void wpa_sm_key_request(
struct wpa_sm *sm,
int error,
int pairwise);
144 int wpa_parse_wpa_ie(
const u8 *wpa_ie,
size_t wpa_ie_len,
147 void wpa_sm_aborted_cached(
struct wpa_sm *sm);
148 int wpa_sm_rx_eapol(
struct wpa_sm *sm,
const u8 *src_addr,
149 const u8 *buf,
size_t len);
151 int wpa_sm_pmksa_cache_list(
struct wpa_sm *sm,
char *buf,
size_t len);
154 wpa_sm_pmksa_cache_add_entry(
struct wpa_sm *sm,
156 void wpa_sm_drop_sa(
struct wpa_sm *sm);
157 int wpa_sm_has_ptk(
struct wpa_sm *sm);
159 void wpa_sm_update_replay_ctr(
struct wpa_sm *sm,
const u8 *replay_ctr);
163 int wpa_sm_get_p2p_ip_addr(
struct wpa_sm *sm, u8 *buf);
165 void wpa_sm_set_rx_replay_ctr(
struct wpa_sm *sm,
const u8 *rx_replay_counter);
166 void wpa_sm_set_ptk_kck_kek(
struct wpa_sm *sm,
167 const u8 *ptk_kck,
size_t ptk_kck_len,
168 const u8 *ptk_kek,
size_t ptk_kek_len);
174 return (
struct wpa_sm *) 1;
177 static inline void wpa_sm_deinit(
struct wpa_sm *sm)
181 static inline void wpa_sm_notify_assoc(
struct wpa_sm *sm,
const u8 *bssid)
185 static inline void wpa_sm_notify_disassoc(
struct wpa_sm *sm)
189 static inline void wpa_sm_set_pmk(
struct wpa_sm *sm,
const u8 *pmk,
190 size_t pmk_len,
const u8 *pmkid,
195 static inline void wpa_sm_set_pmk_from_pmksa(
struct wpa_sm *sm)
199 static inline void wpa_sm_set_fast_reauth(
struct wpa_sm *sm,
int fast_reauth)
203 static inline void wpa_sm_set_scard_ctx(
struct wpa_sm *sm,
void *scard_ctx)
207 static inline void wpa_sm_set_config(
struct wpa_sm *sm,
212 static inline void wpa_sm_set_own_addr(
struct wpa_sm *sm,
const u8 *addr)
216 static inline void wpa_sm_set_ifname(
struct wpa_sm *sm,
const char *ifname,
217 const char *bridge_ifname)
221 static inline void wpa_sm_set_eapol(
struct wpa_sm *sm,
struct eapol_sm *eapol)
225 static inline int wpa_sm_set_assoc_wpa_ie(
struct wpa_sm *sm,
const u8 *ie,
231 static inline int wpa_sm_set_assoc_wpa_ie_default(
struct wpa_sm *sm,
238 static inline int wpa_sm_set_ap_wpa_ie(
struct wpa_sm *sm,
const u8 *ie,
244 static inline int wpa_sm_set_ap_rsn_ie(
struct wpa_sm *sm,
const u8 *ie,
250 static inline int wpa_sm_get_mib(
struct wpa_sm *sm,
char *buf,
size_t buflen)
255 static inline int wpa_sm_set_param(
struct wpa_sm *sm,
256 enum wpa_sm_conf_params param,
262 static inline int wpa_sm_get_status(
struct wpa_sm *sm,
char *buf,
263 size_t buflen,
int verbose)
268 static inline int wpa_sm_pmf_enabled(
struct wpa_sm *sm)
273 static inline void wpa_sm_key_request(
struct wpa_sm *sm,
int error,
278 static inline int wpa_parse_wpa_ie(
const u8 *wpa_ie,
size_t wpa_ie_len,
284 static inline void wpa_sm_aborted_cached(
struct wpa_sm *sm)
288 static inline int wpa_sm_rx_eapol(
struct wpa_sm *sm,
const u8 *src_addr,
289 const u8 *buf,
size_t len)
294 static inline int wpa_sm_parse_own_wpa_ie(
struct wpa_sm *sm,
300 static inline int wpa_sm_pmksa_cache_list(
struct wpa_sm *sm,
char *buf,
306 static inline void wpa_sm_drop_sa(
struct wpa_sm *sm)
310 static inline int wpa_sm_has_ptk(
struct wpa_sm *sm)
315 static inline void wpa_sm_update_replay_ctr(
struct wpa_sm *sm,
316 const u8 *replay_ctr)
320 static inline void wpa_sm_pmksa_cache_flush(
struct wpa_sm *sm,
325 static inline void wpa_sm_set_rx_replay_ctr(
struct wpa_sm *sm,
326 const u8 *rx_replay_counter)
330 static inline void wpa_sm_set_ptk_kck_kek(
struct wpa_sm *sm,
const u8 *ptk_kck,
332 const u8 *ptk_kek,
size_t ptk_kek_len)
338 #ifdef CONFIG_PEERKEY 339 int wpa_sm_stkstart(
struct wpa_sm *sm,
const u8 *peer);
340 int wpa_sm_rx_eapol_peerkey(
struct wpa_sm *sm,
const u8 *src_addr,
341 const u8 *buf,
size_t len);
343 static inline int wpa_sm_stkstart(
struct wpa_sm *sm,
const u8 *peer)
348 static inline int wpa_sm_rx_eapol_peerkey(
struct wpa_sm *sm,
const u8 *src_addr,
349 const u8 *buf,
size_t len)
355 #ifdef CONFIG_IEEE80211R 357 int wpa_sm_set_ft_params(
struct wpa_sm *sm,
const u8 *ies,
size_t ies_len);
358 int wpa_ft_prepare_auth_request(
struct wpa_sm *sm,
const u8 *mdie);
359 int wpa_ft_process_response(
struct wpa_sm *sm,
const u8 *ies,
size_t ies_len,
360 int ft_action,
const u8 *target_ap,
361 const u8 *ric_ies,
size_t ric_ies_len);
362 int wpa_ft_is_completed(
struct wpa_sm *sm);
363 void wpa_reset_ft_completed(
struct wpa_sm *sm);
364 int wpa_ft_validate_reassoc_resp(
struct wpa_sm *sm,
const u8 *ies,
365 size_t ies_len,
const u8 *src_addr);
366 int wpa_ft_start_over_ds(
struct wpa_sm *sm,
const u8 *target_ap,
372 wpa_sm_set_ft_params(
struct wpa_sm *sm,
const u8 *ies,
size_t ies_len)
377 static inline int wpa_ft_prepare_auth_request(
struct wpa_sm *sm,
384 wpa_ft_process_response(
struct wpa_sm *sm,
const u8 *ies,
size_t ies_len,
385 int ft_action,
const u8 *target_ap)
390 static inline int wpa_ft_is_completed(
struct wpa_sm *sm)
395 static inline void wpa_reset_ft_completed(
struct wpa_sm *sm)
400 wpa_ft_validate_reassoc_resp(
struct wpa_sm *sm,
const u8 *ies,
size_t ies_len,
410 void wpa_tdls_ap_ies(
struct wpa_sm *sm,
const u8 *ies,
size_t len);
411 void wpa_tdls_assoc_resp_ies(
struct wpa_sm *sm,
const u8 *ies,
size_t len);
412 int wpa_tdls_start(
struct wpa_sm *sm,
const u8 *addr);
413 void wpa_tdls_remove(
struct wpa_sm *sm,
const u8 *addr);
414 int wpa_tdls_teardown_link(
struct wpa_sm *sm,
const u8 *addr, u16 reason_code);
415 int wpa_tdls_send_discovery_request(
struct wpa_sm *sm,
const u8 *addr);
416 int wpa_tdls_init(
struct wpa_sm *sm);
417 void wpa_tdls_teardown_peers(
struct wpa_sm *sm);
418 void wpa_tdls_deinit(
struct wpa_sm *sm);
419 void wpa_tdls_enable(
struct wpa_sm *sm,
int enabled);
420 void wpa_tdls_disable_unreachable_link(
struct wpa_sm *sm,
const u8 *addr);
421 const char * wpa_tdls_get_link_status(
struct wpa_sm *sm,
const u8 *addr);
422 int wpa_tdls_is_external_setup(
struct wpa_sm *sm);
423 int wpa_tdls_enable_chan_switch(
struct wpa_sm *sm,
const u8 *addr,
426 int wpa_tdls_disable_chan_switch(
struct wpa_sm *sm,
const u8 *addr);
427 #ifdef CONFIG_TDLS_TESTING 428 extern unsigned int tdls_testing;
432 int wpa_wnmsleep_install_key(
struct wpa_sm *sm, u8 subelem_id, u8 *buf);
433 void wpa_sm_set_test_assoc_ie(
struct wpa_sm *sm,
struct wpabuf *buf);
436 int fils_process_auth(
struct wpa_sm *sm,
const u8 *data,
size_t len);
437 struct wpabuf * fils_build_assoc_req(
struct wpa_sm *sm,
const u8 **kek,
438 size_t *kek_len,
const u8 **snonce,
440 int fils_process_assoc_resp(
struct wpa_sm *sm,
const u8 *resp,
size_t len);
441 int wpa_fils_is_completed(
struct wpa_sm *sm);
Definition: ieee802_11_defs.h:944
Definition: ieee802_11_defs.h:978
struct wpa_config_blob - Named configuration blob
Definition: eap_config.h:766
void * network_ctx
network_ctx - Network configuration context
Definition: pmksa_cache.h:35
size_t len
len - Length of binary data
Definition: eap_config.h:780
struct rsn_pmksa_cache_entry - PMKSA cache entry
Definition: pmksa_cache_auth.h:17
struct eapol_sm - Internal data for EAPOL state machines
Definition: eapol_supp_sm.c:31
struct hostapd_freq_params - Channel parameters
Definition: driver.h:565
struct wpa_sm - Internal WPA state machine data
Definition: wpa_i.h:21
char * name
name - Blob name
Definition: eap_config.h:770
Definition: wpa_common.h:365