]> git.ipfire.org Git - thirdparty/hostap.git/blobdiff - wpa_supplicant/wpa_supplicant_i.h
tests: Rejection of group-addressed RRM measurement request
[thirdparty/hostap.git] / wpa_supplicant / wpa_supplicant_i.h
index f3f96a385afc5babc2ded64b89d26b64444b1820..db39d1056c930d14ee4db3ba1348ee363a190f65 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,12 @@ 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;
+
+       /* destination address of the current radio measurement request */
+       u8 dst_addr[ETH_ALEN];
 };
 
 enum wpa_supplicant_test_failure {
@@ -443,7 +450,28 @@ struct icon_entry {
 struct wpa_bss_tmp_disallowed {
        struct dl_list list;
        u8 bssid[ETH_ALEN];
-       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;
 };
 
 /**
@@ -574,6 +602,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 +667,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 +681,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 +750,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 +806,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;
@@ -788,6 +829,7 @@ struct wpa_supplicant {
                                            result);
        unsigned int roc_waiting_drv_freq;
        int action_tx_wait_time;
+       int action_tx_wait_time_used;
 
        int p2p_mgmt;
 
@@ -922,6 +964,7 @@ struct wpa_supplicant {
        int best_overall_freq;
 
        struct gas_query *gas;
+       struct gas_server *gas_server;
 
 #ifdef CONFIG_INTERWORKING
        unsigned int fetch_anqp_in_progress:1;
@@ -980,6 +1023,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 +1049,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,7 +1071,11 @@ 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;
+       unsigned int ignore_assoc_disallow:1;
 #endif /* CONFIG_TESTING_OPTIONS */
 
        struct wmm_ac_assoc_data *wmm_ac_assoc_info;
@@ -1034,6 +1086,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;
@@ -1047,11 +1100,18 @@ 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;
        u8 mbo_wnm_token;
+       /**
+        * enable_oce - Enable OCE if it is enabled by user and device also
+        *              supports OCE.
+        * User can enable OCE with wpa_config's 'oce' parameter as follows -
+        *  - Set BIT(0) to enable OCE in non-AP STA mode.
+        *  - Set BIT(1) to enable OCE in STA-CFON mode.
+        */
+       u8 enable_oce;
 #endif /* CONFIG_MBO */
 
        /*
@@ -1066,6 +1126,77 @@ 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;
+
+#ifdef CONFIG_DPP
+       struct dl_list dpp_bootstrap; /* struct dpp_bootstrap_info */
+       struct dl_list dpp_configurator; /* struct dpp_configurator */
+       int dpp_init_done;
+       struct dpp_authentication *dpp_auth;
+       struct wpa_radio_work *dpp_listen_work;
+       unsigned int dpp_pending_listen_freq;
+       unsigned int dpp_listen_freq;
+       u8 dpp_allowed_roles;
+       int dpp_qr_mutual;
+       int dpp_netrole_ap;
+       int dpp_auth_ok_on_ack;
+       int dpp_gas_client;
+       u8 dpp_intro_bssid[ETH_ALEN];
+       void *dpp_intro_network;
+       struct dpp_pkex *dpp_pkex;
+       struct dpp_bootstrap_info *dpp_pkex_bi;
+       char *dpp_pkex_code;
+       char *dpp_pkex_identifier;
+       char *dpp_pkex_auth_cmd;
+       char *dpp_configurator_params;
+#ifdef CONFIG_TESTING_OPTIONS
+       char *dpp_config_obj_override;
+       char *dpp_discovery_override;
+       char *dpp_groups_override;
+       char *dpp_devices_override;
+       unsigned int dpp_ignore_netaccesskey_mismatch:1;
+#endif /* CONFIG_TESTING_OPTIONS */
+#endif /* CONFIG_DPP */
 };
 
 
@@ -1180,12 +1311,17 @@ int wpas_rrm_send_neighbor_rep_request(struct wpa_supplicant *wpa_s,
                                                  struct wpabuf *neighbor_rep),
                                       void *cb_ctx);
 void wpas_rrm_handle_radio_measurement_request(struct wpa_supplicant *wpa_s,
-                                              const u8 *src,
+                                              const u8 *src, const u8 *dst,
                                               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,
                                              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 */
@@ -1194,14 +1330,27 @@ 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,
                                    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, 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
@@ -1233,6 +1382,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);
@@ -1291,6 +1441,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 */