xref: /freebsd/contrib/wpa/src/ap/ap_config.h (revision 5b9c547c)
1 /*
2  * hostapd / Configuration definitions and helpers functions
3  * Copyright (c) 2003-2012, 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 "ip_addr.h"
14 #include "common/wpa_common.h"
15 #include "common/ieee802_11_common.h"
16 #include "wps/wps.h"
17 
18 /**
19  * mesh_conf - local MBSS state and settings
20  */
21 struct mesh_conf {
22 	u8 meshid[32];
23 	u8 meshid_len;
24 	/* Active Path Selection Protocol Identifier */
25 	u8 mesh_pp_id;
26 	/* Active Path Selection Metric Identifier */
27 	u8 mesh_pm_id;
28 	/* Congestion Control Mode Identifier */
29 	u8 mesh_cc_id;
30 	/* Synchronization Protocol Identifier */
31 	u8 mesh_sp_id;
32 	/* Authentication Protocol Identifier */
33 	u8 mesh_auth_id;
34 	u8 *ies;
35 	int ie_len;
36 #define MESH_CONF_SEC_NONE BIT(0)
37 #define MESH_CONF_SEC_AUTH BIT(1)
38 #define MESH_CONF_SEC_AMPE BIT(2)
39 	unsigned int security;
40 	int dot11MeshMaxRetries;
41 	int dot11MeshRetryTimeout; /* msec */
42 	int dot11MeshConfirmTimeout; /* msec */
43 	int dot11MeshHoldingTimeout; /* msec */
44 };
45 
46 #define MAX_STA_COUNT 2007
47 #define MAX_VLAN_ID 4094
48 
49 typedef u8 macaddr[ETH_ALEN];
50 
51 struct mac_acl_entry {
52 	macaddr addr;
53 	int vlan_id;
54 };
55 
56 struct hostapd_radius_servers;
57 struct ft_remote_r0kh;
58 struct ft_remote_r1kh;
59 
60 #define HOSTAPD_MAX_SSID_LEN 32
61 
62 #define NUM_WEP_KEYS 4
63 struct hostapd_wep_keys {
64 	u8 idx;
65 	u8 *key[NUM_WEP_KEYS];
66 	size_t len[NUM_WEP_KEYS];
67 	int keys_set;
68 	size_t default_len; /* key length used for dynamic key generation */
69 };
70 
71 typedef enum hostap_security_policy {
72 	SECURITY_PLAINTEXT = 0,
73 	SECURITY_STATIC_WEP = 1,
74 	SECURITY_IEEE_802_1X = 2,
75 	SECURITY_WPA_PSK = 3,
76 	SECURITY_WPA = 4,
77 	SECURITY_OSEN = 5
78 } secpolicy;
79 
80 struct hostapd_ssid {
81 	u8 ssid[HOSTAPD_MAX_SSID_LEN];
82 	size_t ssid_len;
83 	unsigned int ssid_set:1;
84 	unsigned int utf8_ssid:1;
85 	unsigned int wpa_passphrase_set:1;
86 	unsigned int wpa_psk_set:1;
87 
88 	char vlan[IFNAMSIZ + 1];
89 	secpolicy security_policy;
90 
91 	struct hostapd_wpa_psk *wpa_psk;
92 	char *wpa_passphrase;
93 	char *wpa_psk_file;
94 
95 	struct hostapd_wep_keys wep;
96 
97 #define DYNAMIC_VLAN_DISABLED 0
98 #define DYNAMIC_VLAN_OPTIONAL 1
99 #define DYNAMIC_VLAN_REQUIRED 2
100 	int dynamic_vlan;
101 #define DYNAMIC_VLAN_NAMING_WITHOUT_DEVICE 0
102 #define DYNAMIC_VLAN_NAMING_WITH_DEVICE 1
103 #define DYNAMIC_VLAN_NAMING_END 2
104 	int vlan_naming;
105 #ifdef CONFIG_FULL_DYNAMIC_VLAN
106 	char *vlan_tagged_interface;
107 #endif /* CONFIG_FULL_DYNAMIC_VLAN */
108 };
109 
110 
111 #define VLAN_ID_WILDCARD -1
112 
113 struct hostapd_vlan {
114 	struct hostapd_vlan *next;
115 	int vlan_id; /* VLAN ID or -1 (VLAN_ID_WILDCARD) for wildcard entry */
116 	char ifname[IFNAMSIZ + 1];
117 	int dynamic_vlan;
118 #ifdef CONFIG_FULL_DYNAMIC_VLAN
119 
120 #define DVLAN_CLEAN_BR 	0x1
121 #define DVLAN_CLEAN_VLAN	0x2
122 #define DVLAN_CLEAN_VLAN_PORT	0x4
123 #define DVLAN_CLEAN_WLAN_PORT	0x8
124 	int clean;
125 #endif /* CONFIG_FULL_DYNAMIC_VLAN */
126 };
127 
128 #define PMK_LEN 32
129 struct hostapd_sta_wpa_psk_short {
130 	struct hostapd_sta_wpa_psk_short *next;
131 	u8 psk[PMK_LEN];
132 };
133 
134 struct hostapd_wpa_psk {
135 	struct hostapd_wpa_psk *next;
136 	int group;
137 	u8 psk[PMK_LEN];
138 	u8 addr[ETH_ALEN];
139 	u8 p2p_dev_addr[ETH_ALEN];
140 };
141 
142 struct hostapd_eap_user {
143 	struct hostapd_eap_user *next;
144 	u8 *identity;
145 	size_t identity_len;
146 	struct {
147 		int vendor;
148 		u32 method;
149 	} methods[EAP_MAX_METHODS];
150 	u8 *password;
151 	size_t password_len;
152 	int phase2;
153 	int force_version;
154 	unsigned int wildcard_prefix:1;
155 	unsigned int password_hash:1; /* whether password is hashed with
156 				       * nt_password_hash() */
157 	unsigned int remediation:1;
158 	unsigned int macacl:1;
159 	int ttls_auth; /* EAP_TTLS_AUTH_* bitfield */
160 	struct hostapd_radius_attr *accept_attr;
161 };
162 
163 struct hostapd_radius_attr {
164 	u8 type;
165 	struct wpabuf *val;
166 	struct hostapd_radius_attr *next;
167 };
168 
169 
170 #define NUM_TX_QUEUES 4
171 
172 struct hostapd_tx_queue_params {
173 	int aifs;
174 	int cwmin;
175 	int cwmax;
176 	int burst; /* maximum burst time in 0.1 ms, i.e., 10 = 1 ms */
177 };
178 
179 
180 #define MAX_ROAMING_CONSORTIUM_LEN 15
181 
182 struct hostapd_roaming_consortium {
183 	u8 len;
184 	u8 oi[MAX_ROAMING_CONSORTIUM_LEN];
185 };
186 
187 struct hostapd_lang_string {
188 	u8 lang[3];
189 	u8 name_len;
190 	u8 name[252];
191 };
192 
193 #define MAX_NAI_REALMS 10
194 #define MAX_NAI_REALMLEN 255
195 #define MAX_NAI_EAP_METHODS 5
196 #define MAX_NAI_AUTH_TYPES 4
197 struct hostapd_nai_realm_data {
198 	u8 encoding;
199 	char realm_buf[MAX_NAI_REALMLEN + 1];
200 	char *realm[MAX_NAI_REALMS];
201 	u8 eap_method_count;
202 	struct hostapd_nai_realm_eap {
203 		u8 eap_method;
204 		u8 num_auths;
205 		u8 auth_id[MAX_NAI_AUTH_TYPES];
206 		u8 auth_val[MAX_NAI_AUTH_TYPES];
207 	} eap_method[MAX_NAI_EAP_METHODS];
208 };
209 
210 /**
211  * struct hostapd_bss_config - Per-BSS configuration
212  */
213 struct hostapd_bss_config {
214 	char iface[IFNAMSIZ + 1];
215 	char bridge[IFNAMSIZ + 1];
216 	char vlan_bridge[IFNAMSIZ + 1];
217 	char wds_bridge[IFNAMSIZ + 1];
218 
219 	enum hostapd_logger_level logger_syslog_level, logger_stdout_level;
220 
221 	unsigned int logger_syslog; /* module bitfield */
222 	unsigned int logger_stdout; /* module bitfield */
223 
224 	int max_num_sta; /* maximum number of STAs in station table */
225 
226 	int dtim_period;
227 	int bss_load_update_period;
228 
229 	int ieee802_1x; /* use IEEE 802.1X */
230 	int eapol_version;
231 	int eap_server; /* Use internal EAP server instead of external
232 			 * RADIUS server */
233 	struct hostapd_eap_user *eap_user;
234 	char *eap_user_sqlite;
235 	char *eap_sim_db;
236 	int eap_server_erp; /* Whether ERP is enabled on internal EAP server */
237 	struct hostapd_ip_addr own_ip_addr;
238 	char *nas_identifier;
239 	struct hostapd_radius_servers *radius;
240 	int acct_interim_interval;
241 	int radius_request_cui;
242 	struct hostapd_radius_attr *radius_auth_req_attr;
243 	struct hostapd_radius_attr *radius_acct_req_attr;
244 	int radius_das_port;
245 	unsigned int radius_das_time_window;
246 	int radius_das_require_event_timestamp;
247 	struct hostapd_ip_addr radius_das_client_addr;
248 	u8 *radius_das_shared_secret;
249 	size_t radius_das_shared_secret_len;
250 
251 	struct hostapd_ssid ssid;
252 
253 	char *eap_req_id_text; /* optional displayable message sent with
254 				* EAP Request-Identity */
255 	size_t eap_req_id_text_len;
256 	int eapol_key_index_workaround;
257 
258 	size_t default_wep_key_len;
259 	int individual_wep_key_len;
260 	int wep_rekeying_period;
261 	int broadcast_key_idx_min, broadcast_key_idx_max;
262 	int eap_reauth_period;
263 	int erp_send_reauth_start;
264 	char *erp_domain;
265 
266 	int ieee802_11f; /* use IEEE 802.11f (IAPP) */
267 	char iapp_iface[IFNAMSIZ + 1]; /* interface used with IAPP broadcast
268 					* frames */
269 
270 	enum {
271 		ACCEPT_UNLESS_DENIED = 0,
272 		DENY_UNLESS_ACCEPTED = 1,
273 		USE_EXTERNAL_RADIUS_AUTH = 2
274 	} macaddr_acl;
275 	struct mac_acl_entry *accept_mac;
276 	int num_accept_mac;
277 	struct mac_acl_entry *deny_mac;
278 	int num_deny_mac;
279 	int wds_sta;
280 	int isolate;
281 	int start_disabled;
282 
283 	int auth_algs; /* bitfield of allowed IEEE 802.11 authentication
284 			* algorithms, WPA_AUTH_ALG_{OPEN,SHARED,LEAP} */
285 
286 	int wpa; /* bitfield of WPA_PROTO_WPA, WPA_PROTO_RSN */
287 	int wpa_key_mgmt;
288 #ifdef CONFIG_IEEE80211W
289 	enum mfp_options ieee80211w;
290 	int group_mgmt_cipher;
291 	/* dot11AssociationSAQueryMaximumTimeout (in TUs) */
292 	unsigned int assoc_sa_query_max_timeout;
293 	/* dot11AssociationSAQueryRetryTimeout (in TUs) */
294 	int assoc_sa_query_retry_timeout;
295 #endif /* CONFIG_IEEE80211W */
296 	enum {
297 		PSK_RADIUS_IGNORED = 0,
298 		PSK_RADIUS_ACCEPTED = 1,
299 		PSK_RADIUS_REQUIRED = 2
300 	} wpa_psk_radius;
301 	int wpa_pairwise;
302 	int wpa_group;
303 	int wpa_group_rekey;
304 	int wpa_strict_rekey;
305 	int wpa_gmk_rekey;
306 	int wpa_ptk_rekey;
307 	int rsn_pairwise;
308 	int rsn_preauth;
309 	char *rsn_preauth_interfaces;
310 	int peerkey;
311 
312 #ifdef CONFIG_IEEE80211R
313 	/* IEEE 802.11r - Fast BSS Transition */
314 	u8 mobility_domain[MOBILITY_DOMAIN_ID_LEN];
315 	u8 r1_key_holder[FT_R1KH_ID_LEN];
316 	u32 r0_key_lifetime;
317 	u32 reassociation_deadline;
318 	struct ft_remote_r0kh *r0kh_list;
319 	struct ft_remote_r1kh *r1kh_list;
320 	int pmk_r1_push;
321 	int ft_over_ds;
322 #endif /* CONFIG_IEEE80211R */
323 
324 	char *ctrl_interface; /* directory for UNIX domain sockets */
325 #ifndef CONFIG_NATIVE_WINDOWS
326 	gid_t ctrl_interface_gid;
327 #endif /* CONFIG_NATIVE_WINDOWS */
328 	int ctrl_interface_gid_set;
329 
330 	char *ca_cert;
331 	char *server_cert;
332 	char *private_key;
333 	char *private_key_passwd;
334 	int check_crl;
335 	char *ocsp_stapling_response;
336 	char *dh_file;
337 	char *openssl_ciphers;
338 	u8 *pac_opaque_encr_key;
339 	u8 *eap_fast_a_id;
340 	size_t eap_fast_a_id_len;
341 	char *eap_fast_a_id_info;
342 	int eap_fast_prov;
343 	int pac_key_lifetime;
344 	int pac_key_refresh_time;
345 	int eap_sim_aka_result_ind;
346 	int tnc;
347 	int fragment_size;
348 	u16 pwd_group;
349 
350 	char *radius_server_clients;
351 	int radius_server_auth_port;
352 	int radius_server_acct_port;
353 	int radius_server_ipv6;
354 
355 	int use_pae_group_addr; /* Whether to send EAPOL frames to PAE group
356 				 * address instead of individual address
357 				 * (for driver_wired.c).
358 				 */
359 
360 	int ap_max_inactivity;
361 	int ignore_broadcast_ssid;
362 
363 	int wmm_enabled;
364 	int wmm_uapsd;
365 
366 	struct hostapd_vlan *vlan;
367 
368 	macaddr bssid;
369 
370 	/*
371 	 * Maximum listen interval that STAs can use when associating with this
372 	 * BSS. If a STA tries to use larger value, the association will be
373 	 * denied with status code 51.
374 	 */
375 	u16 max_listen_interval;
376 
377 	int disable_pmksa_caching;
378 	int okc; /* Opportunistic Key Caching */
379 
380 	int wps_state;
381 #ifdef CONFIG_WPS
382 	int wps_independent;
383 	int ap_setup_locked;
384 	u8 uuid[16];
385 	char *wps_pin_requests;
386 	char *device_name;
387 	char *manufacturer;
388 	char *model_name;
389 	char *model_number;
390 	char *serial_number;
391 	u8 device_type[WPS_DEV_TYPE_LEN];
392 	char *config_methods;
393 	u8 os_version[4];
394 	char *ap_pin;
395 	int skip_cred_build;
396 	u8 *extra_cred;
397 	size_t extra_cred_len;
398 	int wps_cred_processing;
399 	int force_per_enrollee_psk;
400 	u8 *ap_settings;
401 	size_t ap_settings_len;
402 	char *upnp_iface;
403 	char *friendly_name;
404 	char *manufacturer_url;
405 	char *model_description;
406 	char *model_url;
407 	char *upc;
408 	struct wpabuf *wps_vendor_ext[MAX_WPS_VENDOR_EXTENSIONS];
409 	int wps_nfc_pw_from_config;
410 	int wps_nfc_dev_pw_id;
411 	struct wpabuf *wps_nfc_dh_pubkey;
412 	struct wpabuf *wps_nfc_dh_privkey;
413 	struct wpabuf *wps_nfc_dev_pw;
414 #endif /* CONFIG_WPS */
415 	int pbc_in_m1;
416 	char *server_id;
417 
418 #define P2P_ENABLED BIT(0)
419 #define P2P_GROUP_OWNER BIT(1)
420 #define P2P_GROUP_FORMATION BIT(2)
421 #define P2P_MANAGE BIT(3)
422 #define P2P_ALLOW_CROSS_CONNECTION BIT(4)
423 	int p2p;
424 #ifdef CONFIG_P2P
425 	u8 ip_addr_go[4];
426 	u8 ip_addr_mask[4];
427 	u8 ip_addr_start[4];
428 	u8 ip_addr_end[4];
429 #endif /* CONFIG_P2P */
430 
431 	int disassoc_low_ack;
432 	int skip_inactivity_poll;
433 
434 #define TDLS_PROHIBIT BIT(0)
435 #define TDLS_PROHIBIT_CHAN_SWITCH BIT(1)
436 	int tdls;
437 	int disable_11n;
438 	int disable_11ac;
439 
440 	/* IEEE 802.11v */
441 	int time_advertisement;
442 	char *time_zone;
443 	int wnm_sleep_mode;
444 	int bss_transition;
445 
446 	/* IEEE 802.11u - Interworking */
447 	int interworking;
448 	int access_network_type;
449 	int internet;
450 	int asra;
451 	int esr;
452 	int uesa;
453 	int venue_info_set;
454 	u8 venue_group;
455 	u8 venue_type;
456 	u8 hessid[ETH_ALEN];
457 
458 	/* IEEE 802.11u - Roaming Consortium list */
459 	unsigned int roaming_consortium_count;
460 	struct hostapd_roaming_consortium *roaming_consortium;
461 
462 	/* IEEE 802.11u - Venue Name duples */
463 	unsigned int venue_name_count;
464 	struct hostapd_lang_string *venue_name;
465 
466 	/* IEEE 802.11u - Network Authentication Type */
467 	u8 *network_auth_type;
468 	size_t network_auth_type_len;
469 
470 	/* IEEE 802.11u - IP Address Type Availability */
471 	u8 ipaddr_type_availability;
472 	u8 ipaddr_type_configured;
473 
474 	/* IEEE 802.11u - 3GPP Cellular Network */
475 	u8 *anqp_3gpp_cell_net;
476 	size_t anqp_3gpp_cell_net_len;
477 
478 	/* IEEE 802.11u - Domain Name */
479 	u8 *domain_name;
480 	size_t domain_name_len;
481 
482 	unsigned int nai_realm_count;
483 	struct hostapd_nai_realm_data *nai_realm_data;
484 
485 	u16 gas_comeback_delay;
486 	int gas_frag_limit;
487 
488 	u8 qos_map_set[16 + 2 * 21];
489 	unsigned int qos_map_set_len;
490 
491 	int osen;
492 	int proxy_arp;
493 #ifdef CONFIG_HS20
494 	int hs20;
495 	int disable_dgaf;
496 	u16 anqp_domain_id;
497 	unsigned int hs20_oper_friendly_name_count;
498 	struct hostapd_lang_string *hs20_oper_friendly_name;
499 	u8 *hs20_wan_metrics;
500 	u8 *hs20_connection_capability;
501 	size_t hs20_connection_capability_len;
502 	u8 *hs20_operating_class;
503 	u8 hs20_operating_class_len;
504 	struct hs20_icon {
505 		u16 width;
506 		u16 height;
507 		char language[3];
508 		char type[256];
509 		char name[256];
510 		char file[256];
511 	} *hs20_icons;
512 	size_t hs20_icons_count;
513 	u8 osu_ssid[HOSTAPD_MAX_SSID_LEN];
514 	size_t osu_ssid_len;
515 	struct hs20_osu_provider {
516 		unsigned int friendly_name_count;
517 		struct hostapd_lang_string *friendly_name;
518 		char *server_uri;
519 		int *method_list;
520 		char **icons;
521 		size_t icons_count;
522 		char *osu_nai;
523 		unsigned int service_desc_count;
524 		struct hostapd_lang_string *service_desc;
525 	} *hs20_osu_providers, *last_osu;
526 	size_t hs20_osu_providers_count;
527 	unsigned int hs20_deauth_req_timeout;
528 	char *subscr_remediation_url;
529 	u8 subscr_remediation_method;
530 #endif /* CONFIG_HS20 */
531 
532 	u8 wps_rf_bands; /* RF bands for WPS (WPS_RF_*) */
533 
534 #ifdef CONFIG_RADIUS_TEST
535 	char *dump_msk_file;
536 #endif /* CONFIG_RADIUS_TEST */
537 
538 	struct wpabuf *vendor_elements;
539 
540 	unsigned int sae_anti_clogging_threshold;
541 	int *sae_groups;
542 
543 	char *wowlan_triggers; /* Wake-on-WLAN triggers */
544 
545 #ifdef CONFIG_TESTING_OPTIONS
546 	u8 bss_load_test[5];
547 	u8 bss_load_test_set;
548 #endif /* CONFIG_TESTING_OPTIONS */
549 
550 #define MESH_ENABLED BIT(0)
551 	int mesh;
552 
553 	int radio_measurements;
554 
555 	int vendor_vht;
556 };
557 
558 
559 /**
560  * struct hostapd_config - Per-radio interface configuration
561  */
562 struct hostapd_config {
563 	struct hostapd_bss_config **bss, *last_bss;
564 	size_t num_bss;
565 
566 	u16 beacon_int;
567 	int rts_threshold;
568 	int fragm_threshold;
569 	u8 send_probe_response;
570 	u8 channel;
571 	int *chanlist;
572 	enum hostapd_hw_mode hw_mode; /* HOSTAPD_MODE_IEEE80211A, .. */
573 	enum {
574 		LONG_PREAMBLE = 0,
575 		SHORT_PREAMBLE = 1
576 	} preamble;
577 
578 	int *supported_rates;
579 	int *basic_rates;
580 
581 	const struct wpa_driver_ops *driver;
582 	char *driver_params;
583 
584 	int ap_table_max_size;
585 	int ap_table_expiration_time;
586 
587 	char country[3]; /* first two octets: country code as described in
588 			  * ISO/IEC 3166-1. Third octet:
589 			  * ' ' (ascii 32): all environments
590 			  * 'O': Outdoor environemnt only
591 			  * 'I': Indoor environment only
592 			  */
593 
594 	int ieee80211d;
595 
596 	int ieee80211h; /* DFS */
597 
598 	/*
599 	 * Local power constraint is an octet encoded as an unsigned integer in
600 	 * units of decibels. Invalid value -1 indicates that Power Constraint
601 	 * element will not be added.
602 	 */
603 	int local_pwr_constraint;
604 
605 	/* Control Spectrum Management bit */
606 	int spectrum_mgmt_required;
607 
608 	struct hostapd_tx_queue_params tx_queue[NUM_TX_QUEUES];
609 
610 	/*
611 	 * WMM AC parameters, in same order as 802.1D, i.e.
612 	 * 0 = BE (best effort)
613 	 * 1 = BK (background)
614 	 * 2 = VI (video)
615 	 * 3 = VO (voice)
616 	 */
617 	struct hostapd_wmm_ac_params wmm_ac_params[4];
618 
619 	int ht_op_mode_fixed;
620 	u16 ht_capab;
621 	int ieee80211n;
622 	int secondary_channel;
623 	int require_ht;
624 	int obss_interval;
625 	u32 vht_capab;
626 	int ieee80211ac;
627 	int require_vht;
628 	u8 vht_oper_chwidth;
629 	u8 vht_oper_centr_freq_seg0_idx;
630 	u8 vht_oper_centr_freq_seg1_idx;
631 
632 #ifdef CONFIG_P2P
633 	u8 p2p_go_ctwindow;
634 #endif /* CONFIG_P2P */
635 
636 #ifdef CONFIG_TESTING_OPTIONS
637 	double ignore_probe_probability;
638 	double ignore_auth_probability;
639 	double ignore_assoc_probability;
640 	double ignore_reassoc_probability;
641 	double corrupt_gtk_rekey_mic_probability;
642 #endif /* CONFIG_TESTING_OPTIONS */
643 
644 #ifdef CONFIG_ACS
645 	unsigned int acs_num_scans;
646 	struct acs_bias {
647 		int channel;
648 		double bias;
649 	} *acs_chan_bias;
650 	unsigned int num_acs_chan_bias;
651 #endif /* CONFIG_ACS */
652 };
653 
654 
655 int hostapd_mac_comp(const void *a, const void *b);
656 int hostapd_mac_comp_empty(const void *a);
657 struct hostapd_config * hostapd_config_defaults(void);
658 void hostapd_config_defaults_bss(struct hostapd_bss_config *bss);
659 void hostapd_config_free_eap_user(struct hostapd_eap_user *user);
660 void hostapd_config_clear_wpa_psk(struct hostapd_wpa_psk **p);
661 void hostapd_config_free_bss(struct hostapd_bss_config *conf);
662 void hostapd_config_free(struct hostapd_config *conf);
663 int hostapd_maclist_found(struct mac_acl_entry *list, int num_entries,
664 			  const u8 *addr, int *vlan_id);
665 int hostapd_rate_found(int *list, int rate);
666 const u8 * hostapd_get_psk(const struct hostapd_bss_config *conf,
667 			   const u8 *addr, const u8 *p2p_dev_addr,
668 			   const u8 *prev_psk);
669 int hostapd_setup_wpa_psk(struct hostapd_bss_config *conf);
670 int hostapd_vlan_id_valid(struct hostapd_vlan *vlan, int vlan_id);
671 const char * hostapd_get_vlan_id_ifname(struct hostapd_vlan *vlan,
672 					int vlan_id);
673 struct hostapd_radius_attr *
674 hostapd_config_get_radius_attr(struct hostapd_radius_attr *attr, u8 type);
675 int hostapd_config_check(struct hostapd_config *conf, int full_config);
676 void hostapd_set_security_params(struct hostapd_bss_config *bss,
677 				 int full_config);
678 
679 #endif /* HOSTAPD_CONFIG_H */
680