]> 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 32c829298b84c3e94cfb9cc8ae2ac336269f5d9f..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,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
@@ -54,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;
@@ -71,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 */
@@ -97,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;
@@ -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
 
@@ -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,6 +151,29 @@ struct hostapd_roaming_consortium {
        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
  */
@@ -172,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;
 
@@ -219,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;
@@ -324,6 +365,10 @@ struct hostapd_bss_config {
        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;
 
@@ -335,15 +380,19 @@ struct hostapd_bss_config {
        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;
@@ -360,6 +409,52 @@ struct hostapd_bss_config {
        /* 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;
 };
 
 
@@ -414,6 +509,12 @@ struct hostapd_config {
        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;
 };
 
 
@@ -432,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 */