]> git.ipfire.org Git - thirdparty/hostap.git/blobdiff - src/ap/ap_config.h
WNM: Additional BSS Transition Management capability
[thirdparty/hostap.git] / src / ap / ap_config.h
index a95ebe9acb8829371977b8b1b4f6348925be3336..a1d2b048b513104dc79066ef07d93011b48b3ea2 100644 (file)
@@ -1,15 +1,9 @@
 /*
  * hostapd / Configuration definitions and helpers functions
- * Copyright (c) 2003-2009, Jouni Malinen <j@w1.fi>
+ * Copyright (c) 2003-2012, Jouni Malinen <j@w1.fi>
  *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * Alternatively, this software may be distributed under the terms of BSD
- * license.
- *
- * See README and COPYING for more details.
+ * This software may be distributed under the terms of the BSD license.
+ * See README for more details.
  */
 
 #ifndef HOSTAPD_CONFIG_H
@@ -18,6 +12,8 @@
 #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
 #define MAX_VLAN_ID 4094
@@ -53,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;
@@ -70,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 */
@@ -96,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;
@@ -103,7 +109,6 @@ struct hostapd_wpa_psk {
        u8 addr[ETH_ALEN];
 };
 
-#define EAP_USER_MAX_METHODS 8
 struct hostapd_eap_user {
        struct hostapd_eap_user *next;
        u8 *identity;
@@ -111,7 +116,7 @@ struct hostapd_eap_user {
        struct {
                int vendor;
                u32 method;
-       } methods[EAP_USER_MAX_METHODS];
+       } methods[EAP_MAX_METHODS];
        u8 *password;
        size_t password_len;
        int phase2;
@@ -122,6 +127,12 @@ struct hostapd_eap_user {
        int ttls_auth; /* EAP_TTLS_AUTH_* bitfield */
 };
 
+struct hostapd_radius_attr {
+       u8 type;
+       struct wpabuf *val;
+       struct hostapd_radius_attr *next;
+};
+
 
 #define NUM_TX_QUEUES 4
 
@@ -130,17 +141,38 @@ struct hostapd_tx_queue_params {
        int cwmin;
        int cwmax;
        int burst; /* maximum burst time in 0.1 ms, i.e., 10 = 1 ms */
-       int configured;
 };
 
-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
+
+struct hostapd_roaming_consortium {
+       u8 len;
+       u8 oi[MAX_ROAMING_CONSORTIUM_LEN];
 };
 
+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
@@ -166,11 +198,21 @@ 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;
        struct hostapd_radius_servers *radius;
        int acct_interim_interval;
+       int radius_request_cui;
+       struct hostapd_radius_attr *radius_auth_req_attr;
+       struct hostapd_radius_attr *radius_acct_req_attr;
+       int radius_das_port;
+       unsigned int radius_das_time_window;
+       int radius_das_require_event_timestamp;
+       struct hostapd_ip_addr radius_das_client_addr;
+       u8 *radius_das_shared_secret;
+       size_t radius_das_shared_secret_len;
 
        struct hostapd_ssid ssid;
 
@@ -213,6 +255,11 @@ struct hostapd_bss_config {
        /* dot11AssociationSAQueryRetryTimeout (in TUs) */
        int assoc_sa_query_retry_timeout;
 #endif /* CONFIG_IEEE80211W */
+       enum {
+               PSK_RADIUS_IGNORED = 0,
+               PSK_RADIUS_ACCEPTED = 1,
+               PSK_RADIUS_REQUIRED = 2
+       } wpa_psk_radius;
        int wpa_pairwise;
        int wpa_group;
        int wpa_group_rekey;
@@ -233,6 +280,7 @@ struct hostapd_bss_config {
        struct ft_remote_r0kh *r0kh_list;
        struct ft_remote_r1kh *r1kh_list;
        int pmk_r1_push;
+       int ft_over_ds;
 #endif /* CONFIG_IEEE80211R */
 
        char *ctrl_interface; /* directory for UNIX domain sockets */
@@ -287,6 +335,7 @@ struct hostapd_bss_config {
         */
        u16 max_listen_interval;
 
+       int disable_pmksa_caching;
        int okc; /* Opportunistic Key Caching */
 
        int wps_state;
@@ -299,7 +348,7 @@ struct hostapd_bss_config {
        char *model_name;
        char *model_number;
        char *serial_number;
-       char *device_type;
+       u8 device_type[WPS_DEV_TYPE_LEN];
        char *config_methods;
        u8 os_version[4];
        char *ap_pin;
@@ -315,7 +364,13 @@ struct hostapd_bss_config {
        char *model_description;
        char *model_url;
        char *upc;
+       struct wpabuf *wps_vendor_ext[MAX_WPS_VENDOR_EXTENSIONS];
+       int wps_nfc_dev_pw_id;
+       struct wpabuf *wps_nfc_dh_pubkey;
+       struct wpabuf *wps_nfc_dh_privkey;
+       struct wpabuf *wps_nfc_dev_pw;
 #endif /* CONFIG_WPS */
+       int pbc_in_m1;
 
 #define P2P_ENABLED BIT(0)
 #define P2P_GROUP_OWNER BIT(1)
@@ -323,6 +378,83 @@ struct hostapd_bss_config {
 #define P2P_MANAGE BIT(3)
 #define P2P_ALLOW_CROSS_CONNECTION BIT(4)
        int p2p;
+
+       int disassoc_low_ack;
+       int skip_inactivity_poll;
+
+#define TDLS_PROHIBIT BIT(0)
+#define TDLS_PROHIBIT_CHAN_SWITCH BIT(1)
+       int tdls;
+       int disable_11n;
+       int disable_11ac;
+
+       /* IEEE 802.11v */
+       int time_advertisement;
+       char *time_zone;
+       int wnm_sleep_mode;
+       int bss_transition;
+
+       /* IEEE 802.11u - Interworking */
+       int interworking;
+       int access_network_type;
+       int internet;
+       int asra;
+       int esr;
+       int uesa;
+       int venue_info_set;
+       u8 venue_group;
+       u8 venue_type;
+       u8 hessid[ETH_ALEN];
+
+       /* IEEE 802.11u - Roaming Consortium list */
+       unsigned int roaming_consortium_count;
+       struct hostapd_roaming_consortium *roaming_consortium;
+
+       /* IEEE 802.11u - Venue Name duples */
+       unsigned int venue_name_count;
+       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;
 };
 
 
@@ -343,12 +475,6 @@ struct hostapd_config {
                LONG_PREAMBLE = 0,
                SHORT_PREAMBLE = 1
        } preamble;
-       enum {
-               CTS_PROTECTION_AUTOMATIC = 0,
-               CTS_PROTECTION_FORCE_ENABLED = 1,
-               CTS_PROTECTION_FORCE_DISABLED = 2,
-               CTS_PROTECTION_AUTOMATIC_NO_OLBC = 3,
-       } cts_protection_type;
 
        int *supported_rates;
        int *basic_rates;
@@ -382,6 +508,13 @@ struct hostapd_config {
        u16 ht_capab;
        int ieee80211n;
        int secondary_channel;
+       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;
 };
 
 
@@ -400,8 +533,7 @@ const u8 * hostapd_get_psk(const struct hostapd_bss_config *conf,
 int hostapd_setup_wpa_psk(struct hostapd_bss_config *conf);
 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);
 
 #endif /* HOSTAPD_CONFIG_H */