Remove direct driver calls from ieee802_11.c
[libeap.git] / hostapd / config.h
index 8f7777e..b8ce830 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * hostapd / Configuration file
- * Copyright (c) 2003-2007, Jouni Malinen <j@w1.fi>
+ * hostapd / Configuration definitions and helpers functions
+ * Copyright (c) 2003-2009, 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
  * See README and COPYING for more details.
  */
 
-#ifndef CONFIG_H
-#define CONFIG_H
+#ifndef HOSTAPD_CONFIG_H
+#define HOSTAPD_CONFIG_H
 
-#include "defs.h"
+#include "common/defs.h"
 #include "ip_addr.h"
-#include "wpa_common.h"
+#include "common/wpa_common.h"
 
-#ifndef IFNAMSIZ
-#define IFNAMSIZ 16
-#endif
+#define MAX_STA_COUNT 2007
+#define MAX_VLAN_ID 4094
 
 typedef u8 macaddr[ETH_ALEN];
 
+struct mac_acl_entry {
+       macaddr addr;
+       int vlan_id;
+};
+
 struct hostapd_radius_servers;
 struct ft_remote_r0kh;
 struct ft_remote_r1kh;
@@ -129,11 +133,11 @@ struct hostapd_tx_queue_params {
        int configured;
 };
 
