X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;f=hostapd%2Fhostapd.h;h=6c12c8e97f5f2b6362036a35de8a374f9f1c4e53;hb=f55802e8bfe8725efa238f1393a8d234f4e51d03;hp=85bcf0b16b43b2d7737ecefd67d4605f24b94676;hpb=ad08c3633cc2858d28b30a3545341e1e4dda4a90;p=wpasupplicant diff --git a/hostapd/hostapd.h b/hostapd/hostapd.h index 85bcf0b..6c12c8e 100644 --- a/hostapd/hostapd.h +++ b/hostapd/hostapd.h @@ -18,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; @@ -118,20 +42,21 @@ 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; - 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; @@ -170,6 +95,8 @@ struct hostapd_data { 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 */ }; @@ -178,6 +105,7 @@ struct hostapd_data { * struct hostapd_iface - hostapd per-interface data structure */ struct hostapd_iface { + void *owner; char *config_fname; struct hostapd_config *conf; @@ -223,13 +151,22 @@ struct hostapd_iface { /* Overlapping BSS information */ int olbc_ht; -#ifdef CONFIG_IEEE80211N u16 ht_op_mode; -#endif /* CONFIG_IEEE80211N */ + void (*scan_cb)(struct hostapd_iface *iface); }; -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); +int hostapd_setup_interface_complete(struct hostapd_iface *iface, int err); +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 */