diff options
Diffstat (limited to 'contrib/hostapd/hostapd.h')
-rw-r--r-- | contrib/hostapd/hostapd.h | 140 |
1 files changed, 123 insertions, 17 deletions
diff --git a/contrib/hostapd/hostapd.h b/contrib/hostapd/hostapd.h index fdcb420..70f802d 100644 --- a/contrib/hostapd/hostapd.h +++ b/contrib/hostapd/hostapd.h @@ -1,3 +1,18 @@ +/* + * hostapd / Initialization and configuration + * Host AP kernel driver + * Copyright (c) 2002-2006, 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. + */ + #ifndef HOSTAPD_H #define HOSTAPD_H @@ -28,11 +43,17 @@ #include "config.h" +#ifdef _MSC_VER +#pragma pack(push, 1) +#endif /* _MSC_VER */ + +#define MAX_VLAN_ID 4094 + struct ieee8023_hdr { u8 dest[6]; u8 src[6]; u16 ethertype; -} __attribute__ ((packed)); +} STRUCT_PACKED; struct ieee80211_hdr { @@ -44,7 +65,11 @@ struct ieee80211_hdr { u16 seq_ctrl; /* followed by 'u8 addr4[6];' if ToDS and FromDS is set in data frame */ -} __attribute__ ((packed)); +} STRUCT_PACKED; + +#ifdef _MSC_VER +#pragma pack(pop) +#endif /* _MSC_VER */ #define IEEE80211_DA_FROMDS addr1 #define IEEE80211_BSSID_FROMDS addr2 @@ -61,21 +86,36 @@ struct ieee80211_hdr { extern unsigned char rfc1042_header[6]; -typedef struct hostapd_data hostapd; - struct hostap_sta_driver_data { unsigned long rx_packets, tx_packets, rx_bytes, tx_bytes; + unsigned long current_tx_rate; + unsigned long inactive_msec; + unsigned long flags; + unsigned long num_ps_buf_frames; + unsigned long tx_retry_failed; + unsigned long tx_retry_count; + int last_rssi; + int last_ack_rssi; }; struct driver_ops; struct wpa_ctrl_dst; struct radius_server_data; +#ifdef CONFIG_FULL_DYNAMIC_VLAN +struct full_dynamic_vlan; +#endif /* CONFIG_FULL_DYNAMIC_VLAN */ + +/** + * struct hostapd_data - hostapd per-BSS data structure + */ struct hostapd_data { - struct hostapd_config *conf; - char *config_fname; + struct hostapd_iface *iface; + struct hostapd_config *iconf; + struct hostapd_bss_config *conf; + int interface_added; /* virtual interface added for this BSS */ - u8 own_addr[6]; + u8 own_addr[ETH_ALEN]; int num_sta; /* number of entries in sta_list */ struct sta_info *sta_list; /* STA info list head */ @@ -93,6 +133,7 @@ struct hostapd_data { u8 default_wep_key_idx; struct radius_client_data *radius; + int radius_client_reconfigured; u32 acct_session_id_hi, acct_session_id_lo; struct iapp_data *iapp; @@ -106,16 +147,8 @@ struct hostapd_data { struct hostapd_cached_radius_acl *acl_cache; struct hostapd_acl_query_data *acl_queries; - u8 *wpa_ie; - size_t wpa_ie_len; struct wpa_authenticator *wpa_auth; -#define PMKID_HASH_SIZE 128 -#define PMKID_HASH(pmkid) (unsigned int) ((pmkid)[0] & 0x7f) - struct rsn_pmksa_cache *pmkid[PMKID_HASH_SIZE]; - struct rsn_pmksa_cache *pmksa; - int pmksa_count; - struct rsn_preauth_interface *preauth_iface; time_t michael_mic_failure; int michael_mic_failures; @@ -127,23 +160,96 @@ struct hostapd_data { void *ssl_ctx; void *eap_sim_db_priv; struct radius_server_data *radius_srv; + + int parameter_set_count; + +#ifdef CONFIG_FULL_DYNAMIC_VLAN + struct full_dynamic_vlan *full_dynamic_vlan; +#endif /* CONFIG_FULL_DYNAMIC_VLAN */ +}; + + +/** + * hostapd_iface_cb - Generic callback type for per-iface asynchronous requests + * @iface: the interface the event occured on. + * @status: 0 if the request succeeded; -1 if the request failed. + */ +typedef void (*hostapd_iface_cb)(struct hostapd_iface *iface, int status); + + +struct hostapd_config_change; + +/** + * struct hostapd_iface - hostapd per-interface data structure + */ +struct hostapd_iface { + char *config_fname; + struct hostapd_config *conf; + + hostapd_iface_cb setup_cb; + + size_t num_bss; + struct hostapd_data **bss; + + int num_ap; /* number of entries in ap_list */ + struct ap_info *ap_list; /* AP info list head */ + struct ap_info *ap_hash[STA_HASH_SIZE]; + struct ap_info *ap_iter_list; + + struct hostapd_hw_modes *hw_features; + int num_hw_features; + struct hostapd_hw_modes *current_mode; + /* Rates that are currently used (i.e., filtered copy of + * current_mode->channels */ + int num_rates; + struct hostapd_rate_data *current_rates; + hostapd_iface_cb hw_mode_sel_cb; + + u16 hw_flags; + + /* Number of associated Non-ERP stations (i.e., stations using 802.11b + * in 802.11g BSS) */ + int num_sta_non_erp; + + /* Number of associated stations that do not support Short Slot Time */ + int num_sta_no_short_slot_time; + + /* Number of associated stations that do not support Short Preamble */ + int num_sta_no_short_preamble; + + int olbc; /* Overlapping Legacy BSS Condition */ + + int dfs_enable; + u8 pwr_const; + unsigned int tx_power; + unsigned int sta_max_power; + + unsigned int channel_switch; + + struct hostapd_config_change *change; + hostapd_iface_cb reload_iface_cb; + hostapd_iface_cb config_reload_cb; }; -void hostapd_new_assoc_sta(hostapd *hapd, struct sta_info *sta, int reassoc); +void hostapd_new_assoc_sta(struct hostapd_data *hapd, struct sta_info *sta, + int reassoc); void hostapd_logger(struct hostapd_data *hapd, const u8 *addr, unsigned int module, int level, const char *fmt, - ...) __attribute__ ((format (printf, 5, 6))); + ...) PRINTF_FORMAT(5, 6); +#ifndef _MSC_VER #define HOSTAPD_DEBUG(level, args...) \ do { \ if (hapd->conf == NULL || hapd->conf->debug >= (level)) \ printf(args); \ } while (0) +#endif /* _MSC_VER */ #define HOSTAPD_DEBUG_COND(level) (hapd->conf->debug >= (level)) const char * hostapd_ip_txt(const struct hostapd_ip_addr *addr, char *buf, size_t buflen); +int hostapd_ip_diff(struct hostapd_ip_addr *a, struct hostapd_ip_addr *b); #endif /* HOSTAPD_H */ |