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
;
19 struct vlan_description
;
20 struct hostapd_sta_wpa_psk_short
;
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_ht_capabilities(struct hostapd_data
*hapd
, u8
*eid
);
53 u8
* hostapd_eid_ht_operation(struct hostapd_data
*hapd
, u8
*eid
);
54 u8
* hostapd_eid_secondary_channel(struct hostapd_data
*hapd
, u8
*eid
);
55 u8
* hostapd_eid_vht_capabilities(struct hostapd_data
*hapd
, u8
*eid
, u32 nsts
);
56 u8
* hostapd_eid_vht_operation(struct hostapd_data
*hapd
, u8
*eid
);
57 u8
* hostapd_eid_vendor_vht(struct hostapd_data
*hapd
, u8
*eid
);
58 u8
* hostapd_eid_wb_chsw_wrapper(struct hostapd_data
*hapd
, u8
*eid
);
59 u8
* hostapd_eid_txpower_envelope(struct hostapd_data
*hapd
, u8
*eid
);
60 u8
* hostapd_eid_he_capab(struct hostapd_data
*hapd
, u8
*eid
);
61 u8
* hostapd_eid_he_operation(struct hostapd_data
*hapd
, u8
*eid
);
62 u8
* hostapd_eid_he_mu_edca_parameter_set(struct hostapd_data
*hapd
, u8
*eid
);
63 u8
* hostapd_eid_spatial_reuse(struct hostapd_data
*hapd
, u8
*eid
);
65 int hostapd_ht_operation_update(struct hostapd_iface
*iface
);
66 void ieee802_11_send_sa_query_req(struct hostapd_data
*hapd
,
67 const u8
*addr
, const u8
*trans_id
);
68 void hostapd_get_ht_capab(struct hostapd_data
*hapd
,
69 struct ieee80211_ht_capabilities
*ht_cap
,
70 struct ieee80211_ht_capabilities
*neg_ht_cap
);
71 void hostapd_get_vht_capab(struct hostapd_data
*hapd
,
72 struct ieee80211_vht_capabilities
*vht_cap
,
73 struct ieee80211_vht_capabilities
*neg_vht_cap
);
74 void hostapd_get_he_capab(struct hostapd_data
*hapd
,
75 const struct ieee80211_he_capabilities
*he_cap
,
76 struct ieee80211_he_capabilities
*neg_he_cap
,
78 int hostapd_get_aid(struct hostapd_data
*hapd
, struct sta_info
*sta
);
79 u16
copy_sta_ht_capab(struct hostapd_data
*hapd
, struct sta_info
*sta
,
81 u16
copy_sta_vendor_vht(struct hostapd_data
*hapd
, struct sta_info
*sta
,
82 const u8
*ie
, size_t len
);
84 void update_ht_state(struct hostapd_data
*hapd
, struct sta_info
*sta
);
85 void ht40_intolerant_add(struct hostapd_iface
*iface
, struct sta_info
*sta
);
86 void ht40_intolerant_remove(struct hostapd_iface
*iface
, struct sta_info
*sta
);
87 u16
copy_sta_vht_capab(struct hostapd_data
*hapd
, struct sta_info
*sta
,
89 u16
copy_sta_vht_oper(struct hostapd_data
*hapd
, struct sta_info
*sta
,
91 u16
set_sta_vht_opmode(struct hostapd_data
*hapd
, struct sta_info
*sta
,
92 const u8
*vht_opmode
);
93 u16
copy_sta_he_capab(struct hostapd_data
*hapd
, struct sta_info
*sta
,
94 const u8
*he_capab
, size_t he_capab_len
);
95 void hostapd_tx_status(struct hostapd_data
*hapd
, const u8
*addr
,
96 const u8
*buf
, size_t len
, int ack
);
97 void hostapd_eapol_tx_status(struct hostapd_data
*hapd
, const u8
*dst
,
98 const u8
*data
, size_t len
, int ack
);
99 void ieee802_11_rx_from_unknown(struct hostapd_data
*hapd
, const u8
*src
,
101 u8
* hostapd_eid_assoc_comeback_time(struct hostapd_data
*hapd
,
102 struct sta_info
*sta
, u8
*eid
);
103 void ieee802_11_sa_query_action(struct hostapd_data
*hapd
,
104 const struct ieee80211_mgmt
*mgmt
,
106 u8
* hostapd_eid_interworking(struct hostapd_data
*hapd
, u8
*eid
);
107 u8
* hostapd_eid_adv_proto(struct hostapd_data
*hapd
, u8
*eid
);
108 u8
* hostapd_eid_roaming_consortium(struct hostapd_data
*hapd
, u8
*eid
);
109 u8
* hostapd_eid_time_adv(struct hostapd_data
*hapd
, u8
*eid
);
110 u8
* hostapd_eid_time_zone(struct hostapd_data
*hapd
, u8
*eid
);
111 int hostapd_update_time_adv(struct hostapd_data
*hapd
);
112 void hostapd_client_poll_ok(struct hostapd_data
*hapd
, const u8
*addr
);
113 u8
* hostapd_eid_bss_max_idle_period(struct hostapd_data
*hapd
, u8
*eid
);
115 int auth_sae_init_committed(struct hostapd_data
*hapd
, struct sta_info
*sta
);
117 void sae_clear_retransmit_timer(struct hostapd_data
*hapd
,
118 struct sta_info
*sta
);
119 void sae_accept_sta(struct hostapd_data
*hapd
, struct sta_info
*sta
);
120 #else /* CONFIG_SAE */
121 static inline void sae_clear_retransmit_timer(struct hostapd_data
*hapd
,
122 struct sta_info
*sta
)
125 #endif /* CONFIG_SAE */
129 u8
* hostapd_eid_mbo(struct hostapd_data
*hapd
, u8
*eid
, size_t len
);
131 u8
hostapd_mbo_ie_len(struct hostapd_data
*hapd
);
133 u8
* hostapd_eid_mbo_rssi_assoc_rej(struct hostapd_data
*hapd
, u8
*eid
,
134 size_t len
, int delta
);
136 #else /* CONFIG_MBO */
138 static inline u8
* hostapd_eid_mbo(struct hostapd_data
*hapd
, u8
*eid
,
144 static inline u8
hostapd_mbo_ie_len(struct hostapd_data
*hapd
)
149 #endif /* CONFIG_MBO */
151 void ap_copy_sta_supp_op_classes(struct sta_info
*sta
,
152 const u8
*supp_op_classes
,
153 size_t supp_op_classes_len
);
155 u8
* hostapd_eid_fils_indic(struct hostapd_data
*hapd
, u8
*eid
, int hessid
);
156 void ieee802_11_finish_fils_auth(struct hostapd_data
*hapd
,
157 struct sta_info
*sta
, int success
,
158 struct wpabuf
*erp_resp
,
159 const u8
*msk
, size_t msk_len
);
160 u8
* owe_assoc_req_process(struct hostapd_data
*hapd
, struct sta_info
*sta
,
161 const u8
*owe_dh
, u8 owe_dh_len
,
162 u8
*owe_buf
, size_t owe_buf_len
, u16
*reason
);
163 void fils_hlp_timeout(void *eloop_ctx
, void *eloop_data
);
164 void fils_hlp_finish_assoc(struct hostapd_data
*hapd
, struct sta_info
*sta
);
165 void handle_auth_fils(struct hostapd_data
*hapd
, struct sta_info
*sta
,
166 const u8
*pos
, size_t len
, u16 auth_alg
,
167 u16 auth_transaction
, u16 status_code
,
168 void (*cb
)(struct hostapd_data
*hapd
,
169 struct sta_info
*sta
,
170 u16 resp
, struct wpabuf
*data
, int pub
));
172 size_t hostapd_eid_owe_trans_len(struct hostapd_data
*hapd
);
173 u8
* hostapd_eid_owe_trans(struct hostapd_data
*hapd
, u8
*eid
, size_t len
);
174 int ieee802_11_allowed_address(struct hostapd_data
*hapd
, const u8
*addr
,
175 const u8
*msg
, size_t len
, u32
*session_timeout
,
176 u32
*acct_interim_interval
,
177 struct vlan_description
*vlan_id
,
178 struct hostapd_sta_wpa_psk_short
**psk
,
179 char **identity
, char **radius_cui
,
182 int get_tx_parameters(struct sta_info
*sta
, int ap_max_chanwidth
,
183 int ap_seg1_idx
, int *bandwidth
, int *seg1_idx
);
185 void auth_sae_process_commit(void *eloop_ctx
, void *user_ctx
);
187 #endif /* IEEE802_11_H */