]> git.ipfire.org Git - thirdparty/hostap.git/blobdiff - wpa_supplicant/wpa_supplicant_i.h
FILS: Track completion with FILS shared key authentication offload
[thirdparty/hostap.git] / wpa_supplicant / wpa_supplicant_i.h
index 5d8ac811e2decb46fd94386f2c34ab9ec0120d1a..45dc05c7f4218169fe48453351307a51cbd13df3 100644 (file)
@@ -9,6 +9,7 @@
 #ifndef WPA_SUPPLICANT_I_H
 #define WPA_SUPPLICANT_I_H
 
+#include "utils/bitfield.h"
 #include "utils/list.h"
 #include "common/defs.h"
 #include "common/sae.h"
@@ -295,7 +296,7 @@ struct wpa_global {
 
 #ifdef CONFIG_WIFI_DISPLAY
        int wifi_display;
-#define MAX_WFD_SUBELEMS 10
+#define MAX_WFD_SUBELEMS 12
        struct wpabuf *wfd_subelem[MAX_WFD_SUBELEMS];
 #endif /* CONFIG_WIFI_DISPLAY */
 
@@ -424,6 +425,9 @@ struct rrm_data {
 
        /* next_neighbor_rep_token - Next request's dialog token */
        u8 next_neighbor_rep_token;
+
+       /* token - Dialog token of the current radio measurement */
+       u8 token;
 };
 
 enum wpa_supplicant_test_failure {
@@ -446,6 +450,28 @@ struct wpa_bss_tmp_disallowed {
        struct os_reltime disallowed_until;
 };
 
+struct beacon_rep_data {
+       u8 token;
+       struct wpa_driver_scan_params scan_params;
+       u8 ssid[SSID_MAX_LEN];
+       size_t ssid_len;
+       u8 bssid[ETH_ALEN];
+       enum beacon_report_detail report_detail;
+       struct bitfield *eids;
+};
+
+
+struct external_pmksa_cache {
+       struct dl_list list;
+       void *pmksa_cache;
+};
+
+struct fils_hlp_req {
+       struct dl_list list;
+       u8 dst[ETH_ALEN];
+       struct wpabuf *pkt;
+};
+
 /**
  * struct wpa_supplicant - Internal data for wpa_supplicant interface
  *
@@ -574,6 +600,7 @@ struct wpa_supplicant {
        struct wpa_radio_work *scan_work;
        int scanning;
        int sched_scanning;
+       unsigned int sched_scan_stop_req:1;
        int new_connection;
 
        int eapol_received; /* number of EAPOL packets received after the
@@ -638,6 +665,7 @@ struct wpa_supplicant {
        struct os_reltime scan_min_time;
        int scan_runs; /* number of scan runs since WPS was started */
        int *next_scan_freqs;
+       int *select_network_scan_freqs;
        int *manual_scan_freqs;
        int *manual_sched_scan_freqs;
        unsigned int manual_scan_passive:1;
@@ -651,6 +679,12 @@ struct wpa_supplicant {
        int normal_scans; /* normal scans run before sched_scan */
        int scan_for_connection; /* whether the scan request was triggered for
                                  * finding a connection */
+       /*
+        * A unique cookie representing the vendor scan request. This cookie is
+        * returned from the driver interface. 0 indicates that there is no
+        * pending vendor scan request.
+        */
+       u64 curr_scan_cookie;
 #define MAX_SCAN_ID 16
        int scan_id[MAX_SCAN_ID];
        unsigned int scan_id_count;
@@ -714,13 +748,14 @@ struct wpa_supplicant {
        int sta_uapsd;
        int set_ap_uapsd;
        int ap_uapsd;
+       int auth_alg;
 
 #ifdef CONFIG_SME
        struct {
                u8 ssid[SSID_MAX_LEN];
                size_t ssid_len;
                int freq;
-               u8 assoc_req_ie[200];
+               u8 assoc_req_ie[1500];
                size_t assoc_req_ie_len;
                int mfp;
                int ft_used;
@@ -769,6 +804,10 @@ struct wpa_supplicant {
        unsigned int mesh_if_created:1;
        unsigned int mesh_ht_enabled:1;
        unsigned int mesh_vht_enabled:1;
+#ifdef CONFIG_PMKSA_CACHE_EXTERNAL
+       /* struct external_pmksa_cache::list */
+       struct dl_list mesh_external_pmksa_cache;
+#endif /* CONFIG_PMKSA_CACHE_EXTERNAL */
 #endif /* CONFIG_MESH */
 
        unsigned int off_channel_freq;
@@ -980,6 +1019,7 @@ struct wpa_supplicant {
        unsigned int wmm_ac_supported:1;
        unsigned int ext_work_in_progress:1;
        unsigned int own_disconnect_req:1;
+       unsigned int ignore_post_flush_scan_res:1;
 
 #define MAC_ADDR_RAND_SCAN       BIT(0)
 #define MAC_ADDR_RAND_SCHED_SCAN BIT(1)
@@ -1005,6 +1045,10 @@ struct wpa_supplicant {
        struct neighbor_report *wnm_neighbor_report_elements;
        struct os_reltime wnm_cand_valid_until;
        u8 wnm_cand_from_bss[ETH_ALEN];
+#ifdef CONFIG_MBO
+       unsigned int wnm_mbo_trans_reason_present:1;
+       u8 wnm_mbo_transition_reason;
+#endif /* CONFIG_MBO */
 #endif /* CONFIG_WNM */
 
 #ifdef CONFIG_TESTING_GET_GTK
@@ -1023,6 +1067,7 @@ struct wpa_supplicant {
        struct l2_packet_data *l2_test;
        unsigned int extra_roc_dur;
        enum wpa_supplicant_test_failure test_failure;
+       char *get_pref_freq_list_override;
        unsigned int reject_btm_req_reason;
        unsigned int p2p_go_csa_on_inv:1;
        unsigned int ignore_auth_resp:1;
@@ -1037,6 +1082,7 @@ struct wpa_supplicant {
        u8 last_tspecs_count;
 
        struct rrm_data rrm;
+       struct beacon_rep_data beacon_rep_data;
 
 #ifdef CONFIG_FST
        struct fst_iface *fst;
@@ -1068,6 +1114,47 @@ struct wpa_supplicant {
         */
        struct wpabuf *lci;
        struct os_reltime lci_time;
+
+       struct os_reltime beacon_rep_scan;
+
+       /* FILS HLP requests (struct fils_hlp_req) */
+       struct dl_list fils_hlp_req;
+
+       struct sched_scan_relative_params {
+               /**
+                * relative_rssi_set - Enable relatively preferred BSS reporting
+                *
+                * 0 = Disable reporting relatively preferred BSSs
+                * 1 = Enable reporting relatively preferred BSSs
+                */
+               int relative_rssi_set;
+
+               /**
+                * relative_rssi - Relative RSSI for reporting better BSSs
+                *
+                * Amount of RSSI by which a BSS should be better than the
+                * current connected BSS so that the new BSS can be reported
+                * to user space. This applies to sched_scan operations.
+                */
+               int relative_rssi;
+
+               /**
+                * relative_adjust_band - Band in which RSSI is to be adjusted
+                */
+               enum set_band relative_adjust_band;
+
+               /**
+                * relative_adjust_rssi - RSSI adjustment
+                *
+                * An amount of relative_adjust_rssi should be added to the
+                * BSSs that belong to the relative_adjust_band while comparing
+                * with other bands for BSS reporting.
+                */
+               int relative_adjust_rssi;
+       } srp;
+
+       /* RIC elements for FT protocol */
+       struct wpabuf *ric_ies;
 };
 
 
@@ -1188,6 +1275,11 @@ void wpas_rrm_handle_link_measurement_request(struct wpa_supplicant *wpa_s,
                                              const u8 *src,
                                              const u8 *frame, size_t len,
                                              int rssi);
+int wpas_beacon_rep_scan_process(struct wpa_supplicant *wpa_s,
+                                struct wpa_scan_results *scan_res,
+                                struct scan_info *info);
+void wpas_clear_beacon_rep_data(struct wpa_supplicant *wpa_s);
+void wpas_flush_fils_hlp_req(struct wpa_supplicant *wpa_s);
 
 
 /* MBO functions */
@@ -1196,8 +1288,6 @@ const u8 * wpas_mbo_get_bss_attr(struct wpa_bss *bss, enum mbo_attr_id attr);
 int wpas_mbo_update_non_pref_chan(struct wpa_supplicant *wpa_s,
                                  const char *non_pref_chan);
 void wpas_mbo_scan_ie(struct wpa_supplicant *wpa_s, struct wpabuf *ie);
-int wpas_mbo_supp_op_class_ie(struct wpa_supplicant *wpa_s, int freq, u8 *pos,
-                             size_t len);
 void wpas_mbo_ie_trans_req(struct wpa_supplicant *wpa_s, const u8 *ie,
                           size_t len);
 size_t wpas_mbo_ie_bss_trans_reject(struct wpa_supplicant *wpa_s, u8 *pos,
@@ -1205,7 +1295,20 @@ size_t wpas_mbo_ie_bss_trans_reject(struct wpa_supplicant *wpa_s, u8 *pos,
                                    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);
+                                  struct wpa_bss *bss, u32 mbo_subtypes);
+void mbo_parse_rx_anqp_resp(struct wpa_supplicant *wpa_s,
+                           struct wpa_bss *bss, const u8 *sa,
+                           const u8 *data, size_t slen);
+
+/* op_classes.c */
+enum chan_allowed {
+       NOT_ALLOWED, NO_IR, ALLOWED
+};
+
+enum chan_allowed verify_channel(struct hostapd_hw_modes *mode, u8 channel,
+                                u8 bw);
+size_t wpas_supp_op_class_ie(struct wpa_supplicant *wpa_s, int freq, u8 *pos,
+                             size_t len);
 
 /**
  * wpa_supplicant_ctrl_iface_ctrl_rsp_handle - Handle a control response
@@ -1237,6 +1340,7 @@ void wnm_bss_keep_alive_deinit(struct wpa_supplicant *wpa_s);
 int wpa_supplicant_fast_associate(struct wpa_supplicant *wpa_s);
 struct wpa_bss * wpa_supplicant_pick_network(struct wpa_supplicant *wpa_s,
                                             struct wpa_ssid **selected_ssid);
+int wpas_temp_disabled(struct wpa_supplicant *wpa_s, struct wpa_ssid *ssid);
 
 /* eap_register.c */
 int eap_register_methods(void);
@@ -1295,6 +1399,11 @@ int wpa_is_bss_tmp_disallowed(struct wpa_supplicant *wpa_s, const u8 *bssid);
 struct wpa_ssid * wpa_scan_res_match(struct wpa_supplicant *wpa_s,
                                     int i, struct wpa_bss *bss,
                                     struct wpa_ssid *group,
-                                    int only_first_ssid);
+                                    int only_first_ssid, int debug_print);
+
+int wpas_ctrl_iface_get_pref_freq_list_override(struct wpa_supplicant *wpa_s,
+                                               enum wpa_driver_if_type if_type,
+                                               unsigned int *num,
+                                               unsigned int *freq_list);
 
 #endif /* WPA_SUPPLICANT_I_H */