/*
- * 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;
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;
};
struct hostapd_ip_addr own_ip_addr;
char *nas_identifier;
struct hostapd_radius_servers *radius;
+ int acct_interim_interval;
struct hostapd_ssid ssid;
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} */
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;
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;
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 */
+};
/**
*/
struct hostapd_config {
struct hostapd_bss_config *bss, *last_bss;
- struct hostapd_radius_servers *radius;
size_t num_bss;
u16 beacon_int;
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;
*/
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);
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 */