Remove disconnected APs from BSS table if likely out-of-range
[mech_eap.git] / wpa_supplicant / wpa_supplicant_i.h
index 269bac0..5d8ac81 100644 (file)
@@ -44,6 +44,7 @@ struct wpa_driver_associate_params;
 struct ctrl_iface_priv;
 struct ctrl_iface_global_priv;
 struct wpas_dbus_priv;
+struct wpas_binder_priv;
 
 /**
  * struct wpa_interface - Parameters for wpa_supplicant_add_iface()
@@ -228,6 +229,17 @@ struct wpa_params {
        char *conf_p2p_dev;
 #endif /* CONFIG_P2P */
 
+#ifdef CONFIG_MATCH_IFACE
+       /**
+        * match_ifaces - Interface descriptions to match
+        */
+       struct wpa_interface *match_ifaces;
+
+       /**
+        * match_iface_count - Number of defined matching interfaces
+        */
+       int match_iface_count;
+#endif /* CONFIG_MATCH_IFACE */
 };
 
 struct p2p_srv_bonjour {
@@ -253,6 +265,7 @@ struct wpa_global {
        struct wpa_params params;
        struct ctrl_iface_global_priv *ctrl_iface;
        struct wpas_dbus_priv *dbus;
+       struct wpas_binder_priv *binder;
        void **drv_priv;
        size_t drv_count;
        struct os_time suspend_time;
@@ -380,11 +393,6 @@ struct wps_ap_info {
        u8 uuid[WPS_UUID_LEN];
 };
 
-struct wpa_ssid_value {
-       u8 ssid[SSID_MAX_LEN];
-       size_t ssid_len;
-};
-
 #define WPA_FREQ_USED_BY_INFRA_STATION BIT(0)
 #define WPA_FREQ_USED_BY_P2P_CLIENT BIT(1)
 
@@ -458,6 +466,9 @@ struct wpa_supplicant {
        unsigned char own_addr[ETH_ALEN];
        unsigned char perm_addr[ETH_ALEN];
        char ifname[100];
+#ifdef CONFIG_MATCH_IFACE
+       int matched;
+#endif /* CONFIG_MATCH_IFACE */
 #ifdef CONFIG_CTRL_IFACE_DBUS
        char *dbus_path;
 #endif /* CONFIG_CTRL_IFACE_DBUS */
@@ -468,6 +479,9 @@ struct wpa_supplicant {
        char *preq_notify_peer;
 #endif /* CONFIG_AP */
 #endif /* CONFIG_CTRL_IFACE_DBUS_NEW */
+#ifdef CONFIG_CTRL_IFACE_BINDER
+       const void *binder_object_key;
+#endif /* CONFIG_CTRL_IFACE_BINDER */
        char bridge_ifname[16];
 
        char *confname;
@@ -480,7 +494,8 @@ struct wpa_supplicant {
        u8 pending_bssid[ETH_ALEN]; /* If wpa_state == WPA_ASSOCIATING, this
                                     * field contains the target BSSID. */
        int reassociate; /* reassociation requested */
-       int reassoc_same_bss; /* reassociating to the same bss */
+       unsigned int reassoc_same_bss:1; /* reassociating to the same BSS */
+       unsigned int reassoc_same_ess:1; /* reassociating to the same ESS */
        int disconnected; /* all connections disabled; i.e., do no reassociate
                           * before this has been cleared */
        struct wpa_ssid *current_ssid;
@@ -754,7 +769,6 @@ struct wpa_supplicant {
        unsigned int mesh_if_created:1;
        unsigned int mesh_ht_enabled:1;
        unsigned int mesh_vht_enabled:1;
-       int mesh_auth_block_duration; /* sec */
 #endif /* CONFIG_MESH */
 
        unsigned int off_channel_freq;
@@ -879,6 +893,7 @@ struct wpa_supplicant {
 
        unsigned int p2p_go_max_oper_chwidth;
        unsigned int p2p_go_vht_center_freq2;
+       int p2p_lo_started;
 #endif /* CONFIG_P2P */
 
        struct wpa_ssid *bgscan_ssid;
@@ -1008,7 +1023,10 @@ struct wpa_supplicant {
        struct l2_packet_data *l2_test;
        unsigned int extra_roc_dur;
        enum wpa_supplicant_test_failure test_failure;
+       unsigned int reject_btm_req_reason;
        unsigned int p2p_go_csa_on_inv:1;
+       unsigned int ignore_auth_resp:1;
+       unsigned int ignore_assoc_disallow:1;
 #endif /* CONFIG_TESTING_OPTIONS */
 
        struct wmm_ac_assoc_data *wmm_ac_assoc_info;
@@ -1032,7 +1050,6 @@ struct wpa_supplicant {
                enum mbo_non_pref_chan_reason reason;
                u8 oper_class;
                u8 chan;
-               u8 reason_detail;
                u8 preference;
        } *non_pref_chan;
        size_t non_pref_chan_num;
@@ -1044,6 +1061,13 @@ struct wpa_supplicant {
         * the bss_temp_disallowed list for other purposes as well.
         */
        struct dl_list bss_tmp_disallowed;
+
+       /*
+        * Content of a measurement report element with type 8 (LCI),
+        * own location.
+        */
+       struct wpabuf *lci;
+       struct os_reltime lci_time;
 };
 
 
@@ -1085,6 +1109,8 @@ void wpa_supplicant_cancel_auth_timeout(struct wpa_supplicant *wpa_s);
 void wpa_supplicant_deauthenticate(struct wpa_supplicant *wpa_s,
                                   int reason_code);
 
+struct wpa_ssid * wpa_supplicant_add_network(struct wpa_supplicant *wpa_s);
+int wpa_supplicant_remove_network(struct wpa_supplicant *wpa_s, int id);
 void wpa_supplicant_enable_network(struct wpa_supplicant *wpa_s,
                                   struct wpa_ssid *ssid);
 void wpa_supplicant_disable_network(struct wpa_supplicant *wpa_s,
@@ -1109,6 +1135,8 @@ void free_hw_features(struct wpa_supplicant *wpa_s);
 
 void wpa_show_license(void);
 
+struct wpa_interface * wpa_supplicant_match_iface(struct wpa_global *global,
+                                                 const char *ifname);
 struct wpa_supplicant * wpa_supplicant_add_iface(struct wpa_global *global,
                                                 struct wpa_interface *iface,
                                                 struct wpa_supplicant *parent);
@@ -1138,6 +1166,7 @@ int disallowed_bssid(struct wpa_supplicant *wpa_s, const u8 *bssid);
 int disallowed_ssid(struct wpa_supplicant *wpa_s, const u8 *ssid,
                    size_t ssid_len);
 void wpas_request_connection(struct wpa_supplicant *wpa_s);
+void wpas_request_disconnection(struct wpa_supplicant *wpa_s);
 int wpas_build_ext_capab(struct wpa_supplicant *wpa_s, u8 *buf, size_t buflen);
 int wpas_update_random_addr(struct wpa_supplicant *wpa_s, int style);
 int wpas_update_random_addr_disassoc(struct wpa_supplicant *wpa_s);
@@ -1147,10 +1176,14 @@ void wpas_rrm_reset(struct wpa_supplicant *wpa_s);
 void wpas_rrm_process_neighbor_rep(struct wpa_supplicant *wpa_s,
                                   const u8 *report, size_t report_len);
 int wpas_rrm_send_neighbor_rep_request(struct wpa_supplicant *wpa_s,
-                                      const struct wpa_ssid *ssid,
+                                      const struct wpa_ssid_value *ssid,
+                                      int lci, int civic,
                                       void (*cb)(void *ctx,
                                                  struct wpabuf *neighbor_rep),
                                       void *cb_ctx);
+void wpas_rrm_handle_radio_measurement_request(struct wpa_supplicant *wpa_s,
+                                              const u8 *src,
+                                              const u8 *frame, size_t len);
 void wpas_rrm_handle_link_measurement_request(struct wpa_supplicant *wpa_s,
                                              const u8 *src,
                                              const u8 *frame, size_t len,
@@ -1171,6 +1204,8 @@ size_t wpas_mbo_ie_bss_trans_reject(struct wpa_supplicant *wpa_s, u8 *pos,
                                    size_t len,
                                    enum mbo_transition_reject_reason reason);
 void wpas_mbo_update_cell_capa(struct wpa_supplicant *wpa_s, u8 mbo_cell_capa);
+struct wpabuf * mbo_build_anqp_buf(struct wpa_supplicant *wpa_s,
+                                  struct wpa_bss *bss);
 
 /**
  * wpa_supplicant_ctrl_iface_ctrl_rsp_handle - Handle a control response