/src/hostap/src/ap/ap_config.h
Line | Count | Source |
1 | | /* |
2 | | * hostapd / Configuration definitions and helpers functions |
3 | | * Copyright (c) 2003-2024, Jouni Malinen <j@w1.fi> |
4 | | * |
5 | | * This software may be distributed under the terms of the BSD license. |
6 | | * See README for more details. |
7 | | */ |
8 | | |
9 | | #ifndef HOSTAPD_CONFIG_H |
10 | | #define HOSTAPD_CONFIG_H |
11 | | |
12 | | #include "common/defs.h" |
13 | | #include "utils/list.h" |
14 | | #include "ip_addr.h" |
15 | | #include "common/wpa_common.h" |
16 | | #include "common/ieee802_11_defs.h" |
17 | | #include "common/ieee802_11_common.h" |
18 | | #include "crypto/sha256.h" |
19 | | #include "wps/wps.h" |
20 | | #include "fst/fst.h" |
21 | | #include "vlan.h" |
22 | | |
23 | | enum macaddr_acl { |
24 | | ACCEPT_UNLESS_DENIED = 0, |
25 | | DENY_UNLESS_ACCEPTED = 1, |
26 | | USE_EXTERNAL_RADIUS_AUTH = 2 |
27 | | }; |
28 | | |
29 | | /** |
30 | | * mesh_conf - local MBSS state and settings |
31 | | */ |
32 | | struct mesh_conf { |
33 | | u8 meshid[32]; |
34 | | u8 meshid_len; |
35 | | /* Active Path Selection Protocol Identifier */ |
36 | | u8 mesh_pp_id; |
37 | | /* Active Path Selection Metric Identifier */ |
38 | | u8 mesh_pm_id; |
39 | | /* Congestion Control Mode Identifier */ |
40 | | u8 mesh_cc_id; |
41 | | /* Synchronization Protocol Identifier */ |
42 | | u8 mesh_sp_id; |
43 | | /* Authentication Protocol Identifier */ |
44 | | u8 mesh_auth_id; |
45 | | u8 *rsn_ie; |
46 | | int rsn_ie_len; |
47 | | #define MESH_CONF_SEC_NONE BIT(0) |
48 | | #define MESH_CONF_SEC_AUTH BIT(1) |
49 | | #define MESH_CONF_SEC_AMPE BIT(2) |
50 | | unsigned int security; |
51 | | enum mfp_options ieee80211w; |
52 | | int ocv; |
53 | | unsigned int pairwise_cipher; |
54 | | unsigned int group_cipher; |
55 | | unsigned int mgmt_group_cipher; |
56 | | int dot11MeshMaxRetries; |
57 | | int dot11MeshRetryTimeout; /* msec */ |
58 | | int dot11MeshConfirmTimeout; /* msec */ |
59 | | int dot11MeshHoldingTimeout; /* msec */ |
60 | | int mesh_fwding; |
61 | | }; |
62 | | |
63 | 4.41k | #define MAX_STA_COUNT 2007 |
64 | 0 | #define MAX_VLAN_ID 4094 |
65 | | |
66 | | typedef u8 macaddr[ETH_ALEN]; |
67 | | |
68 | | struct mac_acl_entry { |
69 | | macaddr addr; |
70 | | struct vlan_description vlan_id; |
71 | | }; |
72 | | |
73 | | struct hostapd_radius_servers; |
74 | | struct ft_remote_r0kh; |
75 | | struct ft_remote_r1kh; |
76 | | |
77 | | #ifdef CONFIG_WEP |
78 | | #define NUM_WEP_KEYS 4 |
79 | | struct hostapd_wep_keys { |
80 | | u8 idx; |
81 | | u8 *key[NUM_WEP_KEYS]; |
82 | | size_t len[NUM_WEP_KEYS]; |
83 | | int keys_set; |
84 | | size_t default_len; /* key length used for dynamic key generation */ |
85 | | }; |
86 | | #endif /* CONFIG_WEP */ |
87 | | |
88 | | typedef enum hostap_security_policy { |
89 | | SECURITY_PLAINTEXT = 0, |
90 | | #ifdef CONFIG_WEP |
91 | | SECURITY_STATIC_WEP = 1, |
92 | | #endif /* CONFIG_WEP */ |
93 | | SECURITY_IEEE_802_1X = 2, |
94 | | SECURITY_WPA_PSK = 3, |
95 | | SECURITY_WPA = 4, |
96 | | } secpolicy; |
97 | | |
98 | | struct hostapd_ssid { |
99 | | u8 ssid[SSID_MAX_LEN]; |
100 | | size_t ssid_len; |
101 | | u32 short_ssid; |
102 | | unsigned int ssid_set:1; |
103 | | unsigned int utf8_ssid:1; |
104 | | unsigned int wpa_passphrase_set:1; |
105 | | unsigned int wpa_psk_set:1; |
106 | | |
107 | | char vlan[IFNAMSIZ + 1]; |
108 | | secpolicy security_policy; |
109 | | |
110 | | struct hostapd_wpa_psk *wpa_psk; |
111 | | char *wpa_passphrase; |
112 | | char *wpa_psk_file; |
113 | | struct sae_pt *pt; |
114 | | |
115 | | #ifdef CONFIG_WEP |
116 | | struct hostapd_wep_keys wep; |
117 | | #endif /* CONFIG_WEP */ |
118 | | |
119 | 0 | #define DYNAMIC_VLAN_DISABLED 0 |
120 | | #define DYNAMIC_VLAN_OPTIONAL 1 |
121 | 0 | #define DYNAMIC_VLAN_REQUIRED 2 |
122 | | int dynamic_vlan; |
123 | | #define DYNAMIC_VLAN_NAMING_WITHOUT_DEVICE 0 |
124 | | #define DYNAMIC_VLAN_NAMING_WITH_DEVICE 1 |
125 | | #define DYNAMIC_VLAN_NAMING_END 2 |
126 | | int vlan_naming; |
127 | | int per_sta_vif; |
128 | | #ifdef CONFIG_FULL_DYNAMIC_VLAN |
129 | | char *vlan_tagged_interface; |
130 | | #endif /* CONFIG_FULL_DYNAMIC_VLAN */ |
131 | | }; |
132 | | |
133 | | |
134 | 0 | #define VLAN_ID_WILDCARD -1 |
135 | | |
136 | | struct hostapd_vlan { |
137 | | struct hostapd_vlan *next; |
138 | | int vlan_id; /* VLAN ID or -1 (VLAN_ID_WILDCARD) for wildcard entry */ |
139 | | struct vlan_description vlan_desc; |
140 | | char ifname[IFNAMSIZ + 1]; |
141 | | char bridge[IFNAMSIZ + 1]; |
142 | | int configured; |
143 | | int dynamic_vlan; |
144 | | #ifdef CONFIG_FULL_DYNAMIC_VLAN |
145 | | |
146 | | #define DVLAN_CLEAN_WLAN_PORT 0x8 |
147 | | int clean; |
148 | | #endif /* CONFIG_FULL_DYNAMIC_VLAN */ |
149 | | }; |
150 | | |
151 | 1.69k | #define PMK_LEN 32 |
152 | | #define KEYID_LEN 32 |
153 | 0 | #define MIN_PASSPHRASE_LEN 8 |
154 | 0 | #define MAX_PASSPHRASE_LEN 63 |
155 | | struct hostapd_sta_wpa_psk_short { |
156 | | struct hostapd_sta_wpa_psk_short *next; |
157 | | unsigned int is_passphrase:1; |
158 | | u8 psk[PMK_LEN]; |
159 | | char passphrase[MAX_PASSPHRASE_LEN + 1]; |
160 | | int ref; /* (number of references held) - 1 */ |
161 | | }; |
162 | | |
163 | | struct hostapd_wpa_psk { |
164 | | struct hostapd_wpa_psk *next; |
165 | | int group; |
166 | | char keyid[KEYID_LEN]; |
167 | | int wps; |
168 | | u8 psk[PMK_LEN]; |
169 | | u8 addr[ETH_ALEN]; |
170 | | u8 p2p_dev_addr[ETH_ALEN]; |
171 | | int vlan_id; |
172 | | }; |
173 | | |
174 | | struct hostapd_eap_user { |
175 | | struct hostapd_eap_user *next; |
176 | | u8 *identity; |
177 | | size_t identity_len; |
178 | | struct { |
179 | | int vendor; |
180 | | u32 method; |
181 | | } methods[EAP_MAX_METHODS]; |
182 | | u8 *password; |
183 | | size_t password_len; |
184 | | u8 *salt; |
185 | | size_t salt_len; /* non-zero when password is salted */ |
186 | | int phase2; |
187 | | int force_version; |
188 | | unsigned int wildcard_prefix:1; |
189 | | unsigned int password_hash:1; /* whether password is hashed with |
190 | | * nt_password_hash() */ |
191 | | unsigned int macacl:1; |
192 | | int ttls_auth; /* EAP_TTLS_AUTH_* bitfield */ |
193 | | struct hostapd_radius_attr *accept_attr; |
194 | | u32 t_c_timestamp; |
195 | | }; |
196 | | |
197 | | struct hostapd_radius_attr { |
198 | | u8 type; |
199 | | struct wpabuf *val; |
200 | | struct hostapd_radius_attr *next; |
201 | | }; |
202 | | |
203 | | |
204 | 0 | #define NUM_TX_QUEUES 4 |
205 | | #define MAX_ROAMING_CONSORTIUM_LEN 15 |
206 | | |
207 | | struct hostapd_roaming_consortium { |
208 | | u8 len; |
209 | | u8 oi[MAX_ROAMING_CONSORTIUM_LEN]; |
210 | | }; |
211 | | |
212 | | struct hostapd_lang_string { |
213 | | u8 lang[3]; |
214 | | u8 name_len; |
215 | | u8 name[252]; |
216 | | }; |
217 | | |
218 | | struct hostapd_venue_url { |
219 | | u8 venue_number; |
220 | | u8 url_len; |
221 | | u8 url[254]; |
222 | | }; |
223 | | |
224 | 0 | #define MAX_NAI_REALMS 10 |
225 | | #define MAX_NAI_REALMLEN 255 |
226 | | #define MAX_NAI_EAP_METHODS 5 |
227 | | #define MAX_NAI_AUTH_TYPES 4 |
228 | | struct hostapd_nai_realm_data { |
229 | | u8 encoding; |
230 | | char realm_buf[MAX_NAI_REALMLEN + 1]; |
231 | | char *realm[MAX_NAI_REALMS]; |
232 | | u8 eap_method_count; |
233 | | struct hostapd_nai_realm_eap { |
234 | | u8 eap_method; |
235 | | u8 num_auths; |
236 | | u8 auth_id[MAX_NAI_AUTH_TYPES]; |
237 | | u8 auth_val[MAX_NAI_AUTH_TYPES]; |
238 | | } eap_method[MAX_NAI_EAP_METHODS]; |
239 | | }; |
240 | | |
241 | | struct anqp_element { |
242 | | struct dl_list list; |
243 | | u16 infoid; |
244 | | struct wpabuf *payload; |
245 | | }; |
246 | | |
247 | | struct fils_realm { |
248 | | struct dl_list list; |
249 | | u8 hash[2]; |
250 | | char realm[]; |
251 | | }; |
252 | | |
253 | | struct sae_password_entry { |
254 | | struct sae_password_entry *next; |
255 | | char *password; |
256 | | char *identifier; |
257 | | u8 peer_addr[ETH_ALEN]; |
258 | | int vlan_id; |
259 | | struct sae_pt *pt; |
260 | | struct sae_pk *pk; |
261 | | u8 *success_mac; |
262 | | unsigned int num_success_mac, next_success_mac; |
263 | | u8 *fail_mac; |
264 | | unsigned int num_fail_mac, next_fail_mac; |
265 | | }; |
266 | | |
267 | | struct dpp_controller_conf { |
268 | | struct dpp_controller_conf *next; |
269 | | u8 pkhash[SHA256_MAC_LEN]; |
270 | | struct hostapd_ip_addr ipaddr; |
271 | | }; |
272 | | |
273 | | struct airtime_sta_weight { |
274 | | struct airtime_sta_weight *next; |
275 | | unsigned int weight; |
276 | | u8 addr[ETH_ALEN]; |
277 | | }; |
278 | | |
279 | 0 | #define EXT_CAPA_MAX_LEN 15 |
280 | | |
281 | | /** |
282 | | * struct hostapd_bss_config - Per-BSS configuration |
283 | | */ |
284 | | struct hostapd_bss_config { |
285 | | char iface[IFNAMSIZ + 1]; |
286 | | char bridge[IFNAMSIZ + 1]; |
287 | | char vlan_bridge[IFNAMSIZ + 1]; |
288 | | char wds_bridge[IFNAMSIZ + 1]; |
289 | | int bridge_hairpin; /* hairpin_mode on bridge members */ |
290 | | |
291 | | enum hostapd_logger_level logger_syslog_level, logger_stdout_level; |
292 | | |
293 | | unsigned int logger_syslog; /* module bitfield */ |
294 | | unsigned int logger_stdout; /* module bitfield */ |
295 | | |
296 | | int max_num_sta; /* maximum number of STAs in station table */ |
297 | | |
298 | | int dtim_period; |
299 | | unsigned int bss_load_update_period; |
300 | | unsigned int chan_util_avg_period; |
301 | | |
302 | | int ieee802_1x; /* use IEEE 802.1X */ |
303 | | int eapol_version; |
304 | | int eap_server; /* Use internal EAP server instead of external |
305 | | * RADIUS server */ |
306 | | struct hostapd_eap_user *eap_user; |
307 | | char *eap_user_sqlite; |
308 | | char *eap_sim_db; |
309 | | unsigned int eap_sim_db_timeout; |
310 | | int eap_server_erp; /* Whether ERP is enabled on internal EAP server */ |
311 | | struct hostapd_ip_addr own_ip_addr; |
312 | | char *nas_identifier; |
313 | | struct hostapd_radius_servers *radius; |
314 | | int radius_require_message_authenticator; |
315 | | int acct_interim_interval; |
316 | | int radius_request_cui; |
317 | | struct hostapd_radius_attr *radius_auth_req_attr; |
318 | | struct hostapd_radius_attr *radius_acct_req_attr; |
319 | | char *radius_req_attr_sqlite; |
320 | | int radius_das_port; |
321 | | unsigned int radius_das_time_window; |
322 | | int radius_das_require_event_timestamp; |
323 | | int radius_das_require_message_authenticator; |
324 | | struct hostapd_ip_addr radius_das_client_addr; |
325 | | u8 *radius_das_shared_secret; |
326 | | size_t radius_das_shared_secret_len; |
327 | | |
328 | | struct hostapd_ssid ssid; |
329 | | |
330 | | char *eap_req_id_text; /* optional displayable message sent with |
331 | | * EAP Request-Identity */ |
332 | | size_t eap_req_id_text_len; |
333 | | int eapol_key_index_workaround; |
334 | | |
335 | | #ifdef CONFIG_WEP |
336 | | size_t default_wep_key_len; |
337 | | int individual_wep_key_len; |
338 | | int wep_rekeying_period; |
339 | | int broadcast_key_idx_min, broadcast_key_idx_max; |
340 | | #endif /* CONFIG_WEP */ |
341 | | int eap_reauth_period; |
342 | | int erp_send_reauth_start; |
343 | | char *erp_domain; |
344 | | #ifdef CONFIG_TESTING_OPTIONS |
345 | | bool eap_skip_prot_success; |
346 | | #endif /* CONFIG_TESTING_OPTIONS */ |
347 | | |
348 | | enum macaddr_acl macaddr_acl; |
349 | | struct mac_acl_entry *accept_mac; |
350 | | int num_accept_mac; |
351 | | struct mac_acl_entry *deny_mac; |
352 | | int num_deny_mac; |
353 | | int wds_sta; |
354 | | int isolate; |
355 | | int start_disabled; |
356 | | |
357 | | int auth_algs; /* bitfield of allowed IEEE 802.11 authentication |
358 | | * algorithms, WPA_AUTH_ALG_{OPEN,SHARED,LEAP} */ |
359 | | |
360 | | int wpa; /* bitfield of WPA_PROTO_WPA, WPA_PROTO_RSN */ |
361 | | int extended_key_id; |
362 | | int wpa_key_mgmt; |
363 | | int rsn_override_key_mgmt; |
364 | | int rsn_override_key_mgmt_2; |
365 | | enum mfp_options ieee80211w; |
366 | | enum mfp_options rsn_override_mfp; |
367 | | enum mfp_options rsn_override_mfp_2; |
368 | | int group_mgmt_cipher; |
369 | | int beacon_prot; |
370 | | /* dot11AssociationSAQueryMaximumTimeout (in TUs) */ |
371 | | unsigned int assoc_sa_query_max_timeout; |
372 | | /* dot11AssociationSAQueryRetryTimeout (in TUs) */ |
373 | | int assoc_sa_query_retry_timeout; |
374 | | #ifdef CONFIG_OCV |
375 | | int ocv; /* Operating Channel Validation */ |
376 | | #endif /* CONFIG_OCV */ |
377 | | enum { |
378 | | PSK_RADIUS_IGNORED = 0, |
379 | | PSK_RADIUS_ACCEPTED = 1, |
380 | | PSK_RADIUS_REQUIRED = 2, |
381 | | PSK_RADIUS_DURING_4WAY_HS = 3, |
382 | | } wpa_psk_radius; |
383 | | int wpa_pairwise; |
384 | | int group_cipher; /* wpa_group value override from configuation */ |
385 | | int wpa_group; |
386 | | int wpa_group_rekey; |
387 | | int wpa_group_rekey_set; |
388 | | int wpa_strict_rekey; |
389 | | int wpa_gmk_rekey; |
390 | | int wpa_ptk_rekey; |
391 | | enum ptk0_rekey_handling wpa_deny_ptk0_rekey; |
392 | | u32 wpa_group_update_count; |
393 | | u32 wpa_pairwise_update_count; |
394 | | int wpa_disable_eapol_key_retries; |
395 | | int rsn_pairwise; |
396 | | int rsn_override_pairwise; |
397 | | int rsn_override_pairwise_2; |
398 | | int rsn_preauth; |
399 | | char *rsn_preauth_interfaces; |
400 | | |
401 | | int rsn_override_omit_rsnxe; |
402 | | |
403 | | #ifdef CONFIG_IEEE80211R_AP |
404 | | /* IEEE 802.11r - Fast BSS Transition */ |
405 | | u8 mobility_domain[MOBILITY_DOMAIN_ID_LEN]; |
406 | | u8 r1_key_holder[FT_R1KH_ID_LEN]; |
407 | | u32 r0_key_lifetime; /* PMK-R0 lifetime seconds */ |
408 | | int rkh_pos_timeout; |
409 | | int rkh_neg_timeout; |
410 | | int rkh_pull_timeout; /* ms */ |
411 | | int rkh_pull_retries; |
412 | | u32 reassociation_deadline; |
413 | | struct ft_remote_r0kh *r0kh_list; |
414 | | struct ft_remote_r1kh *r1kh_list; |
415 | | int pmk_r1_push; |
416 | | int ft_over_ds; |
417 | | int ft_psk_generate_local; |
418 | | int r1_max_key_lifetime; |
419 | | char *rxkh_file; |
420 | | #endif /* CONFIG_IEEE80211R_AP */ |
421 | | |
422 | | char *ctrl_interface; /* directory for UNIX domain sockets */ |
423 | | #ifndef CONFIG_NATIVE_WINDOWS |
424 | | gid_t ctrl_interface_gid; |
425 | | #endif /* CONFIG_NATIVE_WINDOWS */ |
426 | | int ctrl_interface_gid_set; |
427 | | |
428 | | char *ca_cert; |
429 | | char *server_cert; |
430 | | char *server_cert2; |
431 | | char *private_key; |
432 | | char *private_key2; |
433 | | char *private_key_passwd; |
434 | | char *private_key_passwd2; |
435 | | char *check_cert_subject; |
436 | | int check_crl; |
437 | | int check_crl_strict; |
438 | | unsigned int crl_reload_interval; |
439 | | unsigned int tls_session_lifetime; |
440 | | unsigned int tls_flags; |
441 | | unsigned int max_auth_rounds; |
442 | | unsigned int max_auth_rounds_short; |
443 | | char *ocsp_stapling_response; |
444 | | char *ocsp_stapling_response_multi; |
445 | | char *dh_file; |
446 | | char *openssl_ciphers; |
447 | | char *openssl_ecdh_curves; |
448 | | u8 *pac_opaque_encr_key; |
449 | | u8 *eap_fast_a_id; |
450 | | size_t eap_fast_a_id_len; |
451 | | char *eap_fast_a_id_info; |
452 | | int eap_fast_prov; |
453 | | int pac_key_lifetime; |
454 | | int pac_key_refresh_time; |
455 | | int eap_teap_auth; |
456 | | int eap_teap_separate_result; |
457 | | int eap_teap_id; |
458 | | int eap_teap_method_sequence; |
459 | | int eap_sim_aka_result_ind; |
460 | | int eap_sim_id; |
461 | | char *imsi_privacy_key; |
462 | | int eap_sim_aka_fast_reauth_limit; |
463 | | int tnc; |
464 | | int fragment_size; |
465 | | u16 pwd_group; |
466 | | |
467 | | char *radius_server_clients; |
468 | | int radius_server_auth_port; |
469 | | int radius_server_acct_port; |
470 | | int radius_server_acct_log; |
471 | | int radius_server_ipv6; |
472 | | |
473 | | int use_pae_group_addr; /* Whether to send EAPOL frames to PAE group |
474 | | * address instead of individual address |
475 | | * (for driver_wired.c). |
476 | | */ |
477 | | |
478 | | int ap_max_inactivity; |
479 | | int bss_max_idle; |
480 | | int max_acceptable_idle_period; |
481 | | bool no_disconnect_on_group_keyerror; |
482 | | int ignore_broadcast_ssid; |
483 | | int no_probe_resp_if_max_sta; |
484 | | |
485 | | int wmm_enabled; |
486 | | int wmm_uapsd; |
487 | | |
488 | | struct hostapd_vlan *vlan; |
489 | | |
490 | | macaddr bssid; |
491 | | |
492 | | /* |
493 | | * Maximum listen interval that STAs can use when associating with this |
494 | | * BSS. If a STA tries to use larger value, the association will be |
495 | | * denied with status code 51. |
496 | | */ |
497 | | u16 max_listen_interval; |
498 | | |
499 | | int disable_pmksa_caching; |
500 | | int okc; /* Opportunistic Key Caching */ |
501 | | |
502 | | int wps_state; |
503 | | #ifdef CONFIG_WPS |
504 | | int wps_independent; |
505 | | int ap_setup_locked; |
506 | | u8 uuid[16]; |
507 | | char *wps_pin_requests; |
508 | | char *device_name; |
509 | | char *manufacturer; |
510 | | char *model_name; |
511 | | char *model_number; |
512 | | char *serial_number; |
513 | | u8 device_type[WPS_DEV_TYPE_LEN]; |
514 | | char *config_methods; |
515 | | u8 os_version[4]; |
516 | | char *ap_pin; |
517 | | int skip_cred_build; |
518 | | u8 *extra_cred; |
519 | | size_t extra_cred_len; |
520 | | int wps_cred_processing; |
521 | | int wps_cred_add_sae; |
522 | | int force_per_enrollee_psk; |
523 | | u8 *ap_settings; |
524 | | size_t ap_settings_len; |
525 | | struct hostapd_ssid multi_ap_backhaul_ssid; |
526 | | char *upnp_iface; |
527 | | char *friendly_name; |
528 | | char *manufacturer_url; |
529 | | char *model_description; |
530 | | char *model_url; |
531 | | char *upc; |
532 | | struct wpabuf *wps_vendor_ext[MAX_WPS_VENDOR_EXTENSIONS]; |
533 | | struct wpabuf *wps_application_ext; |
534 | | int wps_nfc_pw_from_config; |
535 | | int wps_nfc_dev_pw_id; |
536 | | struct wpabuf *wps_nfc_dh_pubkey; |
537 | | struct wpabuf *wps_nfc_dh_privkey; |
538 | | struct wpabuf *wps_nfc_dev_pw; |
539 | | #endif /* CONFIG_WPS */ |
540 | | int pbc_in_m1; |
541 | | char *server_id; |
542 | | |
543 | | #define P2P_ENABLED BIT(0) |
544 | | #define P2P_GROUP_OWNER BIT(1) |
545 | | #define P2P_GROUP_FORMATION BIT(2) |
546 | | #define P2P_MANAGE BIT(3) |
547 | | #define P2P_ALLOW_CROSS_CONNECTION BIT(4) |
548 | | int p2p; |
549 | | #ifdef CONFIG_P2P |
550 | | u8 ip_addr_go[4]; |
551 | | u8 ip_addr_mask[4]; |
552 | | u8 ip_addr_start[4]; |
553 | | u8 ip_addr_end[4]; |
554 | | #endif /* CONFIG_P2P */ |
555 | | |
556 | | int disassoc_low_ack; |
557 | | int skip_inactivity_poll; |
558 | | |
559 | 0 | #define TDLS_PROHIBIT BIT(0) |
560 | 0 | #define TDLS_PROHIBIT_CHAN_SWITCH BIT(1) |
561 | | int tdls; |
562 | | bool disable_11n; |
563 | | bool disable_11ac; |
564 | | bool disable_11ax; |
565 | | bool disable_11be; |
566 | | |
567 | | /* IEEE 802.11v */ |
568 | | int time_advertisement; |
569 | | char *time_zone; |
570 | | int wnm_sleep_mode; |
571 | | int wnm_sleep_mode_no_keys; |
572 | | int bss_transition; |
573 | | |
574 | | /* IEEE 802.11u - Interworking */ |
575 | | int interworking; |
576 | | int access_network_type; |
577 | | int internet; |
578 | | int asra; |
579 | | int esr; |
580 | | int uesa; |
581 | | int venue_info_set; |
582 | | u8 venue_group; |
583 | | u8 venue_type; |
584 | | u8 hessid[ETH_ALEN]; |
585 | | |
586 | | /* IEEE 802.11u - Roaming Consortium list */ |
587 | | unsigned int roaming_consortium_count; |
588 | | struct hostapd_roaming_consortium *roaming_consortium; |
589 | | |
590 | | /* IEEE 802.11u - Venue Name duples */ |
591 | | unsigned int venue_name_count; |
592 | | struct hostapd_lang_string *venue_name; |
593 | | |
594 | | /* Venue URL duples */ |
595 | | unsigned int venue_url_count; |
596 | | struct hostapd_venue_url *venue_url; |
597 | | |
598 | | /* IEEE 802.11u - Network Authentication Type */ |
599 | | u8 *network_auth_type; |
600 | | size_t network_auth_type_len; |
601 | | |
602 | | /* IEEE 802.11u - IP Address Type Availability */ |
603 | | u8 ipaddr_type_availability; |
604 | | u8 ipaddr_type_configured; |
605 | | |
606 | | /* IEEE 802.11u - 3GPP Cellular Network */ |
607 | | u8 *anqp_3gpp_cell_net; |
608 | | size_t anqp_3gpp_cell_net_len; |
609 | | |
610 | | /* IEEE 802.11u - Domain Name */ |
611 | | u8 *domain_name; |
612 | | size_t domain_name_len; |
613 | | |
614 | | unsigned int nai_realm_count; |
615 | | struct hostapd_nai_realm_data *nai_realm_data; |
616 | | |
617 | | struct dl_list anqp_elem; /* list of struct anqp_element */ |
618 | | |
619 | | u16 gas_comeback_delay; |
620 | | size_t gas_frag_limit; |
621 | | int gas_address3; |
622 | | |
623 | | u8 qos_map_set[16 + 2 * 21]; |
624 | | unsigned int qos_map_set_len; |
625 | | |
626 | | int proxy_arp; |
627 | | int na_mcast_to_ucast; |
628 | | |
629 | | #ifdef CONFIG_HS20 |
630 | | int hs20; |
631 | | int hs20_release; |
632 | | int disable_dgaf; |
633 | | u16 anqp_domain_id; |
634 | | unsigned int hs20_oper_friendly_name_count; |
635 | | struct hostapd_lang_string *hs20_oper_friendly_name; |
636 | | u8 *hs20_wan_metrics; |
637 | | u8 *hs20_connection_capability; |
638 | | size_t hs20_connection_capability_len; |
639 | | u8 *hs20_operating_class; |
640 | | u8 hs20_operating_class_len; |
641 | | unsigned int hs20_deauth_req_timeout; |
642 | | char *t_c_filename; |
643 | | u32 t_c_timestamp; |
644 | | char *t_c_server_url; |
645 | | #endif /* CONFIG_HS20 */ |
646 | | |
647 | | u8 wps_rf_bands; /* RF bands for WPS (WPS_RF_*) */ |
648 | | |
649 | | #ifdef CONFIG_RADIUS_TEST |
650 | | char *dump_msk_file; |
651 | | #endif /* CONFIG_RADIUS_TEST */ |
652 | | |
653 | | struct wpabuf *vendor_elements; |
654 | | struct wpabuf *assocresp_elements; |
655 | | |
656 | | unsigned int anti_clogging_threshold; |
657 | | unsigned int sae_sync; |
658 | | int sae_require_mfp; |
659 | | int sae_confirm_immediate; |
660 | | enum sae_pwe sae_pwe; |
661 | | int *sae_groups; |
662 | | struct sae_password_entry *sae_passwords; |
663 | | int sae_password_psk; |
664 | | int sae_track_password; |
665 | | struct wpabuf *sae_pw_id_key; |
666 | | unsigned int sae_pw_id_num; |
667 | | |
668 | | char *wowlan_triggers; /* Wake-on-WLAN triggers */ |
669 | | |
670 | | #ifdef CONFIG_TESTING_OPTIONS |
671 | | u8 bss_load_test[5]; |
672 | | u8 bss_load_test_set; |
673 | | struct wpabuf *own_ie_override; |
674 | | struct wpabuf *rsne_override; |
675 | | struct wpabuf *rsnoe_override; |
676 | | struct wpabuf *rsno2e_override; |
677 | | struct wpabuf *rsnxe_override; |
678 | | struct wpabuf *rsnxoe_override; |
679 | | int sae_reflection_attack; |
680 | | int sae_commit_status; |
681 | | int sae_pk_omit; |
682 | | int sae_pk_password_check_skip; |
683 | | struct wpabuf *sae_commit_override; |
684 | | struct wpabuf *rsne_override_eapol; |
685 | | struct wpabuf *rsnxe_override_eapol; |
686 | | struct wpabuf *rsne_override_ft; |
687 | | struct wpabuf *rsnxe_override_ft; |
688 | | struct wpabuf *gtk_rsc_override; |
689 | | struct wpabuf *igtk_rsc_override; |
690 | | int no_beacon_rsnxe; |
691 | | int skip_prune_assoc; |
692 | | int ft_rsnxe_used; |
693 | | unsigned int oci_freq_override_eapol_m3; |
694 | | unsigned int oci_freq_override_eapol_g1; |
695 | | unsigned int oci_freq_override_saquery_req; |
696 | | unsigned int oci_freq_override_saquery_resp; |
697 | | unsigned int oci_freq_override_ft_assoc; |
698 | | unsigned int oci_freq_override_fils_assoc; |
699 | | unsigned int oci_freq_override_wnm_sleep; |
700 | | struct wpabuf *eapol_m1_elements; |
701 | | struct wpabuf *eapol_m3_elements; |
702 | | bool eapol_m3_no_encrypt; |
703 | | bool eapol_key_reserved_random; |
704 | | int test_assoc_comeback_type; |
705 | | struct wpabuf *presp_elements; |
706 | | |
707 | | #ifdef CONFIG_IEEE80211BE |
708 | | u16 eht_oper_puncturing_override; |
709 | | #endif /* CONFIG_IEEE80211BE */ |
710 | | #endif /* CONFIG_TESTING_OPTIONS */ |
711 | | |
712 | 2.20k | #define MESH_ENABLED BIT(0) |
713 | | int mesh; |
714 | | int mesh_fwding; |
715 | | |
716 | | u8 radio_measurements[RRM_CAPABILITIES_IE_LEN]; |
717 | | |
718 | | int vendor_vht; |
719 | | int use_sta_nsts; |
720 | | |
721 | | char *no_probe_resp_if_seen_on; |
722 | | char *no_auth_if_seen_on; |
723 | | |
724 | | int pbss; |
725 | | |
726 | | #ifdef CONFIG_MBO |
727 | | int mbo_enabled; |
728 | | /** |
729 | | * oce - Enable OCE in AP and/or STA-CFON mode |
730 | | * - BIT(0) is Reserved |
731 | | * - Set BIT(1) to enable OCE in STA-CFON mode |
732 | | * - Set BIT(2) to enable OCE in AP mode |
733 | | */ |
734 | | unsigned int oce; |
735 | | int mbo_cell_data_conn_pref; |
736 | | #endif /* CONFIG_MBO */ |
737 | | |
738 | | int ftm_responder; |
739 | | int ftm_initiator; |
740 | | |
741 | | #ifdef CONFIG_FILS |
742 | | u8 fils_cache_id[FILS_CACHE_ID_LEN]; |
743 | | int fils_cache_id_set; |
744 | | struct dl_list fils_realms; /* list of struct fils_realm */ |
745 | | int fils_dh_group; |
746 | | struct hostapd_ip_addr dhcp_server; |
747 | | int dhcp_rapid_commit_proxy; |
748 | | unsigned int fils_hlp_wait_time; |
749 | | u16 dhcp_server_port; |
750 | | u16 dhcp_relay_port; |
751 | | u32 fils_discovery_min_int; |
752 | | u32 fils_discovery_max_int; |
753 | | #endif /* CONFIG_FILS */ |
754 | | |
755 | | int multicast_to_unicast; |
756 | | int bridge_multicast_to_unicast; |
757 | | |
758 | | int broadcast_deauth; |
759 | | |
760 | | int notify_mgmt_frames; |
761 | | |
762 | | #ifdef CONFIG_DPP |
763 | | char *dpp_name; |
764 | | char *dpp_mud_url; |
765 | | char *dpp_extra_conf_req_name; |
766 | | char *dpp_extra_conf_req_value; |
767 | | char *dpp_connector; |
768 | | struct wpabuf *dpp_netaccesskey; |
769 | | unsigned int dpp_netaccesskey_expiry; |
770 | | struct wpabuf *dpp_csign; |
771 | | #ifdef CONFIG_DPP2 |
772 | | struct dpp_controller_conf *dpp_controller; |
773 | | int dpp_relay_port; |
774 | | int dpp_configurator_connectivity; |
775 | | int dpp_pfs; |
776 | | #endif /* CONFIG_DPP2 */ |
777 | | #endif /* CONFIG_DPP */ |
778 | | |
779 | | #ifdef CONFIG_OWE |
780 | | macaddr owe_transition_bssid; |
781 | | u8 owe_transition_ssid[SSID_MAX_LEN]; |
782 | | size_t owe_transition_ssid_len; |
783 | | char owe_transition_ifname[IFNAMSIZ + 1]; |
784 | | int *owe_groups; |
785 | | int owe_ptk_workaround; |
786 | | #endif /* CONFIG_OWE */ |
787 | | |
788 | | int coloc_intf_reporting; |
789 | | |
790 | | u8 send_probe_response; |
791 | | |
792 | | u8 transition_disable; |
793 | | |
794 | 0 | #define BACKHAUL_BSS 1 |
795 | 0 | #define FRONTHAUL_BSS 2 |
796 | | int multi_ap; /* bitmap of BACKHAUL_BSS, FRONTHAUL_BSS */ |
797 | | int multi_ap_profile; |
798 | | /* Multi-AP Profile-1 clients not allowed to connect */ |
799 | 0 | #define PROFILE1_CLIENT_ASSOC_DISALLOW BIT(0) |
800 | | /* Multi-AP Profile-2 clients not allowed to connect */ |
801 | 0 | #define PROFILE2_CLIENT_ASSOC_DISALLOW BIT(1) |
802 | | unsigned int multi_ap_client_disallow; |
803 | | /* Primary VLAN ID to use in Multi-AP */ |
804 | | int multi_ap_vlanid; |
805 | | |
806 | | #ifdef CONFIG_AIRTIME_POLICY |
807 | | unsigned int airtime_weight; |
808 | | int airtime_limit; |
809 | | struct airtime_sta_weight *airtime_weight_list; |
810 | | #endif /* CONFIG_AIRTIME_POLICY */ |
811 | | |
812 | | #ifdef CONFIG_MACSEC |
813 | | /** |
814 | | * macsec_policy - Determines the policy for MACsec secure session |
815 | | * |
816 | | * 0: MACsec not in use (default) |
817 | | * 1: MACsec enabled - Should secure, accept key server's advice to |
818 | | * determine whether to use a secure session or not. |
819 | | */ |
820 | | int macsec_policy; |
821 | | |
822 | | /** |
823 | | * macsec_integ_only - Determines how MACsec are transmitted |
824 | | * |
825 | | * This setting applies only when MACsec is in use, i.e., |
826 | | * - macsec_policy is enabled |
827 | | * - the key server has decided to enable MACsec |
828 | | * |
829 | | * 0: Encrypt traffic (default) |
830 | | * 1: Integrity only |
831 | | */ |
832 | | int macsec_integ_only; |
833 | | |
834 | | /** |
835 | | * macsec_replay_protect - Enable MACsec replay protection |
836 | | * |
837 | | * This setting applies only when MACsec is in use, i.e., |
838 | | * - macsec_policy is enabled |
839 | | * - the key server has decided to enable MACsec |
840 | | * |
841 | | * 0: Replay protection disabled (default) |
842 | | * 1: Replay protection enabled |
843 | | */ |
844 | | int macsec_replay_protect; |
845 | | |
846 | | /** |
847 | | * macsec_replay_window - MACsec replay protection window |
848 | | * |
849 | | * A window in which replay is tolerated, to allow receipt of frames |
850 | | * that have been misordered by the network. |
851 | | * |
852 | | * This setting applies only when MACsec replay protection active, i.e., |
853 | | * - macsec_replay_protect is enabled |
854 | | * - the key server has decided to enable MACsec |
855 | | * |
856 | | * 0: No replay window, strict check (default) |
857 | | * 1..2^32-1: number of packets that could be misordered |
858 | | */ |
859 | | u32 macsec_replay_window; |
860 | | |
861 | | /** |
862 | | * macsec_offload - Enable MACsec offload |
863 | | * |
864 | | * This setting applies only when MACsec is in use, i.e., |
865 | | * - macsec_policy is enabled |
866 | | * - the key server has decided to enable MACsec |
867 | | * |
868 | | * 0 = MACSEC_OFFLOAD_OFF (default) |
869 | | * 1 = MACSEC_OFFLOAD_PHY |
870 | | * 2 = MACSEC_OFFLOAD_MAC |
871 | | */ |
872 | | int macsec_offload; |
873 | | |
874 | | /** |
875 | | * macsec_port - MACsec port (in SCI) |
876 | | * |
877 | | * Port component of the SCI. |
878 | | * |
879 | | * Range: 1-65534 (default: 1) |
880 | | */ |
881 | | int macsec_port; |
882 | | |
883 | | /** |
884 | | * mka_priority - Priority of MKA Actor |
885 | | * |
886 | | * Range: 0-255 (default: 255) |
887 | | */ |
888 | | int mka_priority; |
889 | | |
890 | | /** |
891 | | * macsec_csindex - Cipher suite index for MACsec |
892 | | * |
893 | | * Range: 0-1 (default: 0) |
894 | | */ |
895 | | int macsec_csindex; |
896 | | |
897 | | /** |
898 | | * macsec_icv_indicator - Always include ICV Indicator |
899 | | * (for compatibility with older MACsec switches) |
900 | | * |
901 | | * Range: 0-1 (default: 0) |
902 | | */ |
903 | | int macsec_icv_indicator; |
904 | | |
905 | | /** |
906 | | * mka_ckn - MKA pre-shared CKN |
907 | | */ |
908 | | #define MACSEC_CKN_MAX_LEN 32 |
909 | | size_t mka_ckn_len; |
910 | | u8 mka_ckn[MACSEC_CKN_MAX_LEN]; |
911 | | |
912 | | /** |
913 | | * mka_cak - MKA pre-shared CAK |
914 | | */ |
915 | | #define MACSEC_CAK_MAX_LEN 32 |
916 | | size_t mka_cak_len; |
917 | | u8 mka_cak[MACSEC_CAK_MAX_LEN]; |
918 | | |
919 | | #define MKA_PSK_SET_CKN BIT(0) |
920 | | #define MKA_PSK_SET_CAK BIT(1) |
921 | | #define MKA_PSK_SET (MKA_PSK_SET_CKN | MKA_PSK_SET_CAK) |
922 | | /** |
923 | | * mka_psk_set - Whether mka_ckn and mka_cak are set |
924 | | */ |
925 | | u8 mka_psk_set; |
926 | | #endif /* CONFIG_MACSEC */ |
927 | | |
928 | | #ifdef CONFIG_PASN |
929 | | /* Whether to allow PASN-UNAUTH */ |
930 | | int pasn_noauth; |
931 | | |
932 | | #ifdef CONFIG_TESTING_OPTIONS |
933 | | /* |
934 | | * Normally, KDK should be derived if and only if both sides support |
935 | | * secure LTF. Allow forcing KDK derivation for testing purposes. |
936 | | */ |
937 | | int force_kdk_derivation; |
938 | | |
939 | | /* If set, corrupt the MIC in the 2nd Authentication frame of PASN */ |
940 | | int pasn_corrupt_mic; |
941 | | #endif /* CONFIG_TESTING_OPTIONS */ |
942 | | |
943 | | int *pasn_groups; |
944 | | |
945 | | /* |
946 | | * The time in TUs after which the non-AP STA is requested to retry the |
947 | | * PASN authentication in case there are too many parallel operations. |
948 | | */ |
949 | | u16 pasn_comeback_after; |
950 | | #endif /* CONFIG_PASN */ |
951 | | |
952 | | int urnm_mfpr_x20; |
953 | | int urnm_mfpr; |
954 | | |
955 | | unsigned int unsol_bcast_probe_resp_interval; |
956 | | |
957 | | u8 ext_capa_mask[EXT_CAPA_MAX_LEN]; |
958 | | u8 ext_capa[EXT_CAPA_MAX_LEN]; |
959 | | |
960 | | u8 rnr; |
961 | | char *config_id; |
962 | | |
963 | | bool ssid_protection; |
964 | | bool known_sta_identification; |
965 | | |
966 | | #ifdef CONFIG_IEEE80211BE |
967 | | /* The AP is part of an AP MLD */ |
968 | | u8 mld_ap; |
969 | | |
970 | | /* The MLD ID to which the AP MLD is affiliated with */ |
971 | | u8 mld_id; |
972 | | |
973 | | /* The AP's MLD MAC address within the AP MLD */ |
974 | | u8 mld_addr[ETH_ALEN]; |
975 | | |
976 | | #ifdef CONFIG_TESTING_OPTIONS |
977 | | /* |
978 | | * If set indicate the AP as disabled in the RNR element included in the |
979 | | * other APs in the AP MLD. |
980 | | */ |
981 | | bool mld_indicate_disabled; |
982 | | #endif /* CONFIG_TESTING_OPTIONS */ |
983 | | #endif /* CONFIG_IEEE80211BE */ |
984 | | int mbssid_index; |
985 | | |
986 | | bool spp_amsdu; |
987 | | }; |
988 | | |
989 | | /** |
990 | | * struct he_phy_capabilities_info - HE PHY capabilities |
991 | | */ |
992 | | struct he_phy_capabilities_info { |
993 | | bool he_su_beamformer; |
994 | | bool he_su_beamformee; |
995 | | bool he_mu_beamformer; |
996 | | }; |
997 | | |
998 | | /** |
999 | | * struct he_operation - HE operation |
1000 | | */ |
1001 | | struct he_operation { |
1002 | | u8 he_bss_color; |
1003 | | u8 he_bss_color_disabled; |
1004 | | u8 he_bss_color_partial; |
1005 | | u8 he_default_pe_duration; |
1006 | | u8 he_twt_required; |
1007 | | u8 he_twt_responder; |
1008 | | u16 he_rts_threshold; |
1009 | | u8 he_er_su_disable; |
1010 | | u16 he_basic_mcs_nss_set; |
1011 | | }; |
1012 | | |
1013 | | /** |
1014 | | * struct spatial_reuse - Spatial reuse |
1015 | | */ |
1016 | | struct spatial_reuse { |
1017 | | u8 sr_control; |
1018 | | u8 non_srg_obss_pd_max_offset; |
1019 | | u8 srg_obss_pd_min_offset; |
1020 | | u8 srg_obss_pd_max_offset; |
1021 | | u8 srg_bss_color_bitmap[8]; |
1022 | | u8 srg_partial_bssid_bitmap[8]; |
1023 | | }; |
1024 | | |
1025 | | /** |
1026 | | * struct eht_phy_capabilities_info - EHT PHY capabilities |
1027 | | */ |
1028 | | struct eht_phy_capabilities_info { |
1029 | | bool su_beamformer; |
1030 | | bool su_beamformee; |
1031 | | bool mu_beamformer; |
1032 | | }; |
1033 | | |
1034 | | /** |
1035 | | * struct hostapd_config - Per-radio interface configuration |
1036 | | */ |
1037 | | struct hostapd_config { |
1038 | | struct hostapd_bss_config **bss, *last_bss; |
1039 | | size_t num_bss; |
1040 | | |
1041 | | u16 beacon_int; |
1042 | | int rts_threshold; |
1043 | | int fragm_threshold; |
1044 | | u8 op_class; |
1045 | | u8 channel; |
1046 | | int enable_edmg; |
1047 | | u8 edmg_channel; |
1048 | | u8 acs; |
1049 | | struct wpa_freq_range_list acs_ch_list; |
1050 | | struct wpa_freq_range_list acs_freq_list; |
1051 | | u8 acs_freq_list_present; |
1052 | | int acs_exclude_dfs; |
1053 | | u8 min_tx_power; |
1054 | | enum hostapd_hw_mode hw_mode; /* HOSTAPD_MODE_IEEE80211A, .. */ |
1055 | | bool hw_mode_set; |
1056 | | int acs_exclude_6ghz_non_psc; |
1057 | | int enable_background_radar; |
1058 | | enum { |
1059 | | LONG_PREAMBLE = 0, |
1060 | | SHORT_PREAMBLE = 1 |
1061 | | } preamble; |
1062 | | |
1063 | | int *supported_rates; |
1064 | | int *basic_rates; |
1065 | | unsigned int beacon_rate; |
1066 | | enum beacon_rate_type rate_type; |
1067 | | |
1068 | | const struct wpa_driver_ops *driver; |
1069 | | char *driver_params; |
1070 | | |
1071 | | int ap_table_max_size; |
1072 | | int ap_table_expiration_time; |
1073 | | |
1074 | | unsigned int track_sta_max_num; |
1075 | | unsigned int track_sta_max_age; |
1076 | | |
1077 | | char country[3]; /* first two octets: country code as described in |
1078 | | * ISO/IEC 3166-1. Third octet: |
1079 | | * ' ' (ascii 32): all environments |
1080 | | * 'O': Outdoor environemnt only |
1081 | | * 'I': Indoor environment only |
1082 | | * 'X': Used with noncountry entity ("XXX") |
1083 | | * 0x00..0x31: identifying IEEE 802.11 standard |
1084 | | * Annex E table (0x04 = global table) |
1085 | | */ |
1086 | | |
1087 | | int ieee80211d; |
1088 | | |
1089 | | int ieee80211h; /* DFS */ |
1090 | | |
1091 | | /* |
1092 | | * Local power constraint is an octet encoded as an unsigned integer in |
1093 | | * units of decibels. Invalid value -1 indicates that Power Constraint |
1094 | | * element will not be added. |
1095 | | */ |
1096 | | int local_pwr_constraint; |
1097 | | |
1098 | | /* Control Spectrum Management bit */ |
1099 | | int spectrum_mgmt_required; |
1100 | | |
1101 | | struct hostapd_tx_queue_params tx_queue[NUM_TX_QUEUES]; |
1102 | | |
1103 | | /* |
1104 | | * WMM AC parameters, in same order as 802.1D, i.e. |
1105 | | * 0 = BE (best effort) |
1106 | | * 1 = BK (background) |
1107 | | * 2 = VI (video) |
1108 | | * 3 = VO (voice) |
1109 | | */ |
1110 | | struct hostapd_wmm_ac_params wmm_ac_params[4]; |
1111 | | |
1112 | | int ht_op_mode_fixed; |
1113 | | u16 ht_capab; |
1114 | | int ieee80211n; |
1115 | | int secondary_channel; |
1116 | | int no_pri_sec_switch; |
1117 | | int require_ht; |
1118 | | int obss_interval; |
1119 | | u32 vht_capab; |
1120 | | int ieee80211ac; |
1121 | | int require_vht; |
1122 | | enum oper_chan_width vht_oper_chwidth; |
1123 | | u8 vht_oper_centr_freq_seg0_idx; |
1124 | | u8 vht_oper_centr_freq_seg1_idx; |
1125 | | u8 ht40_plus_minus_allowed; |
1126 | | |
1127 | | /* Use driver-generated interface addresses when adding multiple BSSs */ |
1128 | | u8 use_driver_iface_addr; |
1129 | | |
1130 | | #ifdef CONFIG_FST |
1131 | | struct fst_iface_cfg fst_cfg; |
1132 | | #endif /* CONFIG_FST */ |
1133 | | |
1134 | | #ifdef CONFIG_P2P |
1135 | | u8 p2p_go_ctwindow; |
1136 | | #endif /* CONFIG_P2P */ |
1137 | | |
1138 | | #ifdef CONFIG_TESTING_OPTIONS |
1139 | | double ignore_probe_probability; |
1140 | | double ignore_auth_probability; |
1141 | | double ignore_assoc_probability; |
1142 | | double ignore_reassoc_probability; |
1143 | | double corrupt_gtk_rekey_mic_probability; |
1144 | | int ecsa_ie_only; |
1145 | | int csa_ie_only; |
1146 | | bool delay_eapol_tx; |
1147 | | #endif /* CONFIG_TESTING_OPTIONS */ |
1148 | | |
1149 | | #ifdef CONFIG_ACS |
1150 | | unsigned int acs_num_scans; |
1151 | | struct acs_bias { |
1152 | | int channel; |
1153 | | double bias; |
1154 | | } *acs_chan_bias; |
1155 | | unsigned int num_acs_chan_bias; |
1156 | | #endif /* CONFIG_ACS */ |
1157 | | |
1158 | | struct wpabuf *lci; |
1159 | | struct wpabuf *civic; |
1160 | | int stationary_ap; |
1161 | | |
1162 | | int ieee80211ax; |
1163 | | #ifdef CONFIG_IEEE80211AX |
1164 | | struct he_phy_capabilities_info he_phy_capab; |
1165 | | struct he_operation he_op; |
1166 | | struct ieee80211_he_mu_edca_parameter_set he_mu_edca; |
1167 | | struct spatial_reuse spr; |
1168 | | enum oper_chan_width he_oper_chwidth; |
1169 | | u8 he_oper_centr_freq_seg0_idx; |
1170 | | u8 he_oper_centr_freq_seg1_idx; |
1171 | | u8 he_6ghz_max_mpdu; |
1172 | | u8 he_6ghz_max_ampdu_len_exp; |
1173 | | u8 he_6ghz_rx_ant_pat; |
1174 | | u8 he_6ghz_tx_ant_pat; |
1175 | | u8 he_6ghz_reg_pwr_type; |
1176 | | |
1177 | | int reg_def_cli_eirp_psd; |
1178 | | int reg_sub_cli_eirp_psd; |
1179 | | |
1180 | | /* |
1181 | | * This value should be used when regulatory client EIRP PSD values |
1182 | | * advertised by an AP that is an SP AP or an indoor SP AP are |
1183 | | * insufficient to ensure that regulatory client limits on total EIRP |
1184 | | * are always met for all transmission bandwidths within the bandwidth |
1185 | | * of the AP’s BSS. |
1186 | | */ |
1187 | | int reg_def_cli_eirp; |
1188 | | |
1189 | | bool require_he; |
1190 | | #endif /* CONFIG_IEEE80211AX */ |
1191 | | |
1192 | | /* VHT enable/disable config from CHAN_SWITCH */ |
1193 | 0 | #define CH_SWITCH_VHT_ENABLED BIT(0) |
1194 | 0 | #define CH_SWITCH_VHT_DISABLED BIT(1) |
1195 | | unsigned int ch_switch_vht_config; |
1196 | | |
1197 | | /* HE enable/disable config from CHAN_SWITCH */ |
1198 | 0 | #define CH_SWITCH_HE_ENABLED BIT(0) |
1199 | 0 | #define CH_SWITCH_HE_DISABLED BIT(1) |
1200 | | unsigned int ch_switch_he_config; |
1201 | | |
1202 | | int rssi_reject_assoc_rssi; |
1203 | | int rssi_reject_assoc_timeout; |
1204 | | int rssi_ignore_probe_request; |
1205 | | |
1206 | | #ifdef CONFIG_AIRTIME_POLICY |
1207 | | enum { |
1208 | | AIRTIME_MODE_OFF = 0, |
1209 | | AIRTIME_MODE_STATIC = 1, |
1210 | | AIRTIME_MODE_DYNAMIC = 2, |
1211 | | AIRTIME_MODE_LIMIT = 3, |
1212 | | __AIRTIME_MODE_MAX, |
1213 | | } airtime_mode; |
1214 | | unsigned int airtime_update_interval; |
1215 | | #define AIRTIME_MODE_MAX (__AIRTIME_MODE_MAX - 1) |
1216 | | #endif /* CONFIG_AIRTIME_POLICY */ |
1217 | | |
1218 | | int ieee80211be; |
1219 | | #ifdef CONFIG_IEEE80211BE |
1220 | | enum oper_chan_width eht_oper_chwidth; |
1221 | | u8 eht_oper_centr_freq_seg0_idx; |
1222 | | struct eht_phy_capabilities_info eht_phy_capab; |
1223 | | u16 punct_bitmap; /* a bitmap of disabled 20 MHz channels */ |
1224 | | u8 punct_acs_threshold; |
1225 | | u8 eht_default_pe_duration; |
1226 | | u8 eht_bw320_offset; |
1227 | | #endif /* CONFIG_IEEE80211BE */ |
1228 | | |
1229 | | /* EHT enable/disable config from CHAN_SWITCH */ |
1230 | 0 | #define CH_SWITCH_EHT_ENABLED BIT(0) |
1231 | 0 | #define CH_SWITCH_EHT_DISABLED BIT(1) |
1232 | | unsigned int ch_switch_eht_config; |
1233 | | |
1234 | | enum mbssid { |
1235 | | MBSSID_DISABLED = 0, |
1236 | | MBSSID_ENABLED = 1, |
1237 | | ENHANCED_MBSSID_ENABLED = 2, |
1238 | | } mbssid; |
1239 | | unsigned int mbssid_max; |
1240 | | |
1241 | | /* Whether to enable TWT responder in HT and VHT modes */ |
1242 | | bool ht_vht_twt_responder; |
1243 | | |
1244 | | bool channel_usage; |
1245 | | bool peer_to_peer_twt; |
1246 | | |
1247 | | /* Set I2R LMR policy to allow LMR response from ISTA */ |
1248 | | bool i2r_lmr_policy; |
1249 | | }; |
1250 | | |
1251 | | |
1252 | | static inline enum oper_chan_width |
1253 | | hostapd_get_oper_chwidth(struct hostapd_config *conf) |
1254 | 0 | { |
1255 | | #ifdef CONFIG_IEEE80211BE |
1256 | | if (conf->ieee80211be) |
1257 | | return conf->eht_oper_chwidth; |
1258 | | #endif /* CONFIG_IEEE80211BE */ |
1259 | | #ifdef CONFIG_IEEE80211AX |
1260 | | if (conf->ieee80211ax) |
1261 | | return conf->he_oper_chwidth; |
1262 | | #endif /* CONFIG_IEEE80211AX */ |
1263 | 0 | return conf->vht_oper_chwidth; |
1264 | 0 | } Unexecuted instantiation: comeback_token.c:hostapd_get_oper_chwidth Unexecuted instantiation: pasn_responder.c:hostapd_get_oper_chwidth Unexecuted instantiation: p2p.c:hostapd_get_oper_chwidth Unexecuted instantiation: ap-mgmt.c:hostapd_get_oper_chwidth Unexecuted instantiation: ap_config.c:hostapd_get_oper_chwidth Unexecuted instantiation: ap_list.c:hostapd_get_oper_chwidth Unexecuted instantiation: beacon.c:hostapd_get_oper_chwidth Unexecuted instantiation: dfs.c:hostapd_get_oper_chwidth Unexecuted instantiation: hostapd.c:hostapd_get_oper_chwidth Unexecuted instantiation: hs20.c:hostapd_get_oper_chwidth Unexecuted instantiation: hw_features.c:hostapd_get_oper_chwidth Unexecuted instantiation: ieee802_11_auth.c:hostapd_get_oper_chwidth Unexecuted instantiation: ieee802_11.c:hostapd_get_oper_chwidth Unexecuted instantiation: ieee802_11_ht.c:hostapd_get_oper_chwidth Unexecuted instantiation: ieee802_11_shared.c:hostapd_get_oper_chwidth Unexecuted instantiation: ieee802_1x.c:hostapd_get_oper_chwidth Unexecuted instantiation: neighbor_db.c:hostapd_get_oper_chwidth Unexecuted instantiation: ndisc_snoop.c:hostapd_get_oper_chwidth Unexecuted instantiation: pmksa_cache_auth.c:hostapd_get_oper_chwidth Unexecuted instantiation: rrm.c:hostapd_get_oper_chwidth Unexecuted instantiation: sta_info.c:hostapd_get_oper_chwidth Unexecuted instantiation: utils.c:hostapd_get_oper_chwidth Unexecuted instantiation: vlan_init.c:hostapd_get_oper_chwidth Unexecuted instantiation: wmm.c:hostapd_get_oper_chwidth Unexecuted instantiation: wpa_auth.c:hostapd_get_oper_chwidth Unexecuted instantiation: wpa_auth_ft.c:hostapd_get_oper_chwidth Unexecuted instantiation: wpa_auth_glue.c:hostapd_get_oper_chwidth Unexecuted instantiation: wpa_auth_ie.c:hostapd_get_oper_chwidth Unexecuted instantiation: wps_hostapd.c:hostapd_get_oper_chwidth Unexecuted instantiation: x_snoop.c:hostapd_get_oper_chwidth Unexecuted instantiation: accounting.c:hostapd_get_oper_chwidth Unexecuted instantiation: ap_drv_ops.c:hostapd_get_oper_chwidth Unexecuted instantiation: ap_mlme.c:hostapd_get_oper_chwidth Unexecuted instantiation: airtime_policy.c:hostapd_get_oper_chwidth Unexecuted instantiation: authsrv.c:hostapd_get_oper_chwidth Unexecuted instantiation: bss_load.c:hostapd_get_oper_chwidth Unexecuted instantiation: dhcp_snoop.c:hostapd_get_oper_chwidth Unexecuted instantiation: eap_user_db.c:hostapd_get_oper_chwidth Unexecuted instantiation: eth_p_oui.c:hostapd_get_oper_chwidth Unexecuted instantiation: gas_serv.c:hostapd_get_oper_chwidth Unexecuted instantiation: tkip_countermeasures.c:hostapd_get_oper_chwidth Unexecuted instantiation: events.c:hostapd_get_oper_chwidth |
1265 | | |
1266 | | static inline void |
1267 | | hostapd_set_oper_chwidth(struct hostapd_config *conf, |
1268 | | enum oper_chan_width oper_chwidth) |
1269 | 0 | { |
1270 | | #ifdef CONFIG_IEEE80211BE |
1271 | | if (conf->ieee80211be) |
1272 | | conf->eht_oper_chwidth = oper_chwidth; |
1273 | | if (oper_chwidth == CONF_OPER_CHWIDTH_320MHZ) |
1274 | | oper_chwidth = CONF_OPER_CHWIDTH_160MHZ; |
1275 | | #endif /* CONFIG_IEEE80211BE */ |
1276 | | #ifdef CONFIG_IEEE80211AX |
1277 | | if (conf->ieee80211ax) |
1278 | | conf->he_oper_chwidth = oper_chwidth; |
1279 | | #endif /* CONFIG_IEEE80211AX */ |
1280 | 0 | conf->vht_oper_chwidth = oper_chwidth; |
1281 | 0 | } Unexecuted instantiation: comeback_token.c:hostapd_set_oper_chwidth Unexecuted instantiation: pasn_responder.c:hostapd_set_oper_chwidth Unexecuted instantiation: p2p.c:hostapd_set_oper_chwidth Unexecuted instantiation: ap-mgmt.c:hostapd_set_oper_chwidth Unexecuted instantiation: ap_config.c:hostapd_set_oper_chwidth Unexecuted instantiation: ap_list.c:hostapd_set_oper_chwidth Unexecuted instantiation: beacon.c:hostapd_set_oper_chwidth Unexecuted instantiation: dfs.c:hostapd_set_oper_chwidth Unexecuted instantiation: hostapd.c:hostapd_set_oper_chwidth Unexecuted instantiation: hs20.c:hostapd_set_oper_chwidth Unexecuted instantiation: hw_features.c:hostapd_set_oper_chwidth Unexecuted instantiation: ieee802_11_auth.c:hostapd_set_oper_chwidth Unexecuted instantiation: ieee802_11.c:hostapd_set_oper_chwidth Unexecuted instantiation: ieee802_11_ht.c:hostapd_set_oper_chwidth Unexecuted instantiation: ieee802_11_shared.c:hostapd_set_oper_chwidth Unexecuted instantiation: ieee802_1x.c:hostapd_set_oper_chwidth Unexecuted instantiation: neighbor_db.c:hostapd_set_oper_chwidth Unexecuted instantiation: ndisc_snoop.c:hostapd_set_oper_chwidth Unexecuted instantiation: pmksa_cache_auth.c:hostapd_set_oper_chwidth Unexecuted instantiation: rrm.c:hostapd_set_oper_chwidth Unexecuted instantiation: sta_info.c:hostapd_set_oper_chwidth Unexecuted instantiation: utils.c:hostapd_set_oper_chwidth Unexecuted instantiation: vlan_init.c:hostapd_set_oper_chwidth Unexecuted instantiation: wmm.c:hostapd_set_oper_chwidth Unexecuted instantiation: wpa_auth.c:hostapd_set_oper_chwidth Unexecuted instantiation: wpa_auth_ft.c:hostapd_set_oper_chwidth Unexecuted instantiation: wpa_auth_glue.c:hostapd_set_oper_chwidth Unexecuted instantiation: wpa_auth_ie.c:hostapd_set_oper_chwidth Unexecuted instantiation: wps_hostapd.c:hostapd_set_oper_chwidth Unexecuted instantiation: x_snoop.c:hostapd_set_oper_chwidth Unexecuted instantiation: accounting.c:hostapd_set_oper_chwidth Unexecuted instantiation: ap_drv_ops.c:hostapd_set_oper_chwidth Unexecuted instantiation: ap_mlme.c:hostapd_set_oper_chwidth Unexecuted instantiation: airtime_policy.c:hostapd_set_oper_chwidth Unexecuted instantiation: authsrv.c:hostapd_set_oper_chwidth Unexecuted instantiation: bss_load.c:hostapd_set_oper_chwidth Unexecuted instantiation: dhcp_snoop.c:hostapd_set_oper_chwidth Unexecuted instantiation: eap_user_db.c:hostapd_set_oper_chwidth Unexecuted instantiation: eth_p_oui.c:hostapd_set_oper_chwidth Unexecuted instantiation: gas_serv.c:hostapd_set_oper_chwidth Unexecuted instantiation: tkip_countermeasures.c:hostapd_set_oper_chwidth Unexecuted instantiation: events.c:hostapd_set_oper_chwidth |
1282 | | |
1283 | | static inline u8 |
1284 | | hostapd_get_oper_centr_freq_seg0_idx(struct hostapd_config *conf) |
1285 | 0 | { |
1286 | | #ifdef CONFIG_IEEE80211BE |
1287 | | if (conf->ieee80211be) |
1288 | | return conf->eht_oper_centr_freq_seg0_idx; |
1289 | | #endif /* CONFIG_IEEE80211BE */ |
1290 | | #ifdef CONFIG_IEEE80211AX |
1291 | | if (conf->ieee80211ax) |
1292 | | return conf->he_oper_centr_freq_seg0_idx; |
1293 | | #endif /* CONFIG_IEEE80211AX */ |
1294 | 0 | return conf->vht_oper_centr_freq_seg0_idx; |
1295 | 0 | } Unexecuted instantiation: comeback_token.c:hostapd_get_oper_centr_freq_seg0_idx Unexecuted instantiation: pasn_responder.c:hostapd_get_oper_centr_freq_seg0_idx Unexecuted instantiation: p2p.c:hostapd_get_oper_centr_freq_seg0_idx Unexecuted instantiation: ap-mgmt.c:hostapd_get_oper_centr_freq_seg0_idx Unexecuted instantiation: ap_config.c:hostapd_get_oper_centr_freq_seg0_idx Unexecuted instantiation: ap_list.c:hostapd_get_oper_centr_freq_seg0_idx Unexecuted instantiation: beacon.c:hostapd_get_oper_centr_freq_seg0_idx Unexecuted instantiation: dfs.c:hostapd_get_oper_centr_freq_seg0_idx Unexecuted instantiation: hostapd.c:hostapd_get_oper_centr_freq_seg0_idx Unexecuted instantiation: hs20.c:hostapd_get_oper_centr_freq_seg0_idx Unexecuted instantiation: hw_features.c:hostapd_get_oper_centr_freq_seg0_idx Unexecuted instantiation: ieee802_11_auth.c:hostapd_get_oper_centr_freq_seg0_idx Unexecuted instantiation: ieee802_11.c:hostapd_get_oper_centr_freq_seg0_idx Unexecuted instantiation: ieee802_11_ht.c:hostapd_get_oper_centr_freq_seg0_idx Unexecuted instantiation: ieee802_11_shared.c:hostapd_get_oper_centr_freq_seg0_idx Unexecuted instantiation: ieee802_1x.c:hostapd_get_oper_centr_freq_seg0_idx Unexecuted instantiation: neighbor_db.c:hostapd_get_oper_centr_freq_seg0_idx Unexecuted instantiation: ndisc_snoop.c:hostapd_get_oper_centr_freq_seg0_idx Unexecuted instantiation: pmksa_cache_auth.c:hostapd_get_oper_centr_freq_seg0_idx Unexecuted instantiation: rrm.c:hostapd_get_oper_centr_freq_seg0_idx Unexecuted instantiation: sta_info.c:hostapd_get_oper_centr_freq_seg0_idx Unexecuted instantiation: utils.c:hostapd_get_oper_centr_freq_seg0_idx Unexecuted instantiation: vlan_init.c:hostapd_get_oper_centr_freq_seg0_idx Unexecuted instantiation: wmm.c:hostapd_get_oper_centr_freq_seg0_idx Unexecuted instantiation: wpa_auth.c:hostapd_get_oper_centr_freq_seg0_idx Unexecuted instantiation: wpa_auth_ft.c:hostapd_get_oper_centr_freq_seg0_idx Unexecuted instantiation: wpa_auth_glue.c:hostapd_get_oper_centr_freq_seg0_idx Unexecuted instantiation: wpa_auth_ie.c:hostapd_get_oper_centr_freq_seg0_idx Unexecuted instantiation: wps_hostapd.c:hostapd_get_oper_centr_freq_seg0_idx Unexecuted instantiation: x_snoop.c:hostapd_get_oper_centr_freq_seg0_idx Unexecuted instantiation: accounting.c:hostapd_get_oper_centr_freq_seg0_idx Unexecuted instantiation: ap_drv_ops.c:hostapd_get_oper_centr_freq_seg0_idx Unexecuted instantiation: ap_mlme.c:hostapd_get_oper_centr_freq_seg0_idx Unexecuted instantiation: airtime_policy.c:hostapd_get_oper_centr_freq_seg0_idx Unexecuted instantiation: authsrv.c:hostapd_get_oper_centr_freq_seg0_idx Unexecuted instantiation: bss_load.c:hostapd_get_oper_centr_freq_seg0_idx Unexecuted instantiation: dhcp_snoop.c:hostapd_get_oper_centr_freq_seg0_idx Unexecuted instantiation: eap_user_db.c:hostapd_get_oper_centr_freq_seg0_idx Unexecuted instantiation: eth_p_oui.c:hostapd_get_oper_centr_freq_seg0_idx Unexecuted instantiation: gas_serv.c:hostapd_get_oper_centr_freq_seg0_idx Unexecuted instantiation: tkip_countermeasures.c:hostapd_get_oper_centr_freq_seg0_idx Unexecuted instantiation: events.c:hostapd_get_oper_centr_freq_seg0_idx |
1296 | | |
1297 | | static inline void |
1298 | | hostapd_set_oper_centr_freq_seg0_idx(struct hostapd_config *conf, |
1299 | | u8 oper_centr_freq_seg0_idx) |
1300 | 0 | { |
1301 | | #ifdef CONFIG_IEEE80211BE |
1302 | | if (conf->ieee80211be) |
1303 | | conf->eht_oper_centr_freq_seg0_idx = oper_centr_freq_seg0_idx; |
1304 | | if (is_6ghz_op_class(conf->op_class) && |
1305 | | center_idx_to_bw_6ghz(oper_centr_freq_seg0_idx) == 4) |
1306 | | oper_centr_freq_seg0_idx += |
1307 | | conf->channel > oper_centr_freq_seg0_idx ? 16 : -16; |
1308 | | #endif /* CONFIG_IEEE80211BE */ |
1309 | | #ifdef CONFIG_IEEE80211AX |
1310 | | if (conf->ieee80211ax) |
1311 | | conf->he_oper_centr_freq_seg0_idx = oper_centr_freq_seg0_idx; |
1312 | | #endif /* CONFIG_IEEE80211AX */ |
1313 | 0 | conf->vht_oper_centr_freq_seg0_idx = oper_centr_freq_seg0_idx; |
1314 | 0 | } Unexecuted instantiation: comeback_token.c:hostapd_set_oper_centr_freq_seg0_idx Unexecuted instantiation: pasn_responder.c:hostapd_set_oper_centr_freq_seg0_idx Unexecuted instantiation: p2p.c:hostapd_set_oper_centr_freq_seg0_idx Unexecuted instantiation: ap-mgmt.c:hostapd_set_oper_centr_freq_seg0_idx Unexecuted instantiation: ap_config.c:hostapd_set_oper_centr_freq_seg0_idx Unexecuted instantiation: ap_list.c:hostapd_set_oper_centr_freq_seg0_idx Unexecuted instantiation: beacon.c:hostapd_set_oper_centr_freq_seg0_idx Unexecuted instantiation: dfs.c:hostapd_set_oper_centr_freq_seg0_idx Unexecuted instantiation: hostapd.c:hostapd_set_oper_centr_freq_seg0_idx Unexecuted instantiation: hs20.c:hostapd_set_oper_centr_freq_seg0_idx Unexecuted instantiation: hw_features.c:hostapd_set_oper_centr_freq_seg0_idx Unexecuted instantiation: ieee802_11_auth.c:hostapd_set_oper_centr_freq_seg0_idx Unexecuted instantiation: ieee802_11.c:hostapd_set_oper_centr_freq_seg0_idx Unexecuted instantiation: ieee802_11_ht.c:hostapd_set_oper_centr_freq_seg0_idx Unexecuted instantiation: ieee802_11_shared.c:hostapd_set_oper_centr_freq_seg0_idx Unexecuted instantiation: ieee802_1x.c:hostapd_set_oper_centr_freq_seg0_idx Unexecuted instantiation: neighbor_db.c:hostapd_set_oper_centr_freq_seg0_idx Unexecuted instantiation: ndisc_snoop.c:hostapd_set_oper_centr_freq_seg0_idx Unexecuted instantiation: pmksa_cache_auth.c:hostapd_set_oper_centr_freq_seg0_idx Unexecuted instantiation: rrm.c:hostapd_set_oper_centr_freq_seg0_idx Unexecuted instantiation: sta_info.c:hostapd_set_oper_centr_freq_seg0_idx Unexecuted instantiation: utils.c:hostapd_set_oper_centr_freq_seg0_idx Unexecuted instantiation: vlan_init.c:hostapd_set_oper_centr_freq_seg0_idx Unexecuted instantiation: wmm.c:hostapd_set_oper_centr_freq_seg0_idx Unexecuted instantiation: wpa_auth.c:hostapd_set_oper_centr_freq_seg0_idx Unexecuted instantiation: wpa_auth_ft.c:hostapd_set_oper_centr_freq_seg0_idx Unexecuted instantiation: wpa_auth_glue.c:hostapd_set_oper_centr_freq_seg0_idx Unexecuted instantiation: wpa_auth_ie.c:hostapd_set_oper_centr_freq_seg0_idx Unexecuted instantiation: wps_hostapd.c:hostapd_set_oper_centr_freq_seg0_idx Unexecuted instantiation: x_snoop.c:hostapd_set_oper_centr_freq_seg0_idx Unexecuted instantiation: accounting.c:hostapd_set_oper_centr_freq_seg0_idx Unexecuted instantiation: ap_drv_ops.c:hostapd_set_oper_centr_freq_seg0_idx Unexecuted instantiation: ap_mlme.c:hostapd_set_oper_centr_freq_seg0_idx Unexecuted instantiation: airtime_policy.c:hostapd_set_oper_centr_freq_seg0_idx Unexecuted instantiation: authsrv.c:hostapd_set_oper_centr_freq_seg0_idx Unexecuted instantiation: bss_load.c:hostapd_set_oper_centr_freq_seg0_idx Unexecuted instantiation: dhcp_snoop.c:hostapd_set_oper_centr_freq_seg0_idx Unexecuted instantiation: eap_user_db.c:hostapd_set_oper_centr_freq_seg0_idx Unexecuted instantiation: eth_p_oui.c:hostapd_set_oper_centr_freq_seg0_idx Unexecuted instantiation: gas_serv.c:hostapd_set_oper_centr_freq_seg0_idx Unexecuted instantiation: tkip_countermeasures.c:hostapd_set_oper_centr_freq_seg0_idx Unexecuted instantiation: events.c:hostapd_set_oper_centr_freq_seg0_idx |
1315 | | |
1316 | | static inline u8 |
1317 | | hostapd_get_oper_centr_freq_seg1_idx(struct hostapd_config *conf) |
1318 | 0 | { |
1319 | | #ifdef CONFIG_IEEE80211AX |
1320 | | if (conf->ieee80211ax) |
1321 | | return conf->he_oper_centr_freq_seg1_idx; |
1322 | | #endif /* CONFIG_IEEE80211AX */ |
1323 | 0 | return conf->vht_oper_centr_freq_seg1_idx; |
1324 | 0 | } Unexecuted instantiation: comeback_token.c:hostapd_get_oper_centr_freq_seg1_idx Unexecuted instantiation: pasn_responder.c:hostapd_get_oper_centr_freq_seg1_idx Unexecuted instantiation: p2p.c:hostapd_get_oper_centr_freq_seg1_idx Unexecuted instantiation: ap-mgmt.c:hostapd_get_oper_centr_freq_seg1_idx Unexecuted instantiation: ap_config.c:hostapd_get_oper_centr_freq_seg1_idx Unexecuted instantiation: ap_list.c:hostapd_get_oper_centr_freq_seg1_idx Unexecuted instantiation: beacon.c:hostapd_get_oper_centr_freq_seg1_idx Unexecuted instantiation: dfs.c:hostapd_get_oper_centr_freq_seg1_idx Unexecuted instantiation: hostapd.c:hostapd_get_oper_centr_freq_seg1_idx Unexecuted instantiation: hs20.c:hostapd_get_oper_centr_freq_seg1_idx Unexecuted instantiation: hw_features.c:hostapd_get_oper_centr_freq_seg1_idx Unexecuted instantiation: ieee802_11_auth.c:hostapd_get_oper_centr_freq_seg1_idx Unexecuted instantiation: ieee802_11.c:hostapd_get_oper_centr_freq_seg1_idx Unexecuted instantiation: ieee802_11_ht.c:hostapd_get_oper_centr_freq_seg1_idx Unexecuted instantiation: ieee802_11_shared.c:hostapd_get_oper_centr_freq_seg1_idx Unexecuted instantiation: ieee802_1x.c:hostapd_get_oper_centr_freq_seg1_idx Unexecuted instantiation: neighbor_db.c:hostapd_get_oper_centr_freq_seg1_idx Unexecuted instantiation: ndisc_snoop.c:hostapd_get_oper_centr_freq_seg1_idx Unexecuted instantiation: pmksa_cache_auth.c:hostapd_get_oper_centr_freq_seg1_idx Unexecuted instantiation: rrm.c:hostapd_get_oper_centr_freq_seg1_idx Unexecuted instantiation: sta_info.c:hostapd_get_oper_centr_freq_seg1_idx Unexecuted instantiation: utils.c:hostapd_get_oper_centr_freq_seg1_idx Unexecuted instantiation: vlan_init.c:hostapd_get_oper_centr_freq_seg1_idx Unexecuted instantiation: wmm.c:hostapd_get_oper_centr_freq_seg1_idx Unexecuted instantiation: wpa_auth.c:hostapd_get_oper_centr_freq_seg1_idx Unexecuted instantiation: wpa_auth_ft.c:hostapd_get_oper_centr_freq_seg1_idx Unexecuted instantiation: wpa_auth_glue.c:hostapd_get_oper_centr_freq_seg1_idx Unexecuted instantiation: wpa_auth_ie.c:hostapd_get_oper_centr_freq_seg1_idx Unexecuted instantiation: wps_hostapd.c:hostapd_get_oper_centr_freq_seg1_idx Unexecuted instantiation: x_snoop.c:hostapd_get_oper_centr_freq_seg1_idx Unexecuted instantiation: accounting.c:hostapd_get_oper_centr_freq_seg1_idx Unexecuted instantiation: ap_drv_ops.c:hostapd_get_oper_centr_freq_seg1_idx Unexecuted instantiation: ap_mlme.c:hostapd_get_oper_centr_freq_seg1_idx Unexecuted instantiation: airtime_policy.c:hostapd_get_oper_centr_freq_seg1_idx Unexecuted instantiation: authsrv.c:hostapd_get_oper_centr_freq_seg1_idx Unexecuted instantiation: bss_load.c:hostapd_get_oper_centr_freq_seg1_idx Unexecuted instantiation: dhcp_snoop.c:hostapd_get_oper_centr_freq_seg1_idx Unexecuted instantiation: eap_user_db.c:hostapd_get_oper_centr_freq_seg1_idx Unexecuted instantiation: eth_p_oui.c:hostapd_get_oper_centr_freq_seg1_idx Unexecuted instantiation: gas_serv.c:hostapd_get_oper_centr_freq_seg1_idx Unexecuted instantiation: tkip_countermeasures.c:hostapd_get_oper_centr_freq_seg1_idx Unexecuted instantiation: events.c:hostapd_get_oper_centr_freq_seg1_idx |
1325 | | |
1326 | | static inline void |
1327 | | hostapd_set_oper_centr_freq_seg1_idx(struct hostapd_config *conf, |
1328 | | u8 oper_centr_freq_seg1_idx) |
1329 | 0 | { |
1330 | | #ifdef CONFIG_IEEE80211AX |
1331 | | if (conf->ieee80211ax) |
1332 | | conf->he_oper_centr_freq_seg1_idx = oper_centr_freq_seg1_idx; |
1333 | | #endif /* CONFIG_IEEE80211AX */ |
1334 | 0 | conf->vht_oper_centr_freq_seg1_idx = oper_centr_freq_seg1_idx; |
1335 | 0 | } Unexecuted instantiation: comeback_token.c:hostapd_set_oper_centr_freq_seg1_idx Unexecuted instantiation: pasn_responder.c:hostapd_set_oper_centr_freq_seg1_idx Unexecuted instantiation: p2p.c:hostapd_set_oper_centr_freq_seg1_idx Unexecuted instantiation: ap-mgmt.c:hostapd_set_oper_centr_freq_seg1_idx Unexecuted instantiation: ap_config.c:hostapd_set_oper_centr_freq_seg1_idx Unexecuted instantiation: ap_list.c:hostapd_set_oper_centr_freq_seg1_idx Unexecuted instantiation: beacon.c:hostapd_set_oper_centr_freq_seg1_idx Unexecuted instantiation: dfs.c:hostapd_set_oper_centr_freq_seg1_idx Unexecuted instantiation: hostapd.c:hostapd_set_oper_centr_freq_seg1_idx Unexecuted instantiation: hs20.c:hostapd_set_oper_centr_freq_seg1_idx Unexecuted instantiation: hw_features.c:hostapd_set_oper_centr_freq_seg1_idx Unexecuted instantiation: ieee802_11_auth.c:hostapd_set_oper_centr_freq_seg1_idx Unexecuted instantiation: ieee802_11.c:hostapd_set_oper_centr_freq_seg1_idx Unexecuted instantiation: ieee802_11_ht.c:hostapd_set_oper_centr_freq_seg1_idx Unexecuted instantiation: ieee802_11_shared.c:hostapd_set_oper_centr_freq_seg1_idx Unexecuted instantiation: ieee802_1x.c:hostapd_set_oper_centr_freq_seg1_idx Unexecuted instantiation: neighbor_db.c:hostapd_set_oper_centr_freq_seg1_idx Unexecuted instantiation: ndisc_snoop.c:hostapd_set_oper_centr_freq_seg1_idx Unexecuted instantiation: pmksa_cache_auth.c:hostapd_set_oper_centr_freq_seg1_idx Unexecuted instantiation: rrm.c:hostapd_set_oper_centr_freq_seg1_idx Unexecuted instantiation: sta_info.c:hostapd_set_oper_centr_freq_seg1_idx Unexecuted instantiation: utils.c:hostapd_set_oper_centr_freq_seg1_idx Unexecuted instantiation: vlan_init.c:hostapd_set_oper_centr_freq_seg1_idx Unexecuted instantiation: wmm.c:hostapd_set_oper_centr_freq_seg1_idx Unexecuted instantiation: wpa_auth.c:hostapd_set_oper_centr_freq_seg1_idx Unexecuted instantiation: wpa_auth_ft.c:hostapd_set_oper_centr_freq_seg1_idx Unexecuted instantiation: wpa_auth_glue.c:hostapd_set_oper_centr_freq_seg1_idx Unexecuted instantiation: wpa_auth_ie.c:hostapd_set_oper_centr_freq_seg1_idx Unexecuted instantiation: wps_hostapd.c:hostapd_set_oper_centr_freq_seg1_idx Unexecuted instantiation: x_snoop.c:hostapd_set_oper_centr_freq_seg1_idx Unexecuted instantiation: accounting.c:hostapd_set_oper_centr_freq_seg1_idx Unexecuted instantiation: ap_drv_ops.c:hostapd_set_oper_centr_freq_seg1_idx Unexecuted instantiation: ap_mlme.c:hostapd_set_oper_centr_freq_seg1_idx Unexecuted instantiation: airtime_policy.c:hostapd_set_oper_centr_freq_seg1_idx Unexecuted instantiation: authsrv.c:hostapd_set_oper_centr_freq_seg1_idx Unexecuted instantiation: bss_load.c:hostapd_set_oper_centr_freq_seg1_idx Unexecuted instantiation: dhcp_snoop.c:hostapd_set_oper_centr_freq_seg1_idx Unexecuted instantiation: eap_user_db.c:hostapd_set_oper_centr_freq_seg1_idx Unexecuted instantiation: eth_p_oui.c:hostapd_set_oper_centr_freq_seg1_idx Unexecuted instantiation: gas_serv.c:hostapd_set_oper_centr_freq_seg1_idx Unexecuted instantiation: tkip_countermeasures.c:hostapd_set_oper_centr_freq_seg1_idx Unexecuted instantiation: events.c:hostapd_set_oper_centr_freq_seg1_idx |
1336 | | |
1337 | | static inline u8 |
1338 | | hostapd_get_bw320_offset(struct hostapd_config *conf) |
1339 | 0 | { |
1340 | 0 | #ifdef CONFIG_IEEE80211BE |
1341 | 0 | if (conf->ieee80211be && is_6ghz_op_class(conf->op_class) && |
1342 | 0 | hostapd_get_oper_chwidth(conf) == CONF_OPER_CHWIDTH_320MHZ) |
1343 | 0 | return conf->eht_bw320_offset; |
1344 | 0 | #endif /* CONFIG_IEEE80211BE */ |
1345 | 0 | return 0; |
1346 | 0 | } Unexecuted instantiation: comeback_token.c:hostapd_get_bw320_offset Unexecuted instantiation: pasn_responder.c:hostapd_get_bw320_offset Unexecuted instantiation: p2p.c:hostapd_get_bw320_offset Unexecuted instantiation: ap-mgmt.c:hostapd_get_bw320_offset Unexecuted instantiation: ap_config.c:hostapd_get_bw320_offset Unexecuted instantiation: ap_list.c:hostapd_get_bw320_offset Unexecuted instantiation: beacon.c:hostapd_get_bw320_offset Unexecuted instantiation: dfs.c:hostapd_get_bw320_offset Unexecuted instantiation: hostapd.c:hostapd_get_bw320_offset Unexecuted instantiation: hs20.c:hostapd_get_bw320_offset Unexecuted instantiation: hw_features.c:hostapd_get_bw320_offset Unexecuted instantiation: ieee802_11_auth.c:hostapd_get_bw320_offset Unexecuted instantiation: ieee802_11.c:hostapd_get_bw320_offset Unexecuted instantiation: ieee802_11_ht.c:hostapd_get_bw320_offset Unexecuted instantiation: ieee802_11_shared.c:hostapd_get_bw320_offset Unexecuted instantiation: ieee802_1x.c:hostapd_get_bw320_offset Unexecuted instantiation: neighbor_db.c:hostapd_get_bw320_offset Unexecuted instantiation: ndisc_snoop.c:hostapd_get_bw320_offset Unexecuted instantiation: pmksa_cache_auth.c:hostapd_get_bw320_offset Unexecuted instantiation: rrm.c:hostapd_get_bw320_offset Unexecuted instantiation: sta_info.c:hostapd_get_bw320_offset Unexecuted instantiation: utils.c:hostapd_get_bw320_offset Unexecuted instantiation: vlan_init.c:hostapd_get_bw320_offset Unexecuted instantiation: wmm.c:hostapd_get_bw320_offset Unexecuted instantiation: wpa_auth.c:hostapd_get_bw320_offset Unexecuted instantiation: wpa_auth_ft.c:hostapd_get_bw320_offset Unexecuted instantiation: wpa_auth_glue.c:hostapd_get_bw320_offset Unexecuted instantiation: wpa_auth_ie.c:hostapd_get_bw320_offset Unexecuted instantiation: wps_hostapd.c:hostapd_get_bw320_offset Unexecuted instantiation: x_snoop.c:hostapd_get_bw320_offset Unexecuted instantiation: accounting.c:hostapd_get_bw320_offset Unexecuted instantiation: ap_drv_ops.c:hostapd_get_bw320_offset Unexecuted instantiation: ap_mlme.c:hostapd_get_bw320_offset Unexecuted instantiation: airtime_policy.c:hostapd_get_bw320_offset Unexecuted instantiation: authsrv.c:hostapd_get_bw320_offset Unexecuted instantiation: bss_load.c:hostapd_get_bw320_offset Unexecuted instantiation: dhcp_snoop.c:hostapd_get_bw320_offset Unexecuted instantiation: eap_user_db.c:hostapd_get_bw320_offset Unexecuted instantiation: eth_p_oui.c:hostapd_get_bw320_offset Unexecuted instantiation: gas_serv.c:hostapd_get_bw320_offset Unexecuted instantiation: tkip_countermeasures.c:hostapd_get_bw320_offset Unexecuted instantiation: events.c:hostapd_get_bw320_offset |
1347 | | |
1348 | | static inline void |
1349 | | hostapd_set_and_check_bw320_offset(struct hostapd_config *conf, |
1350 | | u8 bw320_offset) |
1351 | 2.20k | { |
1352 | | #ifdef CONFIG_IEEE80211BE |
1353 | | if (conf->ieee80211be && is_6ghz_op_class(conf->op_class) && |
1354 | | op_class_to_ch_width(conf->op_class) == CONF_OPER_CHWIDTH_320MHZ) { |
1355 | | if (conf->channel) { |
1356 | | /* If the channel is set, then calculate bw320_offset |
1357 | | * by center frequency segment 0. |
1358 | | */ |
1359 | | u8 seg0 = hostapd_get_oper_centr_freq_seg0_idx(conf); |
1360 | | |
1361 | | conf->eht_bw320_offset = (seg0 - 31) % 64 ? 2 : 1; |
1362 | | } else { |
1363 | | /* If the channel is not set, bw320_offset indicates |
1364 | | * preferred offset of 320 MHz. |
1365 | | */ |
1366 | | conf->eht_bw320_offset = bw320_offset; |
1367 | | } |
1368 | | } else { |
1369 | | conf->eht_bw320_offset = 0; |
1370 | | } |
1371 | | #endif /* CONFIG_IEEE80211BE */ |
1372 | 2.20k | } Unexecuted instantiation: comeback_token.c:hostapd_set_and_check_bw320_offset Unexecuted instantiation: pasn_responder.c:hostapd_set_and_check_bw320_offset Unexecuted instantiation: p2p.c:hostapd_set_and_check_bw320_offset Unexecuted instantiation: ap-mgmt.c:hostapd_set_and_check_bw320_offset ap_config.c:hostapd_set_and_check_bw320_offset Line | Count | Source | 1351 | 2.20k | { | 1352 | | #ifdef CONFIG_IEEE80211BE | 1353 | | if (conf->ieee80211be && is_6ghz_op_class(conf->op_class) && | 1354 | | op_class_to_ch_width(conf->op_class) == CONF_OPER_CHWIDTH_320MHZ) { | 1355 | | if (conf->channel) { | 1356 | | /* If the channel is set, then calculate bw320_offset | 1357 | | * by center frequency segment 0. | 1358 | | */ | 1359 | | u8 seg0 = hostapd_get_oper_centr_freq_seg0_idx(conf); | 1360 | | | 1361 | | conf->eht_bw320_offset = (seg0 - 31) % 64 ? 2 : 1; | 1362 | | } else { | 1363 | | /* If the channel is not set, bw320_offset indicates | 1364 | | * preferred offset of 320 MHz. | 1365 | | */ | 1366 | | conf->eht_bw320_offset = bw320_offset; | 1367 | | } | 1368 | | } else { | 1369 | | conf->eht_bw320_offset = 0; | 1370 | | } | 1371 | | #endif /* CONFIG_IEEE80211BE */ | 1372 | 2.20k | } |
Unexecuted instantiation: ap_list.c:hostapd_set_and_check_bw320_offset Unexecuted instantiation: beacon.c:hostapd_set_and_check_bw320_offset Unexecuted instantiation: dfs.c:hostapd_set_and_check_bw320_offset Unexecuted instantiation: hostapd.c:hostapd_set_and_check_bw320_offset Unexecuted instantiation: hs20.c:hostapd_set_and_check_bw320_offset Unexecuted instantiation: hw_features.c:hostapd_set_and_check_bw320_offset Unexecuted instantiation: ieee802_11_auth.c:hostapd_set_and_check_bw320_offset Unexecuted instantiation: ieee802_11.c:hostapd_set_and_check_bw320_offset Unexecuted instantiation: ieee802_11_ht.c:hostapd_set_and_check_bw320_offset Unexecuted instantiation: ieee802_11_shared.c:hostapd_set_and_check_bw320_offset Unexecuted instantiation: ieee802_1x.c:hostapd_set_and_check_bw320_offset Unexecuted instantiation: neighbor_db.c:hostapd_set_and_check_bw320_offset Unexecuted instantiation: ndisc_snoop.c:hostapd_set_and_check_bw320_offset Unexecuted instantiation: pmksa_cache_auth.c:hostapd_set_and_check_bw320_offset Unexecuted instantiation: rrm.c:hostapd_set_and_check_bw320_offset Unexecuted instantiation: sta_info.c:hostapd_set_and_check_bw320_offset Unexecuted instantiation: utils.c:hostapd_set_and_check_bw320_offset Unexecuted instantiation: vlan_init.c:hostapd_set_and_check_bw320_offset Unexecuted instantiation: wmm.c:hostapd_set_and_check_bw320_offset Unexecuted instantiation: wpa_auth.c:hostapd_set_and_check_bw320_offset Unexecuted instantiation: wpa_auth_ft.c:hostapd_set_and_check_bw320_offset Unexecuted instantiation: wpa_auth_glue.c:hostapd_set_and_check_bw320_offset Unexecuted instantiation: wpa_auth_ie.c:hostapd_set_and_check_bw320_offset Unexecuted instantiation: wps_hostapd.c:hostapd_set_and_check_bw320_offset Unexecuted instantiation: x_snoop.c:hostapd_set_and_check_bw320_offset Unexecuted instantiation: accounting.c:hostapd_set_and_check_bw320_offset Unexecuted instantiation: ap_drv_ops.c:hostapd_set_and_check_bw320_offset Unexecuted instantiation: ap_mlme.c:hostapd_set_and_check_bw320_offset Unexecuted instantiation: airtime_policy.c:hostapd_set_and_check_bw320_offset Unexecuted instantiation: authsrv.c:hostapd_set_and_check_bw320_offset Unexecuted instantiation: bss_load.c:hostapd_set_and_check_bw320_offset Unexecuted instantiation: dhcp_snoop.c:hostapd_set_and_check_bw320_offset Unexecuted instantiation: eap_user_db.c:hostapd_set_and_check_bw320_offset Unexecuted instantiation: eth_p_oui.c:hostapd_set_and_check_bw320_offset Unexecuted instantiation: gas_serv.c:hostapd_set_and_check_bw320_offset Unexecuted instantiation: tkip_countermeasures.c:hostapd_set_and_check_bw320_offset Unexecuted instantiation: events.c:hostapd_set_and_check_bw320_offset |
1373 | | |
1374 | | |
1375 | | int hostapd_mac_comp(const void *a, const void *b); |
1376 | | struct hostapd_config * hostapd_config_defaults(void); |
1377 | | void hostapd_config_defaults_bss(struct hostapd_bss_config *bss); |
1378 | | void hostapd_config_free_radius_attr(struct hostapd_radius_attr *attr); |
1379 | | void hostapd_config_free_eap_user(struct hostapd_eap_user *user); |
1380 | | void hostapd_config_free_eap_users(struct hostapd_eap_user *user); |
1381 | | void hostapd_config_clear_wpa_psk(struct hostapd_wpa_psk **p); |
1382 | | void hostapd_config_clear_rxkhs(struct hostapd_bss_config *conf); |
1383 | | void hostapd_config_free_bss(struct hostapd_bss_config *conf); |
1384 | | void hostapd_config_free(struct hostapd_config *conf); |
1385 | | int hostapd_maclist_found(struct mac_acl_entry *list, int num_entries, |
1386 | | const u8 *addr, struct vlan_description *vlan_id); |
1387 | | const u8 * hostapd_get_psk(const struct hostapd_bss_config *conf, |
1388 | | const u8 *addr, const u8 *p2p_dev_addr, |
1389 | | const u8 *prev_psk, int *vlan_id); |
1390 | | int hostapd_setup_wpa_psk(struct hostapd_bss_config *conf); |
1391 | | int hostapd_vlan_valid(struct hostapd_vlan *vlan, |
1392 | | struct vlan_description *vlan_desc); |
1393 | | const char * hostapd_get_vlan_id_ifname(struct hostapd_vlan *vlan, |
1394 | | int vlan_id); |
1395 | | struct hostapd_radius_attr * |
1396 | | hostapd_config_get_radius_attr(struct hostapd_radius_attr *attr, u8 type); |
1397 | | struct hostapd_radius_attr * hostapd_parse_radius_attr(const char *value); |
1398 | | int hostapd_config_check(struct hostapd_config *conf, int full_config); |
1399 | | void hostapd_set_security_params(struct hostapd_bss_config *bss, |
1400 | | int full_config); |
1401 | | int hostapd_sae_pw_id_in_use(struct hostapd_bss_config *conf); |
1402 | | bool hostapd_sae_pk_in_use(struct hostapd_bss_config *conf); |
1403 | | bool hostapd_sae_pk_exclusively(struct hostapd_bss_config *conf); |
1404 | | int hostapd_setup_sae_pt(struct hostapd_bss_config *conf); |
1405 | | int hostapd_acl_comp(const void *a, const void *b); |
1406 | | int hostapd_add_acl_maclist(struct mac_acl_entry **acl, int *num, |
1407 | | int vlan_id, const u8 *addr); |
1408 | | void hostapd_remove_acl_mac(struct mac_acl_entry **acl, int *num, |
1409 | | const u8 *addr); |
1410 | | bool hostapd_config_check_bss_6g(struct hostapd_bss_config *bss); |
1411 | | |
1412 | | #endif /* HOSTAPD_CONFIG_H */ |