2 * hostapd / IEEE 802.11 Management
3 * Copyright (c) 2002-2009, Jouni Malinen <j@w1.fi>
5 * This software may be distributed under the terms of the BSD license.
6 * See README for more details.
15 struct hostapd_frame_info
;
16 struct ieee80211_ht_capabilities
;
17 struct ieee80211_vht_capabilities
;
18 struct ieee80211_mgmt
;
20 enum ieee80211_op_mode
;
22 int ieee802_11_mgmt(struct hostapd_data
*hapd
, const u8
*buf
, size_t len
,
23 struct hostapd_frame_info
*fi
);
24 void ieee802_11_mgmt_cb(struct hostapd_data
*hapd
, const u8
*buf
, size_t len
,
26 void hostapd_2040_coex_action(struct hostapd_data
*hapd
,
27 const struct ieee80211_mgmt
*mgmt
, size_t len
);
29 int ieee802_11_get_mib(struct hostapd_data
*hapd
, char *buf
, size_t buflen
);
30 int ieee802_11_get_mib_sta(struct hostapd_data
*hapd
, struct sta_info
*sta
,
31 char *buf
, size_t buflen
);
32 #else /* NEED_AP_MLME */
33 static inline int ieee802_11_get_mib(struct hostapd_data
*hapd
, char *buf
,
39 static inline int ieee802_11_get_mib_sta(struct hostapd_data
*hapd
,
41 char *buf
, size_t buflen
)
45 #endif /* NEED_AP_MLME */
46 u16
hostapd_own_capab_info(struct hostapd_data
*hapd
);
47 void ap_ht2040_timeout(void *eloop_data
, void *user_data
);
48 u8
* hostapd_eid_ext_capab(struct hostapd_data
*hapd
, u8
*eid
);
49 u8
* hostapd_eid_qos_map_set(struct hostapd_data
*hapd
, u8
*eid
);
50 u8
* hostapd_eid_supp_rates(struct hostapd_data
*hapd
, u8
*eid
);
51 u8
* hostapd_eid_ext_supp_rates(struct hostapd_data
*hapd
, u8
*eid
);
52 u8
* hostapd_eid_rm_enabled_capab(struct hostapd_data
*hapd
, u8
*eid
,
54 u8
* hostapd_eid_ht_capabilities(struct hostapd_data
*hapd
, u8
*eid
);
55 u8
* hostapd_eid_ht_operation(struct hostapd_data
*hapd
, u8
*eid
);
56 u8
* hostapd_eid_secondary_channel(struct hostapd_data
*hapd
, u8
*eid
);
57 u8
* hostapd_eid_vht_capabilities(struct hostapd_data
*hapd
, u8
*eid
, u32 nsts
);
58 u8
* hostapd_eid_vht_operation(struct hostapd_data
*hapd
, u8
*eid
);
59 u8
* hostapd_eid_vendor_vht(struct hostapd_data
*hapd
, u8
*eid
);
60 u8
* hostapd_eid_wb_chsw_wrapper(struct hostapd_data
*hapd
, u8
*eid
);
61 u8
* hostapd_eid_txpower_envelope(struct hostapd_data
*hapd
, u8
*eid
);
62 u8
* hostapd_eid_he_capab(struct hostapd_data
*hapd
, u8
*eid
,
63 enum ieee80211_op_mode opmode
);
64 u8
* hostapd_eid_he_operation(struct hostapd_data
*hapd
, u8
*eid
);
65 u8
* hostapd_eid_he_mu_edca_parameter_set(struct hostapd_data
*hapd
, u8
*eid
);
66 u8
* hostapd_eid_spatial_reuse(struct hostapd_data
*hapd
, u8
*eid
);
68 int hostapd_ht_operation_update(struct hostapd_iface
*iface
);
69 void ieee802_11_send_sa_query_req(struct hostapd_data
*hapd
,
70 const u8
*addr
, const u8
*trans_id
);
71 void hostapd_get_ht_capab(struct hostapd_data
*hapd
,
72 struct ieee80211_ht_capabilities
*ht_cap
,
73 struct ieee80211_ht_capabilities
*neg_ht_cap
);
74 void hostapd_get_vht_capab(struct hostapd_data
*hapd
,
75 struct ieee80211_vht_capabilities
*vht_cap
,
76 struct ieee80211_vht_capabilities
*neg_vht_cap
);
77 void hostapd_get_he_capab(struct hostapd_data
*hapd
,
78 const struct ieee80211_he_capabilities
*he_cap
,
79 struct ieee80211_he_capabilities
*neg_he_cap
,
81 int hostapd_get_aid(struct hostapd_data
*hapd
, struct sta_info
*sta
);
82 u16
copy_sta_ht_capab(struct hostapd_data
*hapd
, struct sta_info
*sta
,
84 u16
copy_sta_vendor_vht(struct hostapd_data
*hapd
, struct sta_info
*sta
,
85 const u8
*ie
, size_t len
);
87 void update_ht_state(struct hostapd_data
*hapd
, struct sta_info
*sta
);
88 void ht40_intolerant_add(struct hostapd_iface
*iface
, struct sta_info
*sta
);
89 void ht40_intolerant_remove(struct hostapd_iface
*iface
, struct sta_info
*sta
);
90 u16
copy_sta_vht_capab(struct hostapd_data
*hapd
, struct sta_info
*sta
,
92 u16
copy_sta_vht_oper(struct hostapd_data
*hapd
, struct sta_info
*sta
,
94 u16
set_sta_vht_opmode(struct hostapd_data
*hapd
, struct sta_info
*sta
,
95 const u8
*vht_opmode
);
96 u16
copy_sta_he_capab(struct hostapd_data
*hapd
, struct sta_info
*sta
,
97 enum ieee80211_op_mode opmode
, const u8
*he_capab
,
99 void hostapd_tx_status(struct hostapd_data
*hapd
, const u8
*addr
,
100 const u8
*buf
, size_t len
, int ack
);
101 void hostapd_eapol_tx_status(struct hostapd_data
*hapd
, const u8
*dst
,
102 const u8
*data
, size_t len
, int ack
);
103 void ieee802_11_rx_from_unknown(struct hostapd_data
*hapd
, const u8
*src
,
105 u8
* hostapd_eid_assoc_comeback_time(struct hostapd_data
*hapd
,
106 struct sta_info
*sta
, u8
*eid
);
107 void ieee802_11_sa_query_action(struct hostapd_data
*hapd
,
108 const struct ieee80211_mgmt
*mgmt
,
110 u8
* hostapd_eid_interworking(struct hostapd_data
*hapd
, u8
*eid
);
111 u8
* hostapd_eid_adv_proto(struct hostapd_data
*hapd
, u8
*eid
);
112 u8
* hostapd_eid_roaming_consortium(struct hostapd_data
*hapd
, u8
*eid
);
113 u8
* hostapd_eid_time_adv(struct hostapd_data
*hapd
, u8
*eid
);
114 u8
* hostapd_eid_time_zone(struct hostapd_data
*hapd
, u8
*eid
);
115 int hostapd_update_time_adv(struct hostapd_data
*hapd
);
116 void hostapd_client_poll_ok(struct hostapd_data
*hapd
, const u8
*addr
);
117 u8
* hostapd_eid_bss_max_idle_period(struct hostapd_data
*hapd
, u8
*eid
);
119 int auth_sae_init_committed(struct hostapd_data
*hapd
, struct sta_info
*sta
);
121 void sae_clear_retransmit_timer(struct hostapd_data
*hapd
,
122 struct sta_info
*sta
);
123 void sae_accept_sta(struct hostapd_data
*hapd
, struct sta_info
*sta
);
124 #else /* CONFIG_SAE */
125 static inline void sae_clear_retransmit_timer(struct hostapd_data
*hapd
,
126 struct sta_info
*sta
)
129 #endif /* CONFIG_SAE */
133 u8
* hostapd_eid_mbo(struct hostapd_data
*hapd
, u8
*eid
, size_t len
);
135 u8
hostapd_mbo_ie_len(struct hostapd_data
*hapd
);
137 u8
* hostapd_eid_mbo_rssi_assoc_rej(struct hostapd_data
*hapd
, u8
*eid
,
138 size_t len
, int delta
);
140 #else /* CONFIG_MBO */
142 static inline u8
* hostapd_eid_mbo(struct hostapd_data
*hapd
, u8
*eid
,
148 static inline u8
hostapd_mbo_ie_len(struct hostapd_data
*hapd
)
153 #endif /* CONFIG_MBO */
155 void ap_copy_sta_supp_op_classes(struct sta_info
*sta
,
156 const u8
*supp_op_classes
,
157 size_t supp_op_classes_len
);
159 u8
* hostapd_eid_fils_indic(struct hostapd_data
*hapd
, u8
*eid
, int hessid
);
160 void ieee802_11_finish_fils_auth(struct hostapd_data
*hapd
,
161 struct sta_info
*sta
, int success
,
162 struct wpabuf
*erp_resp
,
163 const u8
*msk
, size_t msk_len
);
164 u8
* owe_assoc_req_process(struct hostapd_data
*hapd
, struct sta_info
*sta
,
165 const u8
*owe_dh
, u8 owe_dh_len
,
166 u8
*owe_buf
, size_t owe_buf_len
, u16
*status
);
167 u16
owe_process_rsn_ie(struct hostapd_data
*hapd
, struct sta_info
*sta
,
168 const u8
*rsn_ie
, size_t rsn_ie_len
,
169 const u8
*owe_dh
, size_t owe_dh_len
);
170 u16
owe_validate_request(struct hostapd_data
*hapd
, const u8
*peer
,
171 const u8
*rsn_ie
, size_t rsn_ie_len
,
172 const u8
*owe_dh
, size_t owe_dh_len
);
173 void fils_hlp_timeout(void *eloop_ctx
, void *eloop_data
);
174 void fils_hlp_finish_assoc(struct hostapd_data
*hapd
, struct sta_info
*sta
);
175 void handle_auth_fils(struct hostapd_data
*hapd
, struct sta_info
*sta
,
176 const u8
*pos
, size_t len
, u16 auth_alg
,
177 u16 auth_transaction
, u16 status_code
,
178 void (*cb
)(struct hostapd_data
*hapd
,
179 struct sta_info
*sta
,
180 u16 resp
, struct wpabuf
*data
, int pub
));
182 size_t hostapd_eid_owe_trans_len(struct hostapd_data
*hapd
);
183 u8
* hostapd_eid_owe_trans(struct hostapd_data
*hapd
, u8
*eid
, size_t len
);
185 int get_tx_parameters(struct sta_info
*sta
, int ap_max_chanwidth
,
186 int ap_seg1_idx
, int *bandwidth
, int *seg1_idx
);
188 void auth_sae_process_commit(void *eloop_ctx
, void *user_ctx
);
189 u8
* hostapd_eid_rsnxe(struct hostapd_data
*hapd
, u8
*eid
, size_t len
);
191 #endif /* IEEE802_11_H */