Parcourir la source

Move STA entry structure into sta_info.h and remove ap.h

This cleans up some of the hostapd include file usage and only includes
the needed STA flags into driver wrappers.
Jouni Malinen il y a 16 ans
Parent
commit
97234b5073

+ 1 - 0
hostapd/accounting.c

@@ -21,6 +21,7 @@
 #include "accounting.h"
 #include "ieee802_1x.h"
 #include "driver_i.h"
+#include "sta_info.h"
 
 
 /* Default interval in seconds for polling TX/RX octets from the driver if

+ 0 - 131
hostapd/ap.h

@@ -1,131 +0,0 @@
-/*
- * hostapd / Station table data structures
- * 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 AP_H
-#define AP_H
-
-#ifdef CONFIG_IEEE80211N
-#include "ieee802_11_defs.h"
-#endif /* CONFIG_IEEE80211N */
-
-/* STA flags */
-#define WLAN_STA_AUTH BIT(0)
-#define WLAN_STA_ASSOC BIT(1)
-#define WLAN_STA_PS BIT(2)
-#define WLAN_STA_TIM BIT(3)
-#define WLAN_STA_PERM BIT(4)
-#define WLAN_STA_AUTHORIZED BIT(5)
-#define WLAN_STA_PENDING_POLL BIT(6) /* pending activity poll not ACKed */
-#define WLAN_STA_SHORT_PREAMBLE BIT(7)
-#define WLAN_STA_PREAUTH BIT(8)
-#define WLAN_STA_WMM BIT(9)
-#define WLAN_STA_MFP BIT(10)
-#define WLAN_STA_HT BIT(11)
-#define WLAN_STA_WPS BIT(12)
-#define WLAN_STA_MAYBE_WPS BIT(13)
-#define WLAN_STA_NONERP BIT(31)
-
-/* Maximum number of supported rates (from both Supported Rates and Extended
- * Supported Rates IEs). */
-#define WLAN_SUPP_RATES_MAX 32
-
-
-struct sta_info {
-	struct sta_info *next; /* next entry in sta list */
-	struct sta_info *hnext; /* next entry in hash table list */
-	u8 addr[6];
-	u16 aid; /* STA's unique AID (1 .. 2007) or 0 if not yet assigned */
-	u32 flags;
-	u16 capability;
-	u16 listen_interval; /* or beacon_int for APs */
-	u8 supported_rates[WLAN_SUPP_RATES_MAX];
-	int supported_rates_len;
-
-	unsigned int nonerp_set:1;
-	unsigned int no_short_slot_time_set:1;
-	unsigned int no_short_preamble_set:1;
-	unsigned int no_ht_gf_set:1;
-	unsigned int no_ht_set:1;
-	unsigned int ht_20mhz_set:1;
-
-	u16 auth_alg;
-	u8 previous_ap[6];
-
-	enum {
-		STA_NULLFUNC = 0, STA_DISASSOC, STA_DEAUTH, STA_REMOVE
-	} timeout_next;
-
-	/* IEEE 802.1X related data */
-	struct eapol_state_machine *eapol_sm;
-
-	/* IEEE 802.11f (IAPP) related data */
-	struct ieee80211_mgmt *last_assoc_req;
-
-	u32 acct_session_id_hi;
-	u32 acct_session_id_lo;
-	time_t acct_session_start;
-	int acct_session_started;
-	int acct_terminate_cause; /* Acct-Terminate-Cause */
-	int acct_interim_interval; /* Acct-Interim-Interval */
-
-	unsigned long last_rx_bytes;
-	unsigned long last_tx_bytes;
-	u32 acct_input_gigawords; /* Acct-Input-Gigawords */
-	u32 acct_output_gigawords; /* Acct-Output-Gigawords */
-
-	u8 *challenge; /* IEEE 802.11 Shared Key Authentication Challenge */
-
-	struct wpa_state_machine *wpa_sm;
-	struct rsn_preauth_interface *preauth_iface;
-
-	struct hostapd_ssid *ssid; /* SSID selection based on (Re)AssocReq */
-	struct hostapd_ssid *ssid_probe; /* SSID selection based on ProbeReq */
-
-	int vlan_id;
-
-#ifdef CONFIG_IEEE80211N
-	struct ht_cap_ie ht_capabilities; /* IEEE 802.11n capabilities */
-#endif /* CONFIG_IEEE80211N */
-
-#ifdef CONFIG_IEEE80211W
-	int sa_query_count; /* number of pending SA Query requests;
-			     * 0 = no SA Query in progress */
-	int sa_query_timed_out;
-	u8 *sa_query_trans_id; /* buffer of WLAN_SA_QUERY_TR_ID_LEN *
-				* sa_query_count octets of pending SA Query
-				* transaction identifiers */
-	struct os_time sa_query_start;
-#endif /* CONFIG_IEEE80211W */
-
-	struct wpabuf *wps_ie; /* WPS IE from (Re)Association Request */
-};
-
-
-/* Default value for maximum station inactivity. After AP_MAX_INACTIVITY has
- * passed since last received frame from the station, a nullfunc data frame is
- * sent to the station. If this frame is not acknowledged and no other frames
- * have been received, the station will be disassociated after
- * AP_DISASSOC_DELAY seconds. Similarily, the station will be deauthenticated
- * after AP_DEAUTH_DELAY seconds has passed after disassociation. */
-#define AP_MAX_INACTIVITY (5 * 60)
-#define AP_DISASSOC_DELAY (1)
-#define AP_DEAUTH_DELAY (1)
-/* Number of seconds to keep STA entry with Authenticated flag after it has
- * been disassociated. */
-#define AP_MAX_INACTIVITY_AFTER_DISASSOC (1 * 30)
-/* Number of seconds to keep STA entry after it has been deauthenticated. */
-#define AP_MAX_INACTIVITY_AFTER_DEAUTH (1 * 5)
-
-#endif /* AP_H */

