X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;f=hostapd%2Fhostapd.h;h=03123f8712c08365d7cb175ed219c2de00ab5c43;hb=c51218372f6ee40c3830b4cb06fa58752e546d06;hp=d98982019b84c6cffae7d7945d76576d6aec94ec;hpb=de9289c8e9ee2891b4999e615857430e82181ad4;p=wpasupplicant diff --git a/hostapd/hostapd.h b/hostapd/hostapd.h index d989820..03123f8 100644 --- a/hostapd/hostapd.h +++ b/hostapd/hostapd.h @@ -1,7 +1,8 @@ /* * hostapd / Initialization and configuration * Host AP kernel driver - * Copyright (c) 2002-2007, Jouni Malinen + * Copyright (c) 2002-2008, Jouni Malinen + * 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 @@ -17,88 +18,12 @@ #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; -}; +#include "hostapd_defs.h" struct wpa_driver_ops; struct wpa_ctrl_dst; struct radius_server_data; +struct upnp_wps_device_sm; #ifdef CONFIG_FULL_DYNAMIC_VLAN struct full_dynamic_vlan; @@ -117,13 +42,17 @@ struct hostapd_data { int num_sta; /* number of entries in sta_list */ struct sta_info *sta_list; /* STA info list head */ +#define STA_HASH_SIZE 256 +#define STA_HASH(sta) (sta[5]) 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 + /* + * Bitfield for indicating which AIDs are allocated. Only AID values + * 1-2007 are used and as such, the bit at index 0 corresponds to AID + * 1. */ - struct sta_info *sta_aid[MAX_AID_TABLE_SIZE]; +#define AID_WORDS ((2008 + 31) / 32) + u32 sta_aid[AID_WORDS]; const struct wpa_driver_ops *driver; void *drv_priv; @@ -137,12 +66,6 @@ struct hostapd_data { 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; @@ -168,28 +91,27 @@ struct hostapd_data { #endif /* CONFIG_FULL_DYNAMIC_VLAN */ struct l2_packet_data *l2; + struct wps_context *wps; + +#ifdef CONFIG_WPS + u8 *wps_beacon_ie; + size_t wps_beacon_ie_len; + u8 *wps_probe_resp_ie; + size_t wps_probe_resp_ie_len; + unsigned int ap_pin_failures; + struct upnp_wps_device_sm *wps_upnp; +#endif /* CONFIG_WPS */ }; /** - * 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 { + void *owner; char *config_fname; struct hostapd_config *conf; - hostapd_iface_cb setup_cb; - size_t num_bss; struct hostapd_data **bss; @@ -205,7 +127,6 @@ struct hostapd_iface { * current_mode->channels */ int num_rates; struct hostapd_rate_data *current_rates; - hostapd_iface_cb hw_mode_sel_cb; u16 hw_flags; @@ -233,19 +154,22 @@ struct hostapd_iface { /* Overlapping BSS information */ int olbc_ht; - 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; +#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); +int hostapd_reload_config(struct hostapd_iface *iface); +struct hostapd_data * +hostapd_alloc_bss_data(struct hostapd_iface *hapd_iface, + struct hostapd_config *conf, + struct hostapd_bss_config *bss); +int hostapd_setup_interface(struct hostapd_iface *iface); +void hostapd_interface_deinit(struct hostapd_iface *iface); +int handle_reload_iface(struct hostapd_iface *iface, void *ctx); +int handle_dump_state_iface(struct hostapd_iface *iface, void *ctx); + +int hostapd_for_each_interface(int (*cb)(struct hostapd_iface *iface, + void *ctx), void *ctx); #endif /* HOSTAPD_H */