nl80211: Replace hostapd WEXT events with nl80211 events
[wpasupplicant] / hostapd / hostapd.h
index 33c3e73..03123f8 100644 (file)
 #define HOSTAPD_H
 
 #include "common.h"
-#include "ap.h"
 #include "hostapd_defs.h"
-#include "config.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;
@@ -43,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;
@@ -95,6 +98,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 */
 };
 
@@ -103,6 +108,7 @@ struct hostapd_data {
  * struct hostapd_iface - hostapd per-interface data structure
  */
 struct hostapd_iface {
+       void *owner;
        char *config_fname;
        struct hostapd_config *conf;
 
@@ -154,5 +160,16 @@ struct hostapd_iface {
 };
 
 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 */