Dmitry Shmidt | 8d520ff | 2011-05-09 14:06:53 -0700 | [diff] [blame] | 1 | /* |
| 2 | * hostapd / IEEE 802.11 Management |
| 3 | * Copyright (c) 2002-2009, Jouni Malinen <j@w1.fi> |
| 4 | * |
Dmitry Shmidt | c5ec7f5 | 2012-03-06 16:33:24 -0800 | [diff] [blame] | 5 | * This software may be distributed under the terms of the BSD license. |
| 6 | * See README for more details. |
Dmitry Shmidt | 8d520ff | 2011-05-09 14:06:53 -0700 | [diff] [blame] | 7 | */ |
| 8 | |
| 9 | #ifndef IEEE802_11_H |
| 10 | #define IEEE802_11_H |
| 11 | |
| 12 | struct hostapd_iface; |
| 13 | struct hostapd_data; |
| 14 | struct sta_info; |
| 15 | struct hostapd_frame_info; |
| 16 | struct ieee80211_ht_capabilities; |
Dmitry Shmidt | 9d9e602 | 2015-04-23 10:34:55 -0700 | [diff] [blame] | 17 | struct ieee80211_vht_capabilities; |
Dmitry Shmidt | 7832adb | 2014-04-29 10:53:02 -0700 | [diff] [blame] | 18 | struct ieee80211_mgmt; |
Hai Shalom | fdcde76 | 2020-04-02 11:19:20 -0700 | [diff] [blame] | 19 | struct radius_sta; |
Hai Shalom | 81f62d8 | 2019-07-22 12:10:00 -0700 | [diff] [blame] | 20 | enum ieee80211_op_mode; |
Sunil Ravi | 036cec5 | 2023-03-29 11:35:17 -0700 | [diff] [blame] | 21 | enum oper_chan_width; |
Sunil Ravi | 2a14cf1 | 2023-11-21 00:54:38 +0000 | [diff] [blame] | 22 | struct ieee802_11_elems; |
| 23 | struct sae_pk; |
| 24 | struct sae_pt; |
| 25 | struct sae_password_entry; |
Sunil Ravi | b0ac25f | 2024-07-12 01:42:03 +0000 | [diff] [blame] | 26 | struct mld_info; |
Dmitry Shmidt | 8d520ff | 2011-05-09 14:06:53 -0700 | [diff] [blame] | 27 | |
Dmitry Shmidt | fb79edc | 2014-01-10 10:45:54 -0800 | [diff] [blame] | 28 | int ieee802_11_mgmt(struct hostapd_data *hapd, const u8 *buf, size_t len, |
| 29 | struct hostapd_frame_info *fi); |
Dmitry Shmidt | 8d520ff | 2011-05-09 14:06:53 -0700 | [diff] [blame] | 30 | void ieee802_11_mgmt_cb(struct hostapd_data *hapd, const u8 *buf, size_t len, |
| 31 | u16 stype, int ok); |
Dmitry Shmidt | 7832adb | 2014-04-29 10:53:02 -0700 | [diff] [blame] | 32 | void hostapd_2040_coex_action(struct hostapd_data *hapd, |
| 33 | const struct ieee80211_mgmt *mgmt, size_t len); |
Dmitry Shmidt | 8d520ff | 2011-05-09 14:06:53 -0700 | [diff] [blame] | 34 | #ifdef NEED_AP_MLME |
| 35 | int ieee802_11_get_mib(struct hostapd_data *hapd, char *buf, size_t buflen); |
| 36 | int ieee802_11_get_mib_sta(struct hostapd_data *hapd, struct sta_info *sta, |
| 37 | char *buf, size_t buflen); |
| 38 | #else /* NEED_AP_MLME */ |
| 39 | static inline int ieee802_11_get_mib(struct hostapd_data *hapd, char *buf, |
| 40 | size_t buflen) |
| 41 | { |
| 42 | return 0; |
| 43 | } |
| 44 | |
| 45 | static inline int ieee802_11_get_mib_sta(struct hostapd_data *hapd, |
| 46 | struct sta_info *sta, |
| 47 | char *buf, size_t buflen) |
| 48 | { |
| 49 | return 0; |
| 50 | } |
| 51 | #endif /* NEED_AP_MLME */ |
Dmitry Shmidt | 9d9e602 | 2015-04-23 10:34:55 -0700 | [diff] [blame] | 52 | u16 hostapd_own_capab_info(struct hostapd_data *hapd); |
Dmitry Shmidt | 7832adb | 2014-04-29 10:53:02 -0700 | [diff] [blame] | 53 | void ap_ht2040_timeout(void *eloop_data, void *user_data); |
Sunil Ravi | 77d572f | 2023-01-17 23:58:31 +0000 | [diff] [blame] | 54 | u8 * hostapd_eid_ext_capab(struct hostapd_data *hapd, u8 *eid, |
| 55 | bool mbssid_complete); |
Dmitry Shmidt | 051af73 | 2013-10-22 13:52:46 -0700 | [diff] [blame] | 56 | u8 * hostapd_eid_qos_map_set(struct hostapd_data *hapd, u8 *eid); |
Dmitry Shmidt | 8d520ff | 2011-05-09 14:06:53 -0700 | [diff] [blame] | 57 | u8 * hostapd_eid_supp_rates(struct hostapd_data *hapd, u8 *eid); |
| 58 | u8 * hostapd_eid_ext_supp_rates(struct hostapd_data *hapd, u8 *eid); |
Hai Shalom | fdcde76 | 2020-04-02 11:19:20 -0700 | [diff] [blame] | 59 | u8 * hostapd_eid_rm_enabled_capab(struct hostapd_data *hapd, u8 *eid, |
| 60 | size_t len); |
Dmitry Shmidt | 8d520ff | 2011-05-09 14:06:53 -0700 | [diff] [blame] | 61 | u8 * hostapd_eid_ht_capabilities(struct hostapd_data *hapd, u8 *eid); |
| 62 | u8 * hostapd_eid_ht_operation(struct hostapd_data *hapd, u8 *eid); |
Dmitry Shmidt | 7d17530 | 2016-09-06 13:11:34 -0700 | [diff] [blame] | 63 | u8 * hostapd_eid_vht_capabilities(struct hostapd_data *hapd, u8 *eid, u32 nsts); |
Dmitry Shmidt | 0494959 | 2012-07-19 12:16:46 -0700 | [diff] [blame] | 64 | u8 * hostapd_eid_vht_operation(struct hostapd_data *hapd, u8 *eid); |
Dmitry Shmidt | 2f74e36 | 2015-01-21 13:19:05 -0800 | [diff] [blame] | 65 | u8 * hostapd_eid_vendor_vht(struct hostapd_data *hapd, u8 *eid); |
Sunil Ravi | c0f5d41 | 2024-09-11 22:12:49 +0000 | [diff] [blame] | 66 | u8 * hostapd_eid_chsw_wrapper(struct hostapd_data *hapd, u8 *eid); |
Dmitry Shmidt | d7ff03d | 2015-12-04 14:49:35 -0800 | [diff] [blame] | 67 | u8 * hostapd_eid_txpower_envelope(struct hostapd_data *hapd, u8 *eid); |
Hai Shalom | 81f62d8 | 2019-07-22 12:10:00 -0700 | [diff] [blame] | 68 | u8 * hostapd_eid_he_capab(struct hostapd_data *hapd, u8 *eid, |
| 69 | enum ieee80211_op_mode opmode); |
Dmitry Shmidt | d2986c2 | 2017-10-23 14:22:09 -0700 | [diff] [blame] | 70 | u8 * hostapd_eid_he_operation(struct hostapd_data *hapd, u8 *eid); |
Hai Shalom | 74f70d4 | 2019-02-11 14:42:39 -0800 | [diff] [blame] | 71 | u8 * hostapd_eid_he_mu_edca_parameter_set(struct hostapd_data *hapd, u8 *eid); |
Hai Shalom | 81f62d8 | 2019-07-22 12:10:00 -0700 | [diff] [blame] | 72 | u8 * hostapd_eid_spatial_reuse(struct hostapd_data *hapd, u8 *eid); |
Hai Shalom | 4fbc08f | 2020-05-18 12:37:00 -0700 | [diff] [blame] | 73 | u8 * hostapd_eid_he_6ghz_band_cap(struct hostapd_data *hapd, u8 *eid); |
Dmitry Shmidt | d80a401 | 2015-11-05 16:35:40 -0800 | [diff] [blame] | 74 | |
Dmitry Shmidt | 8d520ff | 2011-05-09 14:06:53 -0700 | [diff] [blame] | 75 | int hostapd_ht_operation_update(struct hostapd_iface *iface); |
| 76 | void ieee802_11_send_sa_query_req(struct hostapd_data *hapd, |
| 77 | const u8 *addr, const u8 *trans_id); |
| 78 | void hostapd_get_ht_capab(struct hostapd_data *hapd, |
| 79 | struct ieee80211_ht_capabilities *ht_cap, |
| 80 | struct ieee80211_ht_capabilities *neg_ht_cap); |
Dmitry Shmidt | a54fa5f | 2013-01-15 13:53:35 -0800 | [diff] [blame] | 81 | void hostapd_get_vht_capab(struct hostapd_data *hapd, |
| 82 | struct ieee80211_vht_capabilities *vht_cap, |
| 83 | struct ieee80211_vht_capabilities *neg_vht_cap); |
Hai Shalom | 81f62d8 | 2019-07-22 12:10:00 -0700 | [diff] [blame] | 84 | void hostapd_get_he_capab(struct hostapd_data *hapd, |
| 85 | const struct ieee80211_he_capabilities *he_cap, |
| 86 | struct ieee80211_he_capabilities *neg_he_cap, |
| 87 | size_t he_capab_len); |
Sunil Ravi | a04bd25 | 2022-05-02 22:54:18 -0700 | [diff] [blame] | 88 | void hostapd_get_eht_capab(struct hostapd_data *hapd, |
| 89 | const struct ieee80211_eht_capabilities *src, |
| 90 | struct ieee80211_eht_capabilities *dest, |
| 91 | size_t len); |
Sunil Ravi | b0ac25f | 2024-07-12 01:42:03 +0000 | [diff] [blame] | 92 | u8 * hostapd_eid_eht_ml_beacon(struct hostapd_data *hapd, |
| 93 | struct mld_info *mld_info, |
| 94 | u8 *eid, bool include_mld_id); |
| 95 | u8 * hostapd_eid_eht_ml_assoc(struct hostapd_data *hapd, struct sta_info *info, |
| 96 | u8 *eid); |
| 97 | size_t hostapd_eid_eht_ml_beacon_len(struct hostapd_data *hapd, |
| 98 | struct mld_info *info, |
| 99 | bool include_mld_id); |
Sunil Ravi | 2a14cf1 | 2023-11-21 00:54:38 +0000 | [diff] [blame] | 100 | struct wpabuf * hostapd_ml_auth_resp(struct hostapd_data *hapd); |
| 101 | const u8 * hostapd_process_ml_auth(struct hostapd_data *hapd, |
| 102 | const struct ieee80211_mgmt *mgmt, |
| 103 | size_t len); |
| 104 | u16 hostapd_process_ml_assoc_req(struct hostapd_data *hapd, |
| 105 | struct ieee802_11_elems *elems, |
| 106 | struct sta_info *sta); |
Sunil Ravi | b0ac25f | 2024-07-12 01:42:03 +0000 | [diff] [blame] | 107 | int hostapd_process_ml_assoc_req_addr(struct hostapd_data *hapd, |
| 108 | const u8 *basic_mle, size_t basic_mle_len, |
| 109 | u8 *mld_addr); |
Dmitry Shmidt | d80a401 | 2015-11-05 16:35:40 -0800 | [diff] [blame] | 110 | int hostapd_get_aid(struct hostapd_data *hapd, struct sta_info *sta); |
Dmitry Shmidt | 8d520ff | 2011-05-09 14:06:53 -0700 | [diff] [blame] | 111 | u16 copy_sta_ht_capab(struct hostapd_data *hapd, struct sta_info *sta, |
Dmitry Shmidt | 9d9e602 | 2015-04-23 10:34:55 -0700 | [diff] [blame] | 112 | const u8 *ht_capab); |
Dmitry Shmidt | 2f74e36 | 2015-01-21 13:19:05 -0800 | [diff] [blame] | 113 | u16 copy_sta_vendor_vht(struct hostapd_data *hapd, struct sta_info *sta, |
| 114 | const u8 *ie, size_t len); |
| 115 | |
Sunil Ravi | 2a14cf1 | 2023-11-21 00:54:38 +0000 | [diff] [blame] | 116 | int update_ht_state(struct hostapd_data *hapd, struct sta_info *sta); |
Dmitry Shmidt | 7832adb | 2014-04-29 10:53:02 -0700 | [diff] [blame] | 117 | void ht40_intolerant_add(struct hostapd_iface *iface, struct sta_info *sta); |
| 118 | void ht40_intolerant_remove(struct hostapd_iface *iface, struct sta_info *sta); |
Dmitry Shmidt | 61d9df3 | 2012-08-29 16:22:06 -0700 | [diff] [blame] | 119 | u16 copy_sta_vht_capab(struct hostapd_data *hapd, struct sta_info *sta, |
Dmitry Shmidt | 9d9e602 | 2015-04-23 10:34:55 -0700 | [diff] [blame] | 120 | const u8 *vht_capab); |
Hai Shalom | 74f70d4 | 2019-02-11 14:42:39 -0800 | [diff] [blame] | 121 | u16 copy_sta_vht_oper(struct hostapd_data *hapd, struct sta_info *sta, |
| 122 | const u8 *vht_oper); |
Dmitry Shmidt | bd14a57 | 2014-02-18 10:33:49 -0800 | [diff] [blame] | 123 | u16 set_sta_vht_opmode(struct hostapd_data *hapd, struct sta_info *sta, |
| 124 | const u8 *vht_opmode); |
Hai Shalom | 81f62d8 | 2019-07-22 12:10:00 -0700 | [diff] [blame] | 125 | u16 copy_sta_he_capab(struct hostapd_data *hapd, struct sta_info *sta, |
| 126 | enum ieee80211_op_mode opmode, const u8 *he_capab, |
| 127 | size_t he_capab_len); |
Hai Shalom | 4fbc08f | 2020-05-18 12:37:00 -0700 | [diff] [blame] | 128 | u16 copy_sta_he_6ghz_capab(struct hostapd_data *hapd, struct sta_info *sta, |
| 129 | const u8 *he_6ghz_capab); |
Hai Shalom | fdcde76 | 2020-04-02 11:19:20 -0700 | [diff] [blame] | 130 | int hostapd_get_he_twt_responder(struct hostapd_data *hapd, |
| 131 | enum ieee80211_op_mode mode); |
Sunil Ravi | 7f76929 | 2024-07-23 22:21:32 +0000 | [diff] [blame] | 132 | bool hostapd_get_ht_vht_twt_responder(struct hostapd_data *hapd); |
Sunil Ravi | a04bd25 | 2022-05-02 22:54:18 -0700 | [diff] [blame] | 133 | u8 * hostapd_eid_cca(struct hostapd_data *hapd, u8 *eid); |
Dmitry Shmidt | 8d520ff | 2011-05-09 14:06:53 -0700 | [diff] [blame] | 134 | void hostapd_tx_status(struct hostapd_data *hapd, const u8 *addr, |
| 135 | const u8 *buf, size_t len, int ack); |
| 136 | void ieee802_11_rx_from_unknown(struct hostapd_data *hapd, const u8 *src, |
| 137 | int wds); |
Dmitry Shmidt | 1f69aa5 | 2012-01-24 16:10:04 -0800 | [diff] [blame] | 138 | u8 * hostapd_eid_assoc_comeback_time(struct hostapd_data *hapd, |
| 139 | struct sta_info *sta, u8 *eid); |
| 140 | void ieee802_11_sa_query_action(struct hostapd_data *hapd, |
Hai Shalom | 74f70d4 | 2019-02-11 14:42:39 -0800 | [diff] [blame] | 141 | const struct ieee80211_mgmt *mgmt, |
| 142 | size_t len); |
Dmitry Shmidt | 1f69aa5 | 2012-01-24 16:10:04 -0800 | [diff] [blame] | 143 | u8 * hostapd_eid_interworking(struct hostapd_data *hapd, u8 *eid); |
| 144 | u8 * hostapd_eid_adv_proto(struct hostapd_data *hapd, u8 *eid); |
| 145 | u8 * hostapd_eid_roaming_consortium(struct hostapd_data *hapd, u8 *eid); |
| 146 | u8 * hostapd_eid_time_adv(struct hostapd_data *hapd, u8 *eid); |
| 147 | u8 * hostapd_eid_time_zone(struct hostapd_data *hapd, u8 *eid); |
| 148 | int hostapd_update_time_adv(struct hostapd_data *hapd); |
| 149 | void hostapd_client_poll_ok(struct hostapd_data *hapd, const u8 *addr); |
Sunil Ravi | 7f76929 | 2024-07-23 22:21:32 +0000 | [diff] [blame] | 150 | u8 * hostapd_eid_bss_max_idle_period(struct hostapd_data *hapd, u8 *eid, |
| 151 | u16 value); |
Dmitry Shmidt | 8d520ff | 2011-05-09 14:06:53 -0700 | [diff] [blame] | 152 | |
Dmitry Shmidt | ff787d5 | 2015-01-12 13:01:47 -0800 | [diff] [blame] | 153 | int auth_sae_init_committed(struct hostapd_data *hapd, struct sta_info *sta); |
| 154 | #ifdef CONFIG_SAE |
| 155 | void sae_clear_retransmit_timer(struct hostapd_data *hapd, |
| 156 | struct sta_info *sta); |
Dmitry Shmidt | e466304 | 2016-04-04 10:07:49 -0700 | [diff] [blame] | 157 | void sae_accept_sta(struct hostapd_data *hapd, struct sta_info *sta); |
Dmitry Shmidt | ff787d5 | 2015-01-12 13:01:47 -0800 | [diff] [blame] | 158 | #else /* CONFIG_SAE */ |
| 159 | static inline void sae_clear_retransmit_timer(struct hostapd_data *hapd, |
| 160 | struct sta_info *sta) |
| 161 | { |
| 162 | } |
| 163 | #endif /* CONFIG_SAE */ |
| 164 | |
Dmitry Shmidt | 57c2d39 | 2016-02-23 13:40:19 -0800 | [diff] [blame] | 165 | #ifdef CONFIG_MBO |
| 166 | |
| 167 | u8 * hostapd_eid_mbo(struct hostapd_data *hapd, u8 *eid, size_t len); |
| 168 | |
| 169 | u8 hostapd_mbo_ie_len(struct hostapd_data *hapd); |
| 170 | |
Hai Shalom | 74f70d4 | 2019-02-11 14:42:39 -0800 | [diff] [blame] | 171 | u8 * hostapd_eid_mbo_rssi_assoc_rej(struct hostapd_data *hapd, u8 *eid, |
| 172 | size_t len, int delta); |
| 173 | |
Dmitry Shmidt | 57c2d39 | 2016-02-23 13:40:19 -0800 | [diff] [blame] | 174 | #else /* CONFIG_MBO */ |
| 175 | |
| 176 | static inline u8 * hostapd_eid_mbo(struct hostapd_data *hapd, u8 *eid, |
| 177 | size_t len) |
| 178 | { |
| 179 | return eid; |
| 180 | } |
| 181 | |
| 182 | static inline u8 hostapd_mbo_ie_len(struct hostapd_data *hapd) |
| 183 | { |
| 184 | return 0; |
| 185 | } |
| 186 | |
| 187 | #endif /* CONFIG_MBO */ |
| 188 | |
Dmitry Shmidt | 9c17526 | 2016-03-03 10:20:07 -0800 | [diff] [blame] | 189 | void ap_copy_sta_supp_op_classes(struct sta_info *sta, |
| 190 | const u8 *supp_op_classes, |
| 191 | size_t supp_op_classes_len); |
| 192 | |
Dmitry Shmidt | 9839ecd | 2016-11-07 11:05:47 -0800 | [diff] [blame] | 193 | u8 * hostapd_eid_fils_indic(struct hostapd_data *hapd, u8 *eid, int hessid); |
| 194 | void ieee802_11_finish_fils_auth(struct hostapd_data *hapd, |
| 195 | struct sta_info *sta, int success, |
| 196 | struct wpabuf *erp_resp, |
| 197 | const u8 *msk, size_t msk_len); |
Roshan Pius | 3a1667e | 2018-07-03 15:17:14 -0700 | [diff] [blame] | 198 | u8 * owe_assoc_req_process(struct hostapd_data *hapd, struct sta_info *sta, |
| 199 | const u8 *owe_dh, u8 owe_dh_len, |
Hai Shalom | fdcde76 | 2020-04-02 11:19:20 -0700 | [diff] [blame] | 200 | u8 *owe_buf, size_t owe_buf_len, u16 *status); |
Hai Shalom | 81f62d8 | 2019-07-22 12:10:00 -0700 | [diff] [blame] | 201 | u16 owe_process_rsn_ie(struct hostapd_data *hapd, struct sta_info *sta, |
| 202 | const u8 *rsn_ie, size_t rsn_ie_len, |
Sunil Ravi | 2a14cf1 | 2023-11-21 00:54:38 +0000 | [diff] [blame] | 203 | const u8 *owe_dh, size_t owe_dh_len, |
| 204 | const u8 *link_addr); |
Hai Shalom | 81f62d8 | 2019-07-22 12:10:00 -0700 | [diff] [blame] | 205 | u16 owe_validate_request(struct hostapd_data *hapd, const u8 *peer, |
| 206 | const u8 *rsn_ie, size_t rsn_ie_len, |
| 207 | const u8 *owe_dh, size_t owe_dh_len); |
Dmitry Shmidt | ebd93af | 2017-02-21 13:40:44 -0800 | [diff] [blame] | 208 | void fils_hlp_timeout(void *eloop_ctx, void *eloop_data); |
| 209 | void fils_hlp_finish_assoc(struct hostapd_data *hapd, struct sta_info *sta); |
Dmitry Shmidt | d2986c2 | 2017-10-23 14:22:09 -0700 | [diff] [blame] | 210 | void handle_auth_fils(struct hostapd_data *hapd, struct sta_info *sta, |
| 211 | const u8 *pos, size_t len, u16 auth_alg, |
| 212 | u16 auth_transaction, u16 status_code, |
| 213 | void (*cb)(struct hostapd_data *hapd, |
| 214 | struct sta_info *sta, |
| 215 | u16 resp, struct wpabuf *data, int pub)); |
Dmitry Shmidt | 9839ecd | 2016-11-07 11:05:47 -0800 | [diff] [blame] | 216 | |
Roshan Pius | 3a1667e | 2018-07-03 15:17:14 -0700 | [diff] [blame] | 217 | size_t hostapd_eid_owe_trans_len(struct hostapd_data *hapd); |
| 218 | u8 * hostapd_eid_owe_trans(struct hostapd_data *hapd, u8 *eid, size_t len); |
Hai Shalom | fdcde76 | 2020-04-02 11:19:20 -0700 | [diff] [blame] | 219 | |
| 220 | size_t hostapd_eid_dpp_cc_len(struct hostapd_data *hapd); |
| 221 | u8 * hostapd_eid_dpp_cc(struct hostapd_data *hapd, u8 *eid, size_t len); |
Roshan Pius | 3a1667e | 2018-07-03 15:17:14 -0700 | [diff] [blame] | 222 | |
Hai Shalom | 74f70d4 | 2019-02-11 14:42:39 -0800 | [diff] [blame] | 223 | int get_tx_parameters(struct sta_info *sta, int ap_max_chanwidth, |
| 224 | int ap_seg1_idx, int *bandwidth, int *seg1_idx); |
| 225 | |
Hai Shalom | 021b0b5 | 2019-04-10 11:17:58 -0700 | [diff] [blame] | 226 | void auth_sae_process_commit(void *eloop_ctx, void *user_ctx); |
Hai Shalom | c356592 | 2019-10-28 11:58:20 -0700 | [diff] [blame] | 227 | u8 * hostapd_eid_rsnxe(struct hostapd_data *hapd, u8 *eid, size_t len); |
Sunil Ravi | a04bd25 | 2022-05-02 22:54:18 -0700 | [diff] [blame] | 228 | u16 check_ext_capab(struct hostapd_data *hapd, struct sta_info *sta, |
| 229 | const u8 *ext_capab_ie, size_t ext_capab_ie_len); |
Sunil Ravi | 7f76929 | 2024-07-23 22:21:32 +0000 | [diff] [blame] | 230 | size_t hostapd_eid_rnr_len(struct hostapd_data *hapd, u32 type, |
| 231 | bool include_mld_params); |
| 232 | u8 * hostapd_eid_rnr(struct hostapd_data *hapd, u8 *eid, u32 type, |
| 233 | bool include_mld_params); |
Sunil Ravi | a04bd25 | 2022-05-02 22:54:18 -0700 | [diff] [blame] | 234 | int ieee802_11_set_radius_info(struct hostapd_data *hapd, struct sta_info *sta, |
| 235 | int res, struct radius_sta *info); |
| 236 | size_t hostapd_eid_eht_capab_len(struct hostapd_data *hapd, |
| 237 | enum ieee80211_op_mode opmode); |
| 238 | u8 * hostapd_eid_eht_capab(struct hostapd_data *hapd, u8 *eid, |
| 239 | enum ieee80211_op_mode opmode); |
| 240 | u8 * hostapd_eid_eht_operation(struct hostapd_data *hapd, u8 *eid); |
| 241 | u16 copy_sta_eht_capab(struct hostapd_data *hapd, struct sta_info *sta, |
| 242 | enum ieee80211_op_mode opmode, |
| 243 | const u8 *he_capab, size_t he_capab_len, |
| 244 | const u8 *eht_capab, size_t eht_capab_len); |
Sunil Ravi | 77d572f | 2023-01-17 23:58:31 +0000 | [diff] [blame] | 245 | size_t hostapd_eid_mbssid_len(struct hostapd_data *hapd, u32 frame_type, |
| 246 | u8 *elem_count, const u8 *known_bss, |
Sunil Ravi | 640215c | 2023-06-28 23:08:09 +0000 | [diff] [blame] | 247 | size_t known_bss_len, size_t *rnr_len); |
Sunil Ravi | 77d572f | 2023-01-17 23:58:31 +0000 | [diff] [blame] | 248 | u8 * hostapd_eid_mbssid(struct hostapd_data *hapd, u8 *eid, u8 *end, |
| 249 | unsigned int frame_stype, u8 elem_count, |
| 250 | u8 **elem_offset, |
Sunil Ravi | 640215c | 2023-06-28 23:08:09 +0000 | [diff] [blame] | 251 | const u8 *known_bss, size_t known_bss_len, u8 *rnr_eid, |
| 252 | u8 *rnr_count, u8 **rnr_offset, size_t rnr_len); |
Sunil Ravi | 2a14cf1 | 2023-11-21 00:54:38 +0000 | [diff] [blame] | 253 | bool hostapd_is_mld_ap(struct hostapd_data *hapd); |
| 254 | const char * sae_get_password(struct hostapd_data *hapd, |
| 255 | struct sta_info *sta, const char *rx_id, |
| 256 | struct sae_password_entry **pw_entry, |
| 257 | struct sae_pt **s_pt, const struct sae_pk **s_pk); |
Sunil Ravi | b0ac25f | 2024-07-12 01:42:03 +0000 | [diff] [blame] | 258 | struct sta_info * hostapd_ml_get_assoc_sta(struct hostapd_data *hapd, |
| 259 | struct sta_info *sta, |
| 260 | struct hostapd_data **assoc_hapd); |
| 261 | int hostapd_process_assoc_ml_info(struct hostapd_data *hapd, |
| 262 | struct sta_info *sta, |
| 263 | const u8 *ies, size_t ies_len, |
| 264 | bool reassoc, int tx_link_status, |
| 265 | bool offload); |
Hai Shalom | 021b0b5 | 2019-04-10 11:17:58 -0700 | [diff] [blame] | 266 | |
Dmitry Shmidt | 8d520ff | 2011-05-09 14:06:53 -0700 | [diff] [blame] | 267 | #endif /* IEEE802_11_H */ |