+ 1 - 0
hostapd/ap_list.c

@@ -20,6 +20,7 @@
 #include "hostapd.h"
 #include "ieee802_11.h"
 #include "eloop.h"
+#include "sta_info.h"
 #include "ap_list.h"
 #include "hw_features.h"
 #include "beacon.h"

+ 2 - 0
hostapd/beacon.h

@@ -16,6 +16,8 @@
 #ifndef BEACON_H
 #define BEACON_H
 
+struct ieee80211_mgmt *mgmt;
+
 void handle_probe_req(struct hostapd_data *hapd, struct ieee80211_mgmt *mgmt,
 		      size_t len);
 #ifdef NEED_MLME

+ 1 - 0
hostapd/config.c

@@ -27,6 +27,7 @@
 #include "wpa.h"
 #include "uuid.h"
 #include "eap_common/eap_wsc_common.h"
+#include "sta_info.h"
 
 
 #define MAX_STA_COUNT 2007

+ 2 - 0
hostapd/driver.h

@@ -16,6 +16,8 @@
 #ifndef DRIVER_H
 #define DRIVER_H
 
+#include "sta_flags.h"
+
 struct hostapd_data;
 
 struct hostap_sta_driver_data {

+ 1 - 2
hostapd/hostapd.c

@@ -25,11 +25,10 @@
 #include "accounting.h"
 #include "eapol_sm.h"
 #include "iapp.h"
-#include "ap.h"
 #include "ieee802_11_defs.h"
 #include "ieee802_11_auth.h"
-#include "ap_list.h"
 #include "sta_info.h"
+#include "ap_list.h"
 #include "driver_i.h"
 #include "radius/radius_client.h"
 #include "radius/radius_server.h"

+ 0 - 1
hostapd/hostapd.h

@@ -18,7 +18,6 @@
 #define HOSTAPD_H
 
 #include "common.h"
-#include "ap.h"
 #include "hostapd_defs.h"
 #include "config.h"
 

+ 1 - 0
hostapd/hw_features.c

@@ -17,6 +17,7 @@
 #include "includes.h"
 
 #include "hostapd.h"
+#include "ieee802_11_defs.h"
 #include "hw_features.h"
 #include "driver_i.h"
 #include "config.h"

+ 1 - 0
hostapd/mlme.c

@@ -19,6 +19,7 @@
 #include "hostapd.h"
 #include "ieee802_11.h"
 #include "wpa.h"
+#include "sta_info.h"
 #include "mlme.h"
 
 

+ 1 - 1
hostapd/pmksa_cache.c

@@ -15,7 +15,7 @@
 #include "includes.h"
 
 #include "common.h"
-#include "ap.h"
+#include "sta_info.h"
 #include "config.h"
 #include "common.h"
 #include "eloop.h"

+ 35 - 0
hostapd/sta_flags.h

@@ -0,0 +1,35 @@
+/*
+ * hostapd - driver interface definition
+ * Copyright (c) 2002-2009, Jouni Malinen <j@w1.fi>
+ *
+ * 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 STA_FLAGS_H
+#define STA_FLAGS_H
+
+/* STA flags */
+#define WLAN_STA_AUTH BIT(0)
+#define WLAN_STA_ASSOC BIT(1)
+#define WLAN_STA_PS BIT(2)
+#define WLAN_STA_TIM BIT(3)
+#define WLAN_STA_PERM BIT(4)
+#define WLAN_STA_AUTHORIZED BIT(5)
+#define WLAN_STA_PENDING_POLL BIT(6) /* pending activity poll not ACKed */
+#define WLAN_STA_SHORT_PREAMBLE BIT(7)
+#define WLAN_STA_PREAUTH BIT(8)
+#define WLAN_STA_WMM BIT(9)
+#define WLAN_STA_MFP BIT(10)
+#define WLAN_STA_HT BIT(11)
+#define WLAN_STA_WPS BIT(12)
+#define WLAN_STA_MAYBE_WPS BIT(13)
+#define WLAN_STA_NONERP BIT(31)
+
+#endif /* STA_FLAGS_H */

+ 100 - 0
hostapd/sta_info.h

@@ -15,6 +15,106 @@
 #ifndef STA_INFO_H
 #define STA_INFO_H
 
+#include "sta_flags.h"
+
+#ifdef CONFIG_IEEE80211N
+#include "ieee802_11_defs.h"
+#endif /* CONFIG_IEEE80211N */
+
+/* Maximum number of supported rates (from both Supported Rates and Extended
+ * Supported Rates IEs). */
+#define WLAN_SUPP_RATES_MAX 32
+
+
+struct sta_info {
+	struct sta_info *next; /* next entry in sta list */
+	struct sta_info *hnext; /* next entry in hash table list */
+	u8 addr[6];
+	u16 aid; /* STA's unique AID (1 .. 2007) or 0 if not yet assigned */
+	u32 flags;
+	u16 capability;
+	u16 listen_interval; /* or beacon_int for APs */
+	u8 supported_rates[WLAN_SUPP_RATES_MAX];
+	int supported_rates_len;
+
+	unsigned int nonerp_set:1;
+	unsigned int no_short_slot_time_set:1;
+	unsigned int no_short_preamble_set:1;
+	unsigned int no_ht_gf_set:1;
+	unsigned int no_ht_set:1;
+	unsigned int ht_20mhz_set:1;
+
+	u16 auth_alg;
+	u8 previous_ap[6];
+
+	enum {
+		STA_NULLFUNC = 0, STA_DISASSOC, STA_DEAUTH, STA_REMOVE
+	} timeout_next;
+
+	/* IEEE 802.1X related data */
+	struct eapol_state_machine *eapol_sm;
+
+	/* IEEE 802.11f (IAPP) related data */
+	struct ieee80211_mgmt *last_assoc_req;
+
+	u32 acct_session_id_hi;
+	u32 acct_session_id_lo;
+	time_t acct_session_start;
+	int acct_session_started;
+	int acct_terminate_cause; /* Acct-Terminate-Cause */
+	int acct_interim_interval; /* Acct-Interim-Interval */
+
+	unsigned long last_rx_bytes;
+	unsigned long last_tx_bytes;
+	u32 acct_input_gigawords; /* Acct-Input-Gigawords */
+	u32 acct_output_gigawords; /* Acct-Output-Gigawords */
+
+	u8 *challenge; /* IEEE 802.11 Shared Key Authentication Challenge */
+
+	struct wpa_state_machine *wpa_sm;
+	struct rsn_preauth_interface *preauth_iface;
+
+	struct hostapd_ssid *ssid; /* SSID selection based on (Re)AssocReq */
+	struct hostapd_ssid *ssid_probe; /* SSID selection based on ProbeReq */
+
+	int vlan_id;
+
+#ifdef CONFIG_IEEE80211N
+	struct ht_cap_ie ht_capabilities; /* IEEE 802.11n capabilities */
+#endif /* CONFIG_IEEE80211N */
+
+#ifdef CONFIG_IEEE80211W
+	int sa_query_count; /* number of pending SA Query requests;
+			     * 0 = no SA Query in progress */
+	int sa_query_timed_out;
+	u8 *sa_query_trans_id; /* buffer of WLAN_SA_QUERY_TR_ID_LEN *
+				* sa_query_count octets of pending SA Query
+				* transaction identifiers */
+	struct os_time sa_query_start;
+#endif /* CONFIG_IEEE80211W */
+
+	struct wpabuf *wps_ie; /* WPS IE from (Re)Association Request */
+};
+
+
+/* Default value for maximum station inactivity. After AP_MAX_INACTIVITY has
+ * passed since last received frame from the station, a nullfunc data frame is
+ * sent to the station. If this frame is not acknowledged and no other frames
+ * have been received, the station will be disassociated after
+ * AP_DISASSOC_DELAY seconds. Similarily, the station will be deauthenticated
+ * after AP_DEAUTH_DELAY seconds has passed after disassociation. */
+#define AP_MAX_INACTIVITY (5 * 60)
+#define AP_DISASSOC_DELAY (1)
+#define AP_DEAUTH_DELAY (1)
+/* Number of seconds to keep STA entry with Authenticated flag after it has
+ * been disassociated. */
+#define AP_MAX_INACTIVITY_AFTER_DISASSOC (1 * 30)
+/* Number of seconds to keep STA entry after it has been deauthenticated. */
+#define AP_MAX_INACTIVITY_AFTER_DEAUTH (1 * 5)
+
+
+struct hostapd_data;
+
 int ap_for_each_sta(struct hostapd_data *hapd,
 		    int (*cb)(struct hostapd_data *hapd, struct sta_info *sta,
 			      void *ctx),