Add support for OCSP stapling to validate server certificate
[mech_eap.git] / src / ap / ap_config.h
index ca4fe58..1124920 100644 (file)
@@ -12,6 +12,7 @@
 #include "common/defs.h"
 #include "ip_addr.h"
 #include "common/wpa_common.h"
+#include "common/ieee802_11_common.h"
 #include "wps/wps.h"
 
 #define MAX_STA_COUNT 2007
@@ -48,9 +49,10 @@ typedef enum hostap_security_policy {
 } secpolicy;
 
 struct hostapd_ssid {
-       char ssid[HOSTAPD_MAX_SSID_LEN + 1];
+       u8 ssid[HOSTAPD_MAX_SSID_LEN];
        size_t ssid_len;
-       int ssid_set;
+       unsigned int ssid_set:1;
+       unsigned int utf8_ssid:1;
 
        char vlan[IFNAMSIZ + 1];
        secpolicy security_policy;
@@ -65,6 +67,10 @@ struct hostapd_ssid {
 #define DYNAMIC_VLAN_OPTIONAL 1
 #define DYNAMIC_VLAN_REQUIRED 2
        int dynamic_vlan;
+#define DYNAMIC_VLAN_NAMING_WITHOUT_DEVICE 0
+#define DYNAMIC_VLAN_NAMING_WITH_DEVICE 1
+#define DYNAMIC_VLAN_NAMING_END 2
+       int vlan_naming;
 #ifdef CONFIG_FULL_DYNAMIC_VLAN
        char *vlan_tagged_interface;
 #endif /* CONFIG_FULL_DYNAMIC_VLAN */
@@ -91,6 +97,11 @@ struct hostapd_vlan {
 };
 
 #define PMK_LEN 32
+struct hostapd_sta_wpa_psk_short {
+       struct hostapd_sta_wpa_psk_short *next;
+       u8 psk[PMK_LEN];
+};
+
 struct hostapd_wpa_psk {
        struct hostapd_wpa_psk *next;
        int group;
@@ -132,14 +143,6 @@ struct hostapd_tx_queue_params {
        int burst; /* maximum burst time in 0.1 ms, i.e., 10 = 1 ms */
 };
 
-struct hostapd_wmm_ac_params {
-       int cwmin;
-       int cwmax;
-       int aifs;
-       int txop_limit; /* in units of 32us */
-       int admission_control_mandatory;
-};
-
 
 #define MAX_ROAMING_CONSORTIUM_LEN 15
 
@@ -148,18 +151,36 @@ struct hostapd_roaming_consortium {
        u8 oi[MAX_ROAMING_CONSORTIUM_LEN];
 };
 
-struct hostapd_venue_name {
+struct hostapd_lang_string {
        u8 lang[3];
        u8 name_len;
        u8 name[252];
 };
 
+#define MAX_NAI_REALMS 10
+#define MAX_NAI_REALMLEN 255
+#define MAX_NAI_EAP_METHODS 5
+#define MAX_NAI_AUTH_TYPES 4
+struct hostapd_nai_realm_data {
+       u8 encoding;
+       char realm_buf[MAX_NAI_REALMLEN + 1];
+       char *realm[MAX_NAI_REALMS];
+       u8 eap_method_count;
+       struct hostapd_nai_realm_eap {
+               u8 eap_method;
+               u8 num_auths;
+               u8 auth_id[MAX_NAI_AUTH_TYPES];
+               u8 auth_val[MAX_NAI_AUTH_TYPES];
+       } eap_method[MAX_NAI_EAP_METHODS];
+};
+
 /**
  * struct hostapd_bss_config - Per-BSS configuration
  */
 struct hostapd_bss_config {
        char iface[IFNAMSIZ + 1];
        char bridge[IFNAMSIZ + 1];
+       char vlan_bridge[IFNAMSIZ + 1];
        char wds_bridge[IFNAMSIZ + 1];
 
        enum hostapd_logger_level logger_syslog_level, logger_stdout_level;
@@ -178,6 +199,7 @@ struct hostapd_bss_config {
        int eap_server; /* Use internal EAP server instead of external
                         * RADIUS server */
        struct hostapd_eap_user *eap_user;
+       char *eap_user_sqlite;
        char *eap_sim_db;
        struct hostapd_ip_addr own_ip_addr;
        char *nas_identifier;
@@ -273,6 +295,7 @@ struct hostapd_bss_config {
        char *private_key;
        char *private_key_passwd;
        int check_crl;
+       char *ocsp_stapling_response;
        char *dh_file;
        u8 *pac_opaque_encr_key;
        u8 *eap_fast_a_id;
@@ -319,6 +342,7 @@ struct hostapd_bss_config {
 
        int wps_state;
 #ifdef CONFIG_WPS
+       int wps_independent;
        int ap_setup_locked;
        u8 uuid[16];
        char *wps_pin_requests;
@@ -344,6 +368,7 @@ struct hostapd_bss_config {
        char *model_url;
        char *upc;
        struct wpabuf *wps_vendor_ext[MAX_WPS_VENDOR_EXTENSIONS];
+       int wps_nfc_pw_from_config;
        int wps_nfc_dev_pw_id;
        struct wpabuf *wps_nfc_dh_pubkey;
        struct wpabuf *wps_nfc_dh_privkey;
@@ -370,6 +395,8 @@ struct hostapd_bss_config {
        /* IEEE 802.11v */
        int time_advertisement;
        char *time_zone;
+       int wnm_sleep_mode;
+       int bss_transition;
 
        /* IEEE 802.11u - Interworking */
        int interworking;
@@ -389,16 +416,52 @@ struct hostapd_bss_config {
 
        /* IEEE 802.11u - Venue Name duples */
        unsigned int venue_name_count;
-       struct hostapd_venue_name *venue_name;
+       struct hostapd_lang_string *venue_name;
+
+       /* IEEE 802.11u - Network Authentication Type */
+       u8 *network_auth_type;
+       size_t network_auth_type_len;
+
+       /* IEEE 802.11u - IP Address Type Availability */
+       u8 ipaddr_type_availability;
+       u8 ipaddr_type_configured;
+
+       /* IEEE 802.11u - 3GPP Cellular Network */
+       u8 *anqp_3gpp_cell_net;
+       size_t anqp_3gpp_cell_net_len;
+
+       /* IEEE 802.11u - Domain Name */
+       u8 *domain_name;
+       size_t domain_name_len;
+
+       unsigned int nai_realm_count;
+       struct hostapd_nai_realm_data *nai_realm_data;
 
        u16 gas_comeback_delay;
        int gas_frag_limit;
 
+#ifdef CONFIG_HS20
+       int hs20;
+       int disable_dgaf;
+       unsigned int hs20_oper_friendly_name_count;
+       struct hostapd_lang_string *hs20_oper_friendly_name;
+       u8 *hs20_wan_metrics;
+       u8 *hs20_connection_capability;
+       size_t hs20_connection_capability_len;
+       u8 *hs20_operating_class;
+       u8 hs20_operating_class_len;
+#endif /* CONFIG_HS20 */
+
        u8 wps_rf_bands; /* RF bands for WPS (WPS_RF_*) */
 
 #ifdef CONFIG_RADIUS_TEST
        char *dump_msk_file;
 #endif /* CONFIG_RADIUS_TEST */
+
+       struct wpabuf *vendor_elements;
+
+       unsigned int sae_anti_clogging_threshold;
+       int *sae_groups;
 };
 
 
@@ -437,6 +500,8 @@ struct hostapd_config {
 
        int ieee80211d;
 
+       int ieee80211h; /* DFS */
+
        struct hostapd_tx_queue_params tx_queue[NUM_TX_QUEUES];
 
        /*
@@ -455,7 +520,18 @@ struct hostapd_config {
        int require_ht;
        u32 vht_capab;
        int ieee80211ac;
+       int require_vht;
        u8 vht_oper_chwidth;
+       u8 vht_oper_centr_freq_seg0_idx;
+       u8 vht_oper_centr_freq_seg1_idx;
+
+#ifdef CONFIG_TESTING_OPTIONS
+       double ignore_probe_probability;
+       double ignore_auth_probability;
+       double ignore_assoc_probability;
+       double ignore_reassoc_probability;
+       double corrupt_gtk_rekey_mic_probability;
+#endif /* CONFIG_TESTING_OPTIONS */
 };
 
 
@@ -472,11 +548,9 @@ int hostapd_wep_key_cmp(struct hostapd_wep_keys *a,
 const u8 * hostapd_get_psk(const struct hostapd_bss_config *conf,
                           const u8 *addr, const u8 *prev_psk);
 int hostapd_setup_wpa_psk(struct hostapd_bss_config *conf);
+int hostapd_vlan_id_valid(struct hostapd_vlan *vlan, int vlan_id);
 const char * hostapd_get_vlan_id_ifname(struct hostapd_vlan *vlan,
                                        int vlan_id);
-const struct hostapd_eap_user *
-hostapd_get_eap_user(const struct hostapd_bss_config *conf, const u8 *identity,
-                    size_t identity_len, int phase2);
 struct hostapd_radius_attr *
 hostapd_config_get_radius_attr(struct hostapd_radius_attr *attr, u8 type);