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