123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226 |
- /*
- * hostapd / Initialization and configuration
- * Host AP kernel driver
- * Copyright (c) 2002-2008, Jouni Malinen <j@w1.fi>
- * Copyright (c) 2007-2008, Intel Corporation
- *
- * 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
- #include "common.h"
- #include "ap.h"
- #ifndef ETH_ALEN
- #define ETH_ALEN 6
- #endif
- #ifndef IFNAMSIZ
- #define IFNAMSIZ 16
- #endif
- #ifndef ETH_P_ALL
- #define ETH_P_ALL 0x0003
- #endif
- #ifndef ETH_P_PAE
- #define ETH_P_PAE 0x888E /* Port Access Entity (IEEE 802.1X) */
- #endif /* ETH_P_PAE */
- #ifndef ETH_P_EAPOL
- #define ETH_P_EAPOL ETH_P_PAE
- #endif /* ETH_P_EAPOL */
- #ifndef ETH_P_RRB
- #define ETH_P_RRB 0x890D
- #endif /* ETH_P_RRB */
- #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;
- } STRUCT_PACKED;
- struct ieee80211_hdr {
- le16 frame_control;
- le16 duration_id;
- u8 addr1[6];
- u8 addr2[6];
- u8 addr3[6];
- le16 seq_ctrl;
- /* followed by 'u8 addr4[6];' if ToDS and FromDS is set in data frame
- */
- } STRUCT_PACKED;
- #ifdef _MSC_VER
- #pragma pack(pop)
- #endif /* _MSC_VER */
- #define IEEE80211_DA_FROMDS addr1
- #define IEEE80211_BSSID_FROMDS addr2
- #define IEEE80211_SA_FROMDS addr3
- #define IEEE80211_HDRLEN (sizeof(struct ieee80211_hdr))
- #define IEEE80211_FC(type, stype) host_to_le16((type << 2) | (stype << 4))
- /* MTU to be set for the wlan#ap device; this is mainly needed for IEEE 802.1X
- * frames that might be longer than normal default MTU and they are not
- * fragmented */
- #define HOSTAPD_MTU 2290
- extern unsigned char rfc1042_header[6];
- 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 wpa_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_iface *iface;
- struct hostapd_config *iconf;
- struct hostapd_bss_config *conf;
- int interface_added; /* virtual interface added for this BSS */
- u8 own_addr[ETH_ALEN];
- int num_sta; /* number of entries in sta_list */
- struct sta_info *sta_list; /* STA info list head */
- struct sta_info *sta_hash[STA_HASH_SIZE];
- /* pointers to STA info; based on allocated AID or NULL if AID free
- * AID is in the range 1-2007, so sta_aid[0] corresponders to AID 1
- * and so on
- */
- struct sta_info *sta_aid[MAX_AID_TABLE_SIZE];
- const struct wpa_driver_ops *driver;
- void *drv_priv;
- u8 *default_wep_key;
- 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;
- struct hostapd_cached_radius_acl *acl_cache;
- struct hostapd_acl_query_data *acl_queries;
- struct wpa_authenticator *wpa_auth;
- struct eapol_authenticator *eapol_auth;
- struct rsn_preauth_interface *preauth_iface;
- time_t michael_mic_failure;
- int michael_mic_failures;
- int tkip_countermeasures;
- int ctrl_sock;
- struct wpa_ctrl_dst *ctrl_dst;
- 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 */
- struct l2_packet_data *l2;
- };
- /**
- * struct hostapd_iface - hostapd per-interface data structure
- */
- struct hostapd_iface {
- char *config_fname;
- struct hostapd_config *conf;
- 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;
- 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 */
- /* Number of HT associated stations that do not support greenfield */
- int num_sta_ht_no_gf;
- /* Number of associated non-HT stations */
- int num_sta_no_ht;
- /* Number of HT associated stations 20 MHz */
- int num_sta_ht_20mhz;
- /* Overlapping BSS information */
- int olbc_ht;
- #ifdef CONFIG_IEEE80211N
- u16 ht_op_mode;
- #endif /* CONFIG_IEEE80211N */
- };
- void hostapd_new_assoc_sta(struct hostapd_data *hapd, struct sta_info *sta,
- int reassoc);
- #endif /* HOSTAPD_H */
|