1 /* 2 * hostapd / Configuration definitions and helpers functions 3 * Copyright (c) 2003-2015, 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 "wps/wps.h" 19 #include "fst/fst.h" 20 #include "vlan.h" 21 22 /** 23 * mesh_conf - local MBSS state and settings 24 */ 25 struct mesh_conf { 26 u8 meshid[32]; 27 u8 meshid_len; 28 /* Active Path Selection Protocol Identifier */ 29 u8 mesh_pp_id; 30 /* Active Path Selection Metric Identifier */ 31 u8 mesh_pm_id; 32 /* Congestion Control Mode Identifier */ 33 u8 mesh_cc_id; 34 /* Synchronization Protocol Identifier */ 35 u8 mesh_sp_id; 36 /* Authentication Protocol Identifier */ 37 u8 mesh_auth_id; 38 u8 *rsn_ie; 39 int rsn_ie_len; 40 #define MESH_CONF_SEC_NONE BIT(0) 41 #define MESH_CONF_SEC_AUTH BIT(1) 42 #define MESH_CONF_SEC_AMPE BIT(2) 43 unsigned int security; 44 enum mfp_options ieee80211w; 45 int ocv; 46 unsigned int pairwise_cipher; 47 unsigned int group_cipher; 48 unsigned int mgmt_group_cipher; 49 int dot11MeshMaxRetries; 50 int dot11MeshRetryTimeout; /* msec */ 51 int dot11MeshConfirmTimeout; /* msec */ 52 int dot11MeshHoldingTimeout; /* msec */ 53 }; 54 55 #define MAX_STA_COUNT 2007 56 #define MAX_VLAN_ID 4094 57 58 typedef u8 macaddr[ETH_ALEN]; 59 60 struct mac_acl_entry { 61 macaddr addr; 62 struct vlan_description vlan_id; 63 }; 64 65 struct hostapd_radius_servers; 66 struct ft_remote_r0kh; 67 struct ft_remote_r1kh; 68 69 #define NUM_WEP_KEYS 4 70 struct hostapd_wep_keys { 71 u8 idx; 72 u8 *key[NUM_WEP_KEYS]; 73 size_t len[NUM_WEP_KEYS]; 74 int keys_set; 75 size_t default_len; /* key length used for dynamic key generation */ 76 }; 77 78 typedef enum hostap_security_policy { 79 SECURITY_PLAINTEXT = 0, 80 SECURITY_STATIC_WEP = 1, 81 SECURITY_IEEE_802_1X = 2, 82 SECURITY_WPA_PSK = 3, 83 SECURITY_WPA = 4, 84 SECURITY_OSEN = 5 85 } secpolicy; 86 87 struct hostapd_ssid { 88 u8 ssid[SSID_MAX_LEN]; 89 size_t ssid_len; 90 unsigned int ssid_set:1; 91 unsigned int utf8_ssid:1; 92 unsigned int wpa_passphrase_set:1; 93 unsigned int wpa_psk_set:1; 94 95 char vlan[IFNAMSIZ + 1]; 96 secpolicy security_policy; 97 98 struct hostapd_wpa_psk *wpa_psk; 99 char *wpa_passphrase; 100 char *wpa_psk_file; 101 102 struct hostapd_wep_keys wep; 103 104 #define DYNAMIC_VLAN_DISABLED 0 105 #define DYNAMIC_VLAN_OPTIONAL 1 106 #define DYNAMIC_VLAN_REQUIRED 2 107 int dynamic_vlan; 108 #define DYNAMIC_VLAN_NAMING_WITHOUT_DEVICE 0 109 #define DYNAMIC_VLAN_NAMING_WITH_DEVICE 1 110 #define DYNAMIC_VLAN_NAMING_END 2 111 int vlan_naming; 112 int per_sta_vif; 113 #ifdef CONFIG_FULL_DYNAMIC_VLAN 114 char *vlan_tagged_interface; 115 #endif /* CONFIG_FULL_DYNAMIC_VLAN */ 116 }; 117 118 119 #define VLAN_ID_WILDCARD -1 120 121 struct hostapd_vlan { 122 struct hostapd_vlan *next; 123 int vlan_id; /* VLAN ID or -1 (VLAN_ID_WILDCARD) for wildcard entry */ 124 struct vlan_description vlan_desc; 125 char ifname[IFNAMSIZ + 1]; 126 char bridge[IFNAMSIZ + 1]; 127 int configured; 128 int dynamic_vlan; 129 #ifdef CONFIG_FULL_DYNAMIC_VLAN 130 131 #define DVLAN_CLEAN_WLAN_PORT 0x8 132 int clean; 133 #endif /* CONFIG_FULL_DYNAMIC_VLAN */ 134 }; 135 136 #define PMK_LEN 32 137 #define KEYID_LEN 32 138 #define MIN_PASSPHRASE_LEN 8 139 #define MAX_PASSPHRASE_LEN 63 140 struct hostapd_sta_wpa_psk_short { 141 struct hostapd_sta_wpa_psk_short *next; 142 unsigned int is_passphrase:1; 143 u8 psk[PMK_LEN]; 144 char passphrase[MAX_PASSPHRASE_LEN + 1]; 145 int ref; /* (number of references held) - 1 */ 146 }; 147 148 struct hostapd_wpa_psk { 149 struct hostapd_wpa_psk *next; 150 int group; 151 char keyid[KEYID_LEN]; 152 u8 psk[PMK_LEN]; 153 u8 addr[ETH_ALEN]; 154 u8 p2p_dev_addr[ETH_ALEN]; 155 int vlan_id; 156 }; 157 158 struct hostapd_eap_user { 159 struct hostapd_eap_user *next; 160 u8 *identity; 161 size_t identity_len; 162 struct { 163 int vendor; 164 u32 method; 165 } methods[EAP_MAX_METHODS]; 166 u8 *password; 167 size_t password_len; 168 u8 *salt; 169 size_t salt_len; /* non-zero when password is salted */ 170 int phase2; 171 int force_version; 172 unsigned int wildcard_prefix:1; 173 unsigned int password_hash:1; /* whether password is hashed with 174 * nt_password_hash() */ 175 unsigned int remediation:1; 176 unsigned int macacl:1; 177 int ttls_auth; /* EAP_TTLS_AUTH_* bitfield */ 178 struct hostapd_radius_attr *accept_attr; 179 u32 t_c_timestamp; 180 }; 181 182 struct hostapd_radius_attr { 183 u8 type; 184 struct wpabuf *val; 185 struct hostapd_radius_attr *next; 186 }; 187 188 189 #define NUM_TX_QUEUES 4 190 191 struct hostapd_tx_queue_params { 192 int aifs; 193 int cwmin; 194 int cwmax; 195 int burst; /* maximum burst time in 0.1 ms, i.e., 10 = 1 ms */ 196 }; 197 198 199 #define MAX_ROAMING_CONSORTIUM_LEN 15 200 201 struct hostapd_roaming_consortium { 202 u8 len; 203 u8 oi[MAX_ROAMING_CONSORTIUM_LEN]; 204 }; 205 206 struct hostapd_lang_string { 207 u8 lang[3]; 208 u8 name_len; 209 u8 name[252]; 210 }; 211 212 struct hostapd_venue_url { 213 u8 venue_number; 214 u8 url_len; 215 u8 url[254]; 216 }; 217 218 #define MAX_NAI_REALMS 10 219 #define MAX_NAI_REALMLEN 255 220 #define MAX_NAI_EAP_METHODS 5 221 #define MAX_NAI_AUTH_TYPES 4 222 struct hostapd_nai_realm_data { 223 u8 encoding; 224 char realm_buf[MAX_NAI_REALMLEN + 1]; 225 char *realm[MAX_NAI_REALMS]; 226 u8 eap_method_count; 227 struct hostapd_nai_realm_eap { 228 u8 eap_method; 229 u8 num_auths; 230 u8 auth_id[MAX_NAI_AUTH_TYPES]; 231 u8 auth_val[MAX_NAI_AUTH_TYPES]; 232 } eap_method[MAX_NAI_EAP_METHODS]; 233 }; 234 235 struct anqp_element { 236 struct dl_list list; 237 u16 infoid; 238 struct wpabuf *payload; 239 }; 240 241 struct fils_realm { 242 struct dl_list list; 243 u8 hash[2]; 244 char realm[]; 245 }; 246 247 struct sae_password_entry { 248 struct sae_password_entry *next; 249 char *password; 250 char *identifier; 251 u8 peer_addr[ETH_ALEN]; 252 int vlan_id; 253 }; 254 255 /** 256 * struct hostapd_bss_config - Per-BSS configuration 257 */ 258 struct hostapd_bss_config { 259 char iface[IFNAMSIZ + 1]; 260 char bridge[IFNAMSIZ + 1]; 261 char vlan_bridge[IFNAMSIZ + 1]; 262 char wds_bridge[IFNAMSIZ + 1]; 263 264 enum hostapd_logger_level logger_syslog_level, logger_stdout_level; 265 266 unsigned int logger_syslog; /* module bitfield */ 267 unsigned int logger_stdout; /* module bitfield */ 268 269 int max_num_sta; /* maximum number of STAs in station table */ 270 271 int dtim_period; 272 unsigned int bss_load_update_period; 273 unsigned int chan_util_avg_period; 274 275 int ieee802_1x; /* use IEEE 802.1X */ 276 int eapol_version; 277 int eap_server; /* Use internal EAP server instead of external 278 * RADIUS server */ 279 struct hostapd_eap_user *eap_user; 280 char *eap_user_sqlite; 281 char *eap_sim_db; 282 unsigned int eap_sim_db_timeout; 283 int eap_server_erp; /* Whether ERP is enabled on internal EAP server */ 284 struct hostapd_ip_addr own_ip_addr; 285 char *nas_identifier; 286 struct hostapd_radius_servers *radius; 287 int acct_interim_interval; 288 int radius_request_cui; 289 struct hostapd_radius_attr *radius_auth_req_attr; 290 struct hostapd_radius_attr *radius_acct_req_attr; 291 int radius_das_port; 292 unsigned int radius_das_time_window; 293 int radius_das_require_event_timestamp; 294 int radius_das_require_message_authenticator; 295 struct hostapd_ip_addr radius_das_client_addr; 296 u8 *radius_das_shared_secret; 297 size_t radius_das_shared_secret_len; 298 299 struct hostapd_ssid ssid; 300 301 char *eap_req_id_text; /* optional displayable message sent with 302 * EAP Request-Identity */ 303 size_t eap_req_id_text_len; 304 int eapol_key_index_workaround; 305 306 size_t default_wep_key_len; 307 int individual_wep_key_len; 308 int wep_rekeying_period; 309 int broadcast_key_idx_min, broadcast_key_idx_max; 310 int eap_reauth_period; 311 int erp_send_reauth_start; 312 char *erp_domain; 313 314 int ieee802_11f; /* use IEEE 802.11f (IAPP) */ 315 char iapp_iface[IFNAMSIZ + 1]; /* interface used with IAPP broadcast 316 * frames */ 317 318 enum macaddr_acl { 319 ACCEPT_UNLESS_DENIED = 0, 320 DENY_UNLESS_ACCEPTED = 1, 321 USE_EXTERNAL_RADIUS_AUTH = 2 322 } macaddr_acl; 323 struct mac_acl_entry *accept_mac; 324 int num_accept_mac; 325 struct mac_acl_entry *deny_mac; 326 int num_deny_mac; 327 int wds_sta; 328 int isolate; 329 int start_disabled; 330 331 int auth_algs; /* bitfield of allowed IEEE 802.11 authentication 332 * algorithms, WPA_AUTH_ALG_{OPEN,SHARED,LEAP} */ 333 334 int wpa; /* bitfield of WPA_PROTO_WPA, WPA_PROTO_RSN */ 335 int wpa_key_mgmt; 336 #ifdef CONFIG_IEEE80211W 337 enum mfp_options ieee80211w; 338 int group_mgmt_cipher; 339 /* dot11AssociationSAQueryMaximumTimeout (in TUs) */ 340 unsigned int assoc_sa_query_max_timeout; 341 /* dot11AssociationSAQueryRetryTimeout (in TUs) */ 342 int assoc_sa_query_retry_timeout; 343 #endif /* CONFIG_IEEE80211W */ 344 #ifdef CONFIG_OCV 345 int ocv; /* Operating Channel Validation */ 346 #endif /* CONFIG_OCV */ 347 enum { 348 PSK_RADIUS_IGNORED = 0, 349 PSK_RADIUS_ACCEPTED = 1, 350 PSK_RADIUS_REQUIRED = 2 351 } wpa_psk_radius; 352 int wpa_pairwise; 353 int group_cipher; /* wpa_group value override from configuation */ 354 int wpa_group; 355 int wpa_group_rekey; 356 int wpa_group_rekey_set; 357 int wpa_strict_rekey; 358 int wpa_gmk_rekey; 359 int wpa_ptk_rekey; 360 u32 wpa_group_update_count; 361 u32 wpa_pairwise_update_count; 362 int wpa_disable_eapol_key_retries; 363 int rsn_pairwise; 364 int rsn_preauth; 365 char *rsn_preauth_interfaces; 366 367 #ifdef CONFIG_IEEE80211R_AP 368 /* IEEE 802.11r - Fast BSS Transition */ 369 u8 mobility_domain[MOBILITY_DOMAIN_ID_LEN]; 370 u8 r1_key_holder[FT_R1KH_ID_LEN]; 371 u32 r0_key_lifetime; /* PMK-R0 lifetime seconds */ 372 int rkh_pos_timeout; 373 int rkh_neg_timeout; 374 int rkh_pull_timeout; /* ms */ 375 int rkh_pull_retries; 376 u32 reassociation_deadline; 377 struct ft_remote_r0kh *r0kh_list; 378 struct ft_remote_r1kh *r1kh_list; 379 int pmk_r1_push; 380 int ft_over_ds; 381 int ft_psk_generate_local; 382 int r1_max_key_lifetime; 383 #endif /* CONFIG_IEEE80211R_AP */ 384 385 char *ctrl_interface; /* directory for UNIX domain sockets */ 386 #ifndef CONFIG_NATIVE_WINDOWS 387 gid_t ctrl_interface_gid; 388 #endif /* CONFIG_NATIVE_WINDOWS */ 389 int ctrl_interface_gid_set; 390 391 char *ca_cert; 392 char *server_cert; 393 char *private_key; 394 char *private_key_passwd; 395 char *check_cert_subject; 396 int check_crl; 397 int check_crl_strict; 398 unsigned int crl_reload_interval; 399 unsigned int tls_session_lifetime; 400 unsigned int tls_flags; 401 char *ocsp_stapling_response; 402 char *ocsp_stapling_response_multi; 403 char *dh_file; 404 char *openssl_ciphers; 405 char *openssl_ecdh_curves; 406 u8 *pac_opaque_encr_key; 407 u8 *eap_fast_a_id; 408 size_t eap_fast_a_id_len; 409 char *eap_fast_a_id_info; 410 int eap_fast_prov; 411 int pac_key_lifetime; 412 int pac_key_refresh_time; 413 int eap_sim_aka_result_ind; 414 int tnc; 415 int fragment_size; 416 u16 pwd_group; 417 418 char *radius_server_clients; 419 int radius_server_auth_port; 420 int radius_server_acct_port; 421 int radius_server_ipv6; 422 423 int use_pae_group_addr; /* Whether to send EAPOL frames to PAE group 424 * address instead of individual address 425 * (for driver_wired.c). 426 */ 427 428 int ap_max_inactivity; 429 int ignore_broadcast_ssid; 430 int no_probe_resp_if_max_sta; 431 432 int wmm_enabled; 433 int wmm_uapsd; 434 435 struct hostapd_vlan *vlan; 436 437 macaddr bssid; 438 439 /* 440 * Maximum listen interval that STAs can use when associating with this 441 * BSS. If a STA tries to use larger value, the association will be 442 * denied with status code 51. 443 */ 444 u16 max_listen_interval; 445 446 int disable_pmksa_caching; 447 int okc; /* Opportunistic Key Caching */ 448 449 int wps_state; 450 #ifdef CONFIG_WPS 451 int wps_independent; 452 int ap_setup_locked; 453 u8 uuid[16]; 454 char *wps_pin_requests; 455 char *device_name; 456 char *manufacturer; 457 char *model_name; 458 char *model_number; 459 char *serial_number; 460 u8 device_type[WPS_DEV_TYPE_LEN]; 461 char *config_methods; 462 u8 os_version[4]; 463 char *ap_pin; 464 int skip_cred_build; 465 u8 *extra_cred; 466 size_t extra_cred_len; 467 int wps_cred_processing; 468 int wps_cred_add_sae; 469 int force_per_enrollee_psk; 470 u8 *ap_settings; 471 size_t ap_settings_len; 472 struct hostapd_ssid multi_ap_backhaul_ssid; 473 char *upnp_iface; 474 char *friendly_name; 475 char *manufacturer_url; 476 char *model_description; 477 char *model_url; 478 char *upc; 479 struct wpabuf *wps_vendor_ext[MAX_WPS_VENDOR_EXTENSIONS]; 480 int wps_nfc_pw_from_config; 481 int wps_nfc_dev_pw_id; 482 struct wpabuf *wps_nfc_dh_pubkey; 483 struct wpabuf *wps_nfc_dh_privkey; 484 struct wpabuf *wps_nfc_dev_pw; 485 #endif /* CONFIG_WPS */ 486 int pbc_in_m1; 487 char *server_id; 488 489 #define P2P_ENABLED BIT(0) 490 #define P2P_GROUP_OWNER BIT(1) 491 #define P2P_GROUP_FORMATION BIT(2) 492 #define P2P_MANAGE BIT(3) 493 #define P2P_ALLOW_CROSS_CONNECTION BIT(4) 494 int p2p; 495 #ifdef CONFIG_P2P 496 u8 ip_addr_go[4]; 497 u8 ip_addr_mask[4]; 498 u8 ip_addr_start[4]; 499 u8 ip_addr_end[4]; 500 #endif /* CONFIG_P2P */ 501 502 int disassoc_low_ack; 503 int skip_inactivity_poll; 504 505 #define TDLS_PROHIBIT BIT(0) 506 #define TDLS_PROHIBIT_CHAN_SWITCH BIT(1) 507 int tdls; 508 int disable_11n; 509 int disable_11ac; 510 511 /* IEEE 802.11v */ 512 int time_advertisement; 513 char *time_zone; 514 int wnm_sleep_mode; 515 int wnm_sleep_mode_no_keys; 516 int bss_transition; 517 518 /* IEEE 802.11u - Interworking */ 519 int interworking; 520 int access_network_type; 521 int internet; 522 int asra; 523 int esr; 524 int uesa; 525 int venue_info_set; 526 u8 venue_group; 527 u8 venue_type; 528 u8 hessid[ETH_ALEN]; 529 530 /* IEEE 802.11u - Roaming Consortium list */ 531 unsigned int roaming_consortium_count; 532 struct hostapd_roaming_consortium *roaming_consortium; 533 534 /* IEEE 802.11u - Venue Name duples */ 535 unsigned int venue_name_count; 536 struct hostapd_lang_string *venue_name; 537 538 /* Venue URL duples */ 539 unsigned int venue_url_count; 540 struct hostapd_venue_url *venue_url; 541 542 /* IEEE 802.11u - Network Authentication Type */ 543 u8 *network_auth_type; 544 size_t network_auth_type_len; 545 546 /* IEEE 802.11u - IP Address Type Availability */ 547 u8 ipaddr_type_availability; 548 u8 ipaddr_type_configured; 549 550 /* IEEE 802.11u - 3GPP Cellular Network */ 551 u8 *anqp_3gpp_cell_net; 552 size_t anqp_3gpp_cell_net_len; 553 554 /* IEEE 802.11u - Domain Name */ 555 u8 *domain_name; 556 size_t domain_name_len; 557 558 unsigned int nai_realm_count; 559 struct hostapd_nai_realm_data *nai_realm_data; 560 561 struct dl_list anqp_elem; /* list of struct anqp_element */ 562 563 u16 gas_comeback_delay; 564 size_t gas_frag_limit; 565 int gas_address3; 566 567 u8 qos_map_set[16 + 2 * 21]; 568 unsigned int qos_map_set_len; 569 570 int osen; 571 int proxy_arp; 572 int na_mcast_to_ucast; 573 #ifdef CONFIG_HS20 574 int hs20; 575 int hs20_release; 576 int disable_dgaf; 577 u16 anqp_domain_id; 578 unsigned int hs20_oper_friendly_name_count; 579 struct hostapd_lang_string *hs20_oper_friendly_name; 580 u8 *hs20_wan_metrics; 581 u8 *hs20_connection_capability; 582 size_t hs20_connection_capability_len; 583 u8 *hs20_operating_class; 584 u8 hs20_operating_class_len; 585 struct hs20_icon { 586 u16 width; 587 u16 height; 588 char language[3]; 589 char type[256]; 590 char name[256]; 591 char file[256]; 592 } *hs20_icons; 593 size_t hs20_icons_count; 594 u8 osu_ssid[SSID_MAX_LEN]; 595 size_t osu_ssid_len; 596 struct hs20_osu_provider { 597 unsigned int friendly_name_count; 598 struct hostapd_lang_string *friendly_name; 599 char *server_uri; 600 int *method_list; 601 char **icons; 602 size_t icons_count; 603 char *osu_nai; 604 char *osu_nai2; 605 unsigned int service_desc_count; 606 struct hostapd_lang_string *service_desc; 607 } *hs20_osu_providers, *last_osu; 608 size_t hs20_osu_providers_count; 609 size_t hs20_osu_providers_nai_count; 610 char **hs20_operator_icon; 611 size_t hs20_operator_icon_count; 612 unsigned int hs20_deauth_req_timeout; 613 char *subscr_remediation_url; 614 u8 subscr_remediation_method; 615 char *hs20_sim_provisioning_url; 616 char *t_c_filename; 617 u32 t_c_timestamp; 618 char *t_c_server_url; 619 #endif /* CONFIG_HS20 */ 620 621 u8 wps_rf_bands; /* RF bands for WPS (WPS_RF_*) */ 622 623 #ifdef CONFIG_RADIUS_TEST 624 char *dump_msk_file; 625 #endif /* CONFIG_RADIUS_TEST */ 626 627 struct wpabuf *vendor_elements; 628 struct wpabuf *assocresp_elements; 629 630 unsigned int sae_anti_clogging_threshold; 631 unsigned int sae_sync; 632 int sae_require_mfp; 633 int *sae_groups; 634 struct sae_password_entry *sae_passwords; 635 636 char *wowlan_triggers; /* Wake-on-WLAN triggers */ 637 638 #ifdef CONFIG_TESTING_OPTIONS 639 u8 bss_load_test[5]; 640 u8 bss_load_test_set; 641 struct wpabuf *own_ie_override; 642 int sae_reflection_attack; 643 struct wpabuf *sae_commit_override; 644 #endif /* CONFIG_TESTING_OPTIONS */ 645 646 #define MESH_ENABLED BIT(0) 647 int mesh; 648 649 u8 radio_measurements[RRM_CAPABILITIES_IE_LEN]; 650 651 int vendor_vht; 652 int use_sta_nsts; 653 654 char *no_probe_resp_if_seen_on; 655 char *no_auth_if_seen_on; 656 657 int pbss; 658 659 #ifdef CONFIG_MBO 660 int mbo_enabled; 661 /** 662 * oce - Enable OCE in AP and/or STA-CFON mode 663 * - BIT(0) is Reserved 664 * - Set BIT(1) to enable OCE in STA-CFON mode 665 * - Set BIT(2) to enable OCE in AP mode 666 */ 667 unsigned int oce; 668 int mbo_cell_data_conn_pref; 669 #endif /* CONFIG_MBO */ 670 671 int ftm_responder; 672 int ftm_initiator; 673 674 #ifdef CONFIG_FILS 675 u8 fils_cache_id[FILS_CACHE_ID_LEN]; 676 int fils_cache_id_set; 677 struct dl_list fils_realms; /* list of struct fils_realm */ 678 int fils_dh_group; 679 struct hostapd_ip_addr dhcp_server; 680 int dhcp_rapid_commit_proxy; 681 unsigned int fils_hlp_wait_time; 682 u16 dhcp_server_port; 683 u16 dhcp_relay_port; 684 #endif /* CONFIG_FILS */ 685 686 int multicast_to_unicast; 687 688 int broadcast_deauth; 689 690 #ifdef CONFIG_DPP 691 char *dpp_connector; 692 struct wpabuf *dpp_netaccesskey; 693 unsigned int dpp_netaccesskey_expiry; 694 struct wpabuf *dpp_csign; 695 #endif /* CONFIG_DPP */ 696 697 #ifdef CONFIG_OWE 698 macaddr owe_transition_bssid; 699 u8 owe_transition_ssid[SSID_MAX_LEN]; 700 size_t owe_transition_ssid_len; 701 char owe_transition_ifname[IFNAMSIZ + 1]; 702 int *owe_groups; 703 #endif /* CONFIG_OWE */ 704 705 int coloc_intf_reporting; 706 707 u8 send_probe_response; 708 709 #define BACKHAUL_BSS 1 710 #define FRONTHAUL_BSS 2 711 int multi_ap; /* bitmap of BACKHAUL_BSS, FRONTHAUL_BSS */ 712 }; 713 714 /** 715 * struct he_phy_capabilities_info - HE PHY capabilities 716 */ 717 struct he_phy_capabilities_info { 718 Boolean he_su_beamformer; 719 Boolean he_su_beamformee; 720 Boolean he_mu_beamformer; 721 }; 722 723 /** 724 * struct he_operation - HE operation 725 */ 726 struct he_operation { 727 u8 he_bss_color; 728 u8 he_default_pe_duration; 729 u8 he_twt_required; 730 u8 he_rts_threshold; 731 }; 732 733 /** 734 * struct hostapd_config - Per-radio interface configuration 735 */ 736 struct hostapd_config { 737 struct hostapd_bss_config **bss, *last_bss; 738 size_t num_bss; 739 740 u16 beacon_int; 741 int rts_threshold; 742 int fragm_threshold; 743 u8 channel; 744 u8 acs; 745 struct wpa_freq_range_list acs_ch_list; 746 int acs_exclude_dfs; 747 enum hostapd_hw_mode hw_mode; /* HOSTAPD_MODE_IEEE80211A, .. */ 748 enum { 749 LONG_PREAMBLE = 0, 750 SHORT_PREAMBLE = 1 751 } preamble; 752 753 int *supported_rates; 754 int *basic_rates; 755 unsigned int beacon_rate; 756 enum beacon_rate_type rate_type; 757 758 const struct wpa_driver_ops *driver; 759 char *driver_params; 760 761 int ap_table_max_size; 762 int ap_table_expiration_time; 763 764 unsigned int track_sta_max_num; 765 unsigned int track_sta_max_age; 766 767 char country[3]; /* first two octets: country code as described in 768 * ISO/IEC 3166-1. Third octet: 769 * ' ' (ascii 32): all environments 770 * 'O': Outdoor environemnt only 771 * 'I': Indoor environment only 772 * 'X': Used with noncountry entity ("XXX") 773 * 0x00..0x31: identifying IEEE 802.11 standard 774 * Annex E table (0x04 = global table) 775 */ 776 777 int ieee80211d; 778 779 int ieee80211h; /* DFS */ 780 781 /* 782 * Local power constraint is an octet encoded as an unsigned integer in 783 * units of decibels. Invalid value -1 indicates that Power Constraint 784 * element will not be added. 785 */ 786 int local_pwr_constraint; 787 788 /* Control Spectrum Management bit */ 789 int spectrum_mgmt_required; 790 791 struct hostapd_tx_queue_params tx_queue[NUM_TX_QUEUES]; 792 793 /* 794 * WMM AC parameters, in same order as 802.1D, i.e. 795 * 0 = BE (best effort) 796 * 1 = BK (background) 797 * 2 = VI (video) 798 * 3 = VO (voice) 799 */ 800 struct hostapd_wmm_ac_params wmm_ac_params[4]; 801 802 int ht_op_mode_fixed; 803 u16 ht_capab; 804 int ieee80211n; 805 int secondary_channel; 806 int no_pri_sec_switch; 807 int require_ht; 808 int obss_interval; 809 u32 vht_capab; 810 int ieee80211ac; 811 int require_vht; 812 u8 vht_oper_chwidth; 813 u8 vht_oper_centr_freq_seg0_idx; 814 u8 vht_oper_centr_freq_seg1_idx; 815 u8 ht40_plus_minus_allowed; 816 817 /* Use driver-generated interface addresses when adding multiple BSSs */ 818 u8 use_driver_iface_addr; 819 820 #ifdef CONFIG_FST 821 struct fst_iface_cfg fst_cfg; 822 #endif /* CONFIG_FST */ 823 824 #ifdef CONFIG_P2P 825 u8 p2p_go_ctwindow; 826 #endif /* CONFIG_P2P */ 827 828 #ifdef CONFIG_TESTING_OPTIONS 829 double ignore_probe_probability; 830 double ignore_auth_probability; 831 double ignore_assoc_probability; 832 double ignore_reassoc_probability; 833 double corrupt_gtk_rekey_mic_probability; 834 int ecsa_ie_only; 835 #endif /* CONFIG_TESTING_OPTIONS */ 836 837 #ifdef CONFIG_ACS 838 unsigned int acs_num_scans; 839 struct acs_bias { 840 int channel; 841 double bias; 842 } *acs_chan_bias; 843 unsigned int num_acs_chan_bias; 844 #endif /* CONFIG_ACS */ 845 846 struct wpabuf *lci; 847 struct wpabuf *civic; 848 int stationary_ap; 849 850 int ieee80211ax; 851 #ifdef CONFIG_IEEE80211AX 852 struct he_phy_capabilities_info he_phy_capab; 853 struct he_operation he_op; 854 struct ieee80211_he_mu_edca_parameter_set he_mu_edca; 855 #endif /* CONFIG_IEEE80211AX */ 856 857 /* VHT enable/disable config from CHAN_SWITCH */ 858 #define CH_SWITCH_VHT_ENABLED BIT(0) 859 #define CH_SWITCH_VHT_DISABLED BIT(1) 860 unsigned int ch_switch_vht_config; 861 862 int rssi_reject_assoc_rssi; 863 int rssi_reject_assoc_timeout; 864 }; 865 866 867 int hostapd_mac_comp(const void *a, const void *b); 868 struct hostapd_config * hostapd_config_defaults(void); 869 void hostapd_config_defaults_bss(struct hostapd_bss_config *bss); 870 void hostapd_config_free_eap_user(struct hostapd_eap_user *user); 871 void hostapd_config_free_eap_users(struct hostapd_eap_user *user); 872 void hostapd_config_clear_wpa_psk(struct hostapd_wpa_psk **p); 873 void hostapd_config_free_bss(struct hostapd_bss_config *conf); 874 void hostapd_config_free(struct hostapd_config *conf); 875 int hostapd_maclist_found(struct mac_acl_entry *list, int num_entries, 876 const u8 *addr, struct vlan_description *vlan_id); 877 int hostapd_rate_found(int *list, int rate); 878 const u8 * hostapd_get_psk(const struct hostapd_bss_config *conf, 879 const u8 *addr, const u8 *p2p_dev_addr, 880 const u8 *prev_psk, int *vlan_id); 881 int hostapd_setup_wpa_psk(struct hostapd_bss_config *conf); 882 int hostapd_vlan_valid(struct hostapd_vlan *vlan, 883 struct vlan_description *vlan_desc); 884 const char * hostapd_get_vlan_id_ifname(struct hostapd_vlan *vlan, 885 int vlan_id); 886 struct hostapd_radius_attr * 887 hostapd_config_get_radius_attr(struct hostapd_radius_attr *attr, u8 type); 888 int hostapd_config_check(struct hostapd_config *conf, int full_config); 889 void hostapd_set_security_params(struct hostapd_bss_config *bss, 890 int full_config); 891 int hostapd_sae_pw_id_in_use(struct hostapd_bss_config *conf); 892 893 #endif /* HOSTAPD_CONFIG_H */ 894