-struct hostapd_wme_ac_params {
+struct hostapd_wmm_ac_params {
        int cwmin;
        int cwmax;
        int aifs;
-       int txopLimit; /* in units of 32us */
+       int txop_limit; /* in units of 32us */
        int admission_control_mandatory;
 };
 
@@ -165,6 +169,7 @@ struct hostapd_bss_config {
        struct hostapd_ip_addr own_ip_addr;
        char *nas_identifier;
        struct hostapd_radius_servers *radius;
+       int acct_interim_interval;
 
        struct hostapd_ssid ssid;
 
@@ -183,18 +188,16 @@ struct hostapd_bss_config {
        char iapp_iface[IFNAMSIZ + 1]; /* interface used with IAPP broadcast
                                        * frames */
 
-       u8 assoc_ap_addr[ETH_ALEN];
-       int assoc_ap; /* whether assoc_ap_addr is set */
-
        enum {
                ACCEPT_UNLESS_DENIED = 0,
                DENY_UNLESS_ACCEPTED = 1,
                USE_EXTERNAL_RADIUS_AUTH = 2
        } macaddr_acl;
-       macaddr *accept_mac;
+       struct mac_acl_entry *accept_mac;
        int num_accept_mac;
-       macaddr *deny_mac;
+       struct mac_acl_entry *deny_mac;
        int num_deny_mac;
+       int wds_sta;
 
        int auth_algs; /* bitfield of allowed IEEE 802.11 authentication
                        * algorithms, WPA_AUTH_ALG_{OPEN,SHARED,LEAP} */
@@ -202,17 +205,18 @@ struct hostapd_bss_config {
        int wpa; /* bitfield of WPA_PROTO_WPA, WPA_PROTO_RSN */
        int wpa_key_mgmt;
 #ifdef CONFIG_IEEE80211W
-       enum {
-               NO_IEEE80211W = 0,
-               IEEE80211W_OPTIONAL = 1,
-               IEEE80211W_REQUIRED = 2
-       } ieee80211w;
+       enum mfp_options ieee80211w;
+       /* dot11AssociationSAQueryMaximumTimeout (in TUs) */
+       unsigned int assoc_sa_query_max_timeout;
+       /* dot11AssociationSAQueryRetryTimeout (in TUs) */
+       int assoc_sa_query_retry_timeout;
 #endif /* CONFIG_IEEE80211W */
        int wpa_pairwise;
        int wpa_group;
        int wpa_group_rekey;
        int wpa_strict_rekey;
        int wpa_gmk_rekey;
+       int wpa_ptk_rekey;
        int rsn_pairwise;
        int rsn_preauth;
        char *rsn_preauth_interfaces;
@@ -240,8 +244,14 @@ struct hostapd_bss_config {
        int check_crl;
        char *dh_file;
        u8 *pac_opaque_encr_key;
-       char *eap_fast_a_id;
+       u8 *eap_fast_a_id;
+       size_t eap_fast_a_id_len;
+       char *eap_fast_a_id_info;
+       int eap_fast_prov;
+       int pac_key_lifetime;
+       int pac_key_refresh_time;
        int eap_sim_aka_result_ind;
+       int tnc;
 
        char *radius_server_clients;
        int radius_server_auth_port;
@@ -257,20 +267,49 @@ struct hostapd_bss_config {
        int ap_max_inactivity;
        int ignore_broadcast_ssid;
 
-       int wme_enabled;
+       int wmm_enabled;
 
        struct hostapd_vlan *vlan, *vlan_tail;
 
        macaddr bssid;
-};
-
 
-typedef enum {
-       HOSTAPD_MODE_IEEE80211B,
-       HOSTAPD_MODE_IEEE80211G,
-       HOSTAPD_MODE_IEEE80211A,
-       NUM_HOSTAPD_MODES
-} hostapd_hw_mode;
+       /*
+        * Maximum listen interval that STAs can use when associating with this
+        * BSS. If a STA tries to use larger value, the association will be
+        * denied with status code 51.
+        */
+       u16 max_listen_interval;
+
+       int okc; /* Opportunistic Key Caching */
+
+       int wps_state;
+#ifdef CONFIG_WPS
+       int ap_setup_locked;
+       u8 uuid[16];
+       char *wps_pin_requests;
+       char *device_name;
+       char *manufacturer;
+       char *model_name;
+       char *model_number;
+       char *serial_number;
+       char *device_type;
+       char *config_methods;
+       u8 os_version[4];
+       char *ap_pin;
+       int skip_cred_build;
+       u8 *extra_cred;
+       size_t extra_cred_len;
+       int wps_cred_processing;
+       u8 *ap_settings;
+       size_t ap_settings_len;
+       char *upnp_iface;
+       char *friendly_name;
+       char *manufacturer_url;
+       char *model_description;
+       char *model_url;
+       char *upc;
+#endif /* CONFIG_WPS */
+};
 
 
 /**
@@ -278,7 +317,6 @@ typedef enum {
  */
 struct hostapd_config {
        struct hostapd_bss_config *bss, *last_bss;
-       struct hostapd_radius_servers *radius;
        size_t num_bss;
 
        u16 beacon_int;
@@ -303,9 +341,6 @@ struct hostapd_config {
 
        const struct wpa_driver_ops *driver;
 
-       int passive_scan_interval; /* seconds, 0 = disabled */
-       int passive_scan_listen; /* usec */
-       int passive_scan_mode;
        int ap_table_max_size;
        int ap_table_expiration_time;
 
@@ -317,32 +352,32 @@ struct hostapd_config {
                          */
 
        int ieee80211d;
-       unsigned int ieee80211h; /* Enable/Disable 80211h */
 
        struct hostapd_tx_queue_params tx_queue[NUM_TX_QUEUES];
 
        /*
-        * WME AC parameters, in same order as 802.1D, i.e.
+        * WMM AC parameters, in same order as 802.1D, i.e.
         * 0 = BE (best effort)
         * 1 = BK (background)
         * 2 = VI (video)
         * 3 = VO (voice)
         */
-       struct hostapd_wme_ac_params wme_ac_params[4];
+       struct hostapd_wmm_ac_params wmm_ac_params[4];
 
-       enum {
-               INTERNAL_BRIDGE_DO_NOT_CONTROL = -1,
-               INTERNAL_BRIDGE_DISABLED = 0,
-               INTERNAL_BRIDGE_ENABLED = 1
-       } bridge_packets;
+       int ht_op_mode_fixed;
+       u16 ht_capab;
+       int ieee80211n;
+       int secondary_channel;
 };
 
 
 int hostapd_mac_comp(const void *a, const void *b);
 int hostapd_mac_comp_empty(const void *a);
-struct hostapd_config * hostapd_config_read(const char *fname);
+struct hostapd_config * hostapd_config_defaults(void);
+void hostapd_config_defaults_bss(struct hostapd_bss_config *bss);
 void hostapd_config_free(struct hostapd_config *conf);
-int hostapd_maclist_found(macaddr *list, int num_entries, const u8 *addr);
+int hostapd_maclist_found(struct mac_acl_entry *list, int num_entries,
+                         const u8 *addr, int *vlan_id);
 int hostapd_rate_found(int *list, int rate);
 int hostapd_wep_key_cmp(struct hostapd_wep_keys *a,
                        struct hostapd_wep_keys *b);
@@ -355,4 +390,4 @@ const struct hostapd_eap_user *
 hostapd_get_eap_user(const struct hostapd_bss_config *conf, const u8 *identity,
                     size_t identity_len, int phase2);
 
-#endif /* CONFIG_H */
+#endif /* HOSTAPD_CONFIG_H */