]> git.ipfire.org Git - thirdparty/hostap.git/blobdiff - wpa_supplicant/wpa_supplicant_i.h
GAS: Add a generic GAS query module
[thirdparty/hostap.git] / wpa_supplicant / wpa_supplicant_i.h
index 8a2e69057625f741d52351b18beaf626d6882b82..ef1ba11d291f9623ff59efa96309974a36fad723 100644 (file)
@@ -17,6 +17,7 @@
 
 #include "utils/list.h"
 #include "common/defs.h"
+#include "config_ssid.h"
 
 extern const char *wpa_supplicant_version;
 extern const char *wpa_supplicant_license;
@@ -34,6 +35,7 @@ struct ibss_rsn;
 struct scan_info;
 struct wpa_bss;
 struct wpa_scan_results;
+struct hostapd_hw_modes;
 
 /*
  * Forward declarations of private structures used within the ctrl_iface
@@ -180,6 +182,14 @@ struct wpa_params {
         * created.
         */
        char *override_ctrl_interface;
+
+       /**
+        * entropy_file - Optional entropy file
+        *
+        * This parameter can be used to configure wpa_supplicant to maintain
+        * its internal entropy store over restarts.
+        */
+       char *entropy_file;
 };
 
 struct p2p_srv_bonjour {
@@ -214,6 +224,7 @@ struct wpa_global {
        struct dl_list p2p_srv_bonjour; /* struct p2p_srv_bonjour */
        struct dl_list p2p_srv_upnp; /* struct p2p_srv_upnp */
        int p2p_disabled;
+       int cross_connection;
 };
 
 
@@ -332,6 +343,7 @@ struct wpa_supplicant {
 #endif /* CONFIG_CTRL_IFACE_DBUS */
 #ifdef CONFIG_CTRL_IFACE_DBUS_NEW
        char *dbus_new_path;
+       char *dbus_groupobj_path;
 #endif /* CONFIG_CTRL_IFACE_DBUS_NEW */
        char bridge_ifname[16];
 
@@ -354,6 +366,7 @@ struct wpa_supplicant {
        int pairwise_cipher;
        int group_cipher;
        int key_mgmt;
+       int wpa_proto;
        int mgmt_group_cipher;
 
        void *drv_priv; /* private data used by driver_ops */
@@ -402,11 +415,14 @@ struct wpa_supplicant {
        int scan_req; /* manual scan request; this forces a scan even if there
                       * are no enabled networks in the configuration */
        int scan_runs; /* number of scan runs since WPS was started */
+       int *next_scan_freqs;
+       int scan_interval; /* time in sec between scans to find suitable AP */
 
        struct wpa_client_mlme mlme;
        unsigned int drv_flags;
        int max_scan_ssids;
        unsigned int max_remain_on_chan;
+       unsigned int max_stations;
 
        int pending_mic_error_report;
        int pending_mic_error_pairwise;
@@ -423,6 +439,11 @@ struct wpa_supplicant {
 
        struct ibss_rsn *ibss_rsn;
 
+       int set_sta_uapsd;
+       int sta_uapsd;
+       int set_ap_uapsd;
+       int ap_uapsd;
+
 #ifdef CONFIG_SME
        struct {
                u8 ssid[32];
@@ -438,6 +459,15 @@ struct wpa_supplicant {
                u8 prev_bssid[ETH_ALEN];
                int prev_bssid_set;
                int auth_alg;
+               int proto;
+
+               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;
        } sme;
 #endif /* CONFIG_SME */
 
@@ -452,7 +482,7 @@ struct wpa_supplicant {
        struct p2p_go_neg_results *go_params;
        int create_p2p_iface;
        u8 pending_interface_addr[ETH_ALEN];
-       char pending_interface_name[IFNAMSIZ];
+       char pending_interface_name[100];
        int pending_interface_type;
        int p2p_group_idx;
        unsigned int off_channel_freq;
@@ -471,8 +501,10 @@ struct wpa_supplicant {
                P2P_GROUP_INTERFACE_CLIENT
        } p2p_group_interface;
        struct p2p_group *p2p_group;
-       int p2p_long_listen;
+       int p2p_long_listen; /* remaining time in long Listen state in ms */
        char p2p_pin[10];
+       int p2p_wps_method;
+       u8 p2p_auth_invite[ETH_ALEN];
        int p2p_sd_over_ctrl_iface;
        int p2p_in_provisioning;
        int pending_invite_ssid_id;
@@ -482,18 +514,57 @@ struct wpa_supplicant {
        u8 pending_join_iface_addr[ETH_ALEN];
        u8 pending_join_dev_addr[ETH_ALEN];
        int pending_join_wps_method;
+       int p2p_join_scan_count;
        unsigned int roc_waiting_drv_freq;
+       int action_tx_wait_time;
+       int force_long_sd;
+
+       /*
+        * Whether cross connection is disallowed by the AP to which this
+        * interface is associated (only valid if there is an association).
+        */
+       int cross_connect_disallowed;
+
+       /*
+        * Whether this P2P group is configured to use cross connection (only
+        * valid if this is P2P GO interface). The actual cross connect packet
+        * forwarding may not be configured depending on the uplink status.
+        */
+       int cross_connect_enabled;
+
+       /* Whether cross connection forwarding is in use at the moment. */
+       int cross_connect_in_use;
+
+       /*
+        * Uplink interface name for cross connection
+        */
+       char cross_connect_uplink[100];
+
+       enum {
+               P2P_GROUP_REMOVAL_UNKNOWN,
+               P2P_GROUP_REMOVAL_REQUESTED,
+               P2P_GROUP_REMOVAL_IDLE_TIMEOUT,
+               P2P_GROUP_REMOVAL_UNAVAILABLE
+       } removal_reason;
 #endif /* CONFIG_P2P */
 
        struct wpa_ssid *bgscan_ssid;
        const struct bgscan_ops *bgscan;
        void *bgscan_priv;
 
-       int connect_without_scan;
+       struct wpa_ssid *connect_without_scan;
 
        int after_wps;
        unsigned int wps_freq;
        int wps_fragment_size;
+       int auto_reconnect_disabled;
+
+        /* Channel preferences for AP/P2P GO use */
+       int best_24_freq;
+       int best_5_freq;
+       int best_overall_freq;
+
+       struct gas_query *gas;
 };
 
 
@@ -519,6 +590,7 @@ void wpa_supplicant_req_auth_timeout(struct wpa_supplicant *wpa_s,
 void wpa_supplicant_set_state(struct wpa_supplicant *wpa_s,
                              enum wpa_states state);
 struct wpa_ssid * wpa_supplicant_get_ssid(struct wpa_supplicant *wpa_s);
+const char * wpa_supplicant_get_eap_mode(struct wpa_supplicant *wpa_s);
 void wpa_supplicant_cancel_auth_timeout(struct wpa_supplicant *wpa_s);
 void wpa_supplicant_deauthenticate(struct wpa_supplicant *wpa_s,
                                   int reason_code);
@@ -533,6 +605,10 @@ void wpa_supplicant_select_network(struct wpa_supplicant *wpa_s,
                                   struct wpa_ssid *ssid);
 int wpa_supplicant_set_ap_scan(struct wpa_supplicant *wpa_s,
                               int ap_scan);
+int wpa_supplicant_set_bss_expiration_age(struct wpa_supplicant *wpa_s,
+                                         unsigned int expire_age);
+int wpa_supplicant_set_bss_expiration_count(struct wpa_supplicant *wpa_s,
+                                           unsigned int expire_count);
 int wpa_supplicant_set_debug_params(struct wpa_global *global,
                                    int debug_level, int debug_timestamp,
                                    int debug_show_keys);
@@ -558,6 +634,10 @@ enum wpa_key_mgmt key_mgmt2driver(int key_mgmt);
 enum wpa_cipher cipher_suite2driver(int cipher);
 void wpa_supplicant_update_config(struct wpa_supplicant *wpa_s);
 void wpa_supplicant_clear_status(struct wpa_supplicant *wpa_s);
+void ieee80211_sta_free_hw_features(struct hostapd_hw_modes *hw_features,
+                                   size_t num_hw_features);
+void wpas_connection_failed(struct wpa_supplicant *wpa_s, const u8 *bssid);
+int wpas_driver_bss_selection(struct wpa_supplicant *wpa_s);
 
 /* events.c */
 void wpa_supplicant_mark_disassoc(struct wpa_supplicant *wpa_s);
@@ -568,4 +648,14 @@ void wpa_supplicant_connect(struct wpa_supplicant *wpa_s,
 /* eap_register.c */
 int eap_register_methods(void);
 
+/**
+ * Utility method to tell if a given network is a persistent group
+ * @ssid: Network object
+ * Returns: 1 if network is a persistent group, 0 otherwise
+ */
+static inline int network_is_persistent_group(struct wpa_ssid *ssid)
+{
+       return ((ssid->disabled == 2) || ssid->p2p_persistent_group);
+}
+
 #endif /* WPA_SUPPLICANT_I_H */