diff options
Diffstat (limited to 'contrib/hostapd/hostapd.h')
-rw-r--r-- | contrib/hostapd/hostapd.h | 134 |
1 files changed, 134 insertions, 0 deletions
diff --git a/contrib/hostapd/hostapd.h b/contrib/hostapd/hostapd.h new file mode 100644 index 000000000000..9e6da65b6cdc --- /dev/null +++ b/contrib/hostapd/hostapd.h @@ -0,0 +1,134 @@ +#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 + +#include "hostap_common.h" +#include "config.h" + +struct ieee8023_hdr { + u8 dest[6]; + u8 src[6]; + u16 ethertype; +} __attribute__ ((packed)); + + +struct ieee80211_hdr { + u16 frame_control; + u16 duration_id; + u8 addr1[6]; + u8 addr2[6]; + u8 addr3[6]; + u16 seq_ctrl; + /* followed by 'u8 addr4[6];' if ToDS and FromDS is set in data frame + */ +} __attribute__ ((packed)); + +#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]; + +typedef struct hostapd_data hostapd; + +struct hostap_sta_driver_data { + unsigned long rx_packets, tx_packets, rx_bytes, tx_bytes; +}; + +struct driver_ops; +struct wpa_ctrl_dst; +struct radius_server_data; + +struct hostapd_data { + struct hostapd_config *conf; + char *config_fname; + + u8 own_addr[6]; + + 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]; + + struct driver_ops *driver; + + u8 *default_wep_key; + u8 default_wep_key_idx; + + struct radius_client_data *radius; + u32 acct_session_id_hi, acct_session_id_lo; + + struct iapp_data *iapp; + + enum { DO_NOT_ASSOC = 0, WAIT_BEACON, AUTHENTICATE, ASSOCIATE, + ASSOCIATED } assoc_ap_state; + char assoc_ap_ssid[33]; + int assoc_ap_ssid_len; + u16 assoc_ap_aid; + + 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; + 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; +}; + +void hostapd_new_assoc_sta(hostapd *hapd, struct sta_info *sta); +void hostapd_logger(hostapd *hapd, u8 *addr, unsigned int module, int level, + char *fmt, ...) __attribute__ ((format (printf, 5, 6))); + + +#define HOSTAPD_DEBUG(level, args...) \ +do { \ + if (hapd->conf == NULL || hapd->conf->debug >= (level)) \ + printf(args); \ +} while (0) + +#define HOSTAPD_DEBUG_COND(level) (hapd->conf->debug >= (level)) + +#endif /* HOSTAPD_H */ |