]> git.ipfire.org Git - thirdparty/hostap.git/blobdiff - wpa_supplicant/config.h
EAP: Increase the maximum number of message exchanges
[thirdparty/hostap.git] / wpa_supplicant / config.h
index f2da234d45e813c5701b95fbe9a16f4f54bd77d5..5b5c2fdbabf461dda40fe332ac042a9eac409c7d 100644 (file)
 #else /* CONFIG_NO_SCAN_PROCESSING */
 #define DEFAULT_AP_SCAN 1
 #endif /* CONFIG_NO_SCAN_PROCESSING */
+#define DEFAULT_USER_MPM 1
+#define DEFAULT_MAX_PEER_LINKS 99
+#define DEFAULT_MESH_MAX_INACTIVITY 300
+/*
+ * The default dot11RSNASAERetransPeriod is defined as 40 ms in the standard,
+ * but use 1000 ms in practice to avoid issues on low power CPUs.
+ */
+#define DEFAULT_DOT11_RSNA_SAE_RETRANS_PERIOD 1000
 #define DEFAULT_FAST_REAUTH 1
 #define DEFAULT_P2P_GO_INTENT 7
 #define DEFAULT_P2P_INTRA_BSS 1
 #define DEFAULT_P2P_GO_MAX_INACTIVITY (5 * 60)
+#define DEFAULT_P2P_OPTIMIZE_LISTEN_CHAN 0
 #define DEFAULT_BSS_MAX_COUNT 200
 #define DEFAULT_BSS_EXPIRATION_AGE 180
 #define DEFAULT_BSS_EXPIRATION_SCAN_COUNT 2
 #define DEFAULT_MAX_NUM_STA 128
+#define DEFAULT_AP_ISOLATE 0
 #define DEFAULT_ACCESS_NETWORK_TYPE 15
 #define DEFAULT_SCAN_CUR_FREQ 0
+#define DEFAULT_P2P_SEARCH_DELAY 500
+#define DEFAULT_RAND_ADDR_LIFETIME 60
+#define DEFAULT_KEY_MGMT_OFFLOAD 1
+#define DEFAULT_CERT_IN_CB 1
+#define DEFAULT_P2P_GO_CTWINDOW 0
+#define DEFAULT_WPA_RSC_RELAXATION 1
+#define DEFAULT_MBO_CELL_CAPA MBO_CELL_CAPA_NOT_SUPPORTED
+#define DEFAULT_DISASSOC_IMMINENT_RSSI_THRESHOLD -75
+#define DEFAULT_OCE_SUPPORT OCE_STA
 
 #include "config_ssid.h"
 #include "wps/wps.h"
+#include "common/ieee802_11_defs.h"
 #include "common/ieee802_11_common.h"
 
 
+#define MAX_ROAMING_CONS 36
+#define MAX_ROAMING_CONS_OI_LEN 15
+
 struct wpa_cred {
        /**
         * next - Next credential in the list
@@ -160,7 +183,7 @@ struct wpa_cred {
         * If set, this FQDN is used as a suffix match requirement for the AAA
         * server certificate in SubjectAltName dNSName element(s). If a
         * matching dNSName is found, this constraint is met. If no dNSName
-        * values are present, this constraint is matched against SubjetName CN
+        * values are present, this constraint is matched against SubjectName CN
         * using same suffix match comparison. Suffix match here means that the
         * host/domain name is compared one label at a time starting from the
         * top-level domain and all the labels in @domain_suffix_match shall be
@@ -205,9 +228,42 @@ struct wpa_cred {
         */
        size_t roaming_consortium_len;
 
+       /**
+        * required_roaming_consortium - Required Roaming Consortium OI
+        *
+        * If required_roaming_consortium_len is non-zero, this field contains
+        * the Roaming Consortium OI that is required to be advertised by the AP
+        * for the credential to be considered matching.
+        */
        u8 required_roaming_consortium[15];
+
+       /**
+        * required_roaming_consortium_len - Length of required_roaming_consortium
+        */
        size_t required_roaming_consortium_len;
 
+       /**
+        * roaming_consortiums - Roaming Consortium OI(s) memberships
+        *
+        * This field contains one or more OIs identifying the roaming
+        * consortiums of which the provider is a member. The list is sorted
+        * from the most preferred one to the least preferred one. A match
+        * between the Roaming Consortium OIs advertised by an AP and the OIs
+        * in this list indicates that successful authentication is possible.
+        * (Hotspot 2.0 PerProviderSubscription/<X+>/HomeSP/RoamingConsortiumOI)
+        */
+       u8 roaming_consortiums[MAX_ROAMING_CONS][MAX_ROAMING_CONS_OI_LEN];
+
+       /**
+        * roaming_consortiums_len - Length on roaming_consortiums[i]
+        */
+       size_t roaming_consortiums_len[MAX_ROAMING_CONS];
+
+       /**
+        * num_roaming_consortiums - Number of entries in roaming_consortiums
+        */
+       unsigned int num_roaming_consortiums;
+
        /**
         * eap_method - EAP method to use
         *
@@ -232,7 +288,7 @@ struct wpa_cred {
        char *phase2;
 
        struct excluded_ssid {
-               u8 ssid[MAX_SSID_LEN];
+               u8 ssid[SSID_MAX_LEN];
                size_t ssid_len;
        } *excluded_ssid;
        size_t num_excluded_ssid;
@@ -252,6 +308,16 @@ struct wpa_cred {
         */
        char *provisioning_sp;
 
+       /**
+        * sp_priority - Credential priority within a provisioning SP
+        *
+        * This is the priority of the credential among all credentials
+        * provisionined by the same SP (i.e., for entries that have identical
+        * provisioning_sp value). The range of this priority is 0-255 with 0
+        * being the highest and 255 the lower priority.
+        */
+       int sp_priority;
+
        unsigned int min_dl_bandwidth_home;
        unsigned int min_ul_bandwidth_home;
        unsigned int min_dl_bandwidth_roaming;
@@ -265,6 +331,27 @@ struct wpa_cred {
         * constraint will be ignored.
         */
        unsigned int max_bss_load;
+
+       unsigned int num_req_conn_capab;
+       u8 *req_conn_capab_proto;
+       int **req_conn_capab_port;
+
+       /**
+        * ocsp - Whether to use/require OCSP to check server certificate
+        *
+        * 0 = do not use OCSP stapling (TLS certificate status extension)
+        * 1 = try to use OCSP stapling, but not require response
+        * 2 = require valid OCSP stapling response
+        */
+       int ocsp;
+
+       /**
+        * sim_num - User selected SIM identifier
+        *
+        * This variable is used for identifying which SIM is used if the system
+        * has more than one.
+        */
+       int sim_num;
 };
 
 
@@ -284,6 +371,10 @@ struct wpa_cred {
 #define CFG_CHANGED_P2P_PREF_CHAN BIT(13)
 #define CFG_CHANGED_EXT_PW_BACKEND BIT(14)
 #define CFG_CHANGED_NFC_PASSWORD_TOKEN BIT(15)
+#define CFG_CHANGED_P2P_PASSPHRASE_LEN BIT(16)
+#define CFG_CHANGED_SCHED_SCAN_PLANS BIT(17)
+#define CFG_CHANGED_WOWLAN_TRIGGERS BIT(18)
+#define CFG_CHANGED_DISABLE_BTM BIT(19)
 
 /**
  * struct wpa_config - wpa_supplicant configuration data
@@ -359,6 +450,11 @@ struct wpa_config {
         * one by one until the driver reports successful association; each
         * network block should have explicit security policy (i.e., only one
         * option in the lists) for key_mgmt, pairwise, group, proto variables.
+        *
+        * Note: ap_scan=2 should not be used with the nl80211 driver interface
+        * (the current Linux interface). ap_scan=1 is optimized work working
+        * with nl80211. For finding networks using hidden SSID, scan_ssid=1 in
+        * the network block can be used with nl80211.
         */
        int ap_scan;
 
@@ -481,6 +577,15 @@ struct wpa_config {
         */
        char *pkcs11_module_path;
 
+       /**
+        * openssl_ciphers - OpenSSL cipher string
+        *
+        * This is an OpenSSL specific configuration option for configuring the
+        * default ciphers. If not set, "DEFAULT:!EXP:!LOW" is used as the
+        * default.
+        */
+       char *openssl_ciphers;
+
        /**
         * pcsc_reader - PC/SC reader name prefix
         *
@@ -560,6 +665,13 @@ struct wpa_config {
         */
        u8 uuid[16];
 
+       /**
+        * auto_uuid - Automatic UUID behavior
+        * 0 = generate static value based on the local MAC address (default)
+        * 1 = generate a random UUID every time wpa_supplicant starts
+        */
+       int auto_uuid;
+
        /**
         * device_name - Device Name (WPS)
         * User-friendly description of device; up to 32 octets encoded in
@@ -634,6 +746,16 @@ struct wpa_config {
         */
        int wps_cred_processing;
 
+       /**
+        * wps_cred_add_sae - Whether to enable SAE automatically for WPS
+        *
+        * 0 = only add the explicitly listed WPA2-PSK configuration
+        * 1 = add both the WPA2-PSK and SAE configuration and enable PMF so
+        *     that the station gets configured in WPA3-Personal transition mode
+        *     (supports both WPA2-Personal (PSK) and WPA3-Personal (SAE) APs).
+        */
+       int wps_cred_add_sae;
+
 #define MAX_SEC_DEVICE_TYPES 5
        /**
         * sec_device_types - Secondary Device Types (P2P)
@@ -654,6 +776,7 @@ struct wpa_config {
        struct wpa_freq_range_list p2p_no_go_freq;
        int p2p_add_cli_chan;
        int p2p_ignore_shared_freq;
+       int p2p_optimize_listen_chan;
 
        struct wpabuf *wps_vendor_ext_m1;
 
@@ -681,6 +804,47 @@ struct wpa_config {
         */
        int p2p_group_idle;
 
+       /**
+        * p2p_go_freq_change_policy - The GO frequency change policy
+        *
+        * This controls the behavior of the GO when there is a change in the
+        * map of the currently used frequencies in case more than one channel
+        * is supported.
+        *
+        * @P2P_GO_FREQ_MOVE_SCM: Prefer working in a single channel mode if
+        * possible. In case the GO is the only interface using its frequency
+        * and there are other station interfaces on other frequencies, the GO
+        * will migrate to one of these frequencies.
+        *
+        * @P2P_GO_FREQ_MOVE_SCM_PEER_SUPPORTS: Same as P2P_GO_FREQ_MOVE_SCM,
+        * but a transition is possible only in case one of the other used
+        * frequencies is one of the frequencies in the intersection of the
+        * frequency list of the local device and the peer device.
+        *
+        * @P2P_GO_FREQ_MOVE_STAY: Prefer to stay on the current frequency.
+        *
+        * @P2P_GO_FREQ_MOVE_SCM_ECSA: Same as
+        * P2P_GO_FREQ_MOVE_SCM_PEER_SUPPORTS but a transition is possible only
+        * if all the group members advertise eCSA support.
+        */
+       enum {
+               P2P_GO_FREQ_MOVE_SCM = 0,
+               P2P_GO_FREQ_MOVE_SCM_PEER_SUPPORTS = 1,
+               P2P_GO_FREQ_MOVE_STAY = 2,
+               P2P_GO_FREQ_MOVE_SCM_ECSA = 3,
+               P2P_GO_FREQ_MOVE_MAX = P2P_GO_FREQ_MOVE_SCM_ECSA,
+       } p2p_go_freq_change_policy;
+
+#define DEFAULT_P2P_GO_FREQ_MOVE P2P_GO_FREQ_MOVE_STAY
+
+       /**
+        * p2p_passphrase_len - Passphrase length (8..63) for P2P GO
+        *
+        * This parameter controls the length of the random passphrase that is
+        * generated at the GO.
+        */
+       unsigned int p2p_passphrase_len;
+
        /**
         * bss_max_count - Maximum number of BSS entries to keep in memory
         */
@@ -726,6 +890,20 @@ struct wpa_config {
         */
        unsigned int max_num_sta;
 
+       /**
+        * ap_isolate - Whether to use client isolation feature
+        *
+        * Client isolation can be used to prevent low-level bridging of
+        * frames between associated stations in the BSS. By default,
+        * this bridging is allowed (ap_isolate=0); except in P2P GO case,
+        * where p2p_intra_bss parameter is used to determine whether to allow
+        * intra-BSS forwarding (ap_isolate = !p2p_intra_bss).
+        *
+        * 0 = do not enable AP isolation
+        * 1 = enable AP isolation
+        */
+       int ap_isolate;
+
        /**
         * freq_list - Array of allowed scan frequencies or %NULL for all
         *
@@ -748,7 +926,7 @@ struct wpa_config {
        unsigned int changed_parameters;
 
        /**
-        * disassoc_low_ack - Disassocicate stations with massive packet loss
+        * disassoc_low_ack - Disassociate stations with massive packet loss
         */
        int disassoc_low_ack;
 
@@ -766,6 +944,34 @@ struct wpa_config {
         */
        int access_network_type;
 
+        /**
+         * go_interworking - Whether Interworking for P2P GO is enabled
+         */
+       int go_interworking;
+
+       /**
+        * go_access_network_type - P2P GO Access Network Type
+        *
+        * This indicates which access network type to advertise if Interworking
+        * is enabled for P2P GO.
+        */
+       int go_access_network_type;
+
+       /**
+        * go_internet - Interworking: Internet connectivity (0 or 1)
+        */
+       int go_internet;
+
+       /**
+        * go_venue_group - Interworking: Venue group
+        */
+       int go_venue_group;
+
+       /**
+        * go_venue_type: Interworking: Venue type
+        */
+       int go_venue_type;
+
        /**
         * hessid - Homogenous ESS identifier
         *
@@ -883,6 +1089,24 @@ struct wpa_config {
         */
        int p2p_go_vht;
 
+       /**
+        * p2p_go_he - Default mode for 11ax HE enable when operating as GO
+        *
+        * This will take effect for p2p_group_add, p2p_connect, and p2p_invite.
+        * Note that regulatory constraints and driver capabilities are
+        * consulted anyway, so setting it to 1 can't do real harm.
+        * By default: 0 (disabled)
+        */
+       int p2p_go_he;
+
+       /**
+        * p2p_go_ctwindow - CTWindow to use when operating as GO
+        *
+        * By default: 0 (no CTWindow). Values 0-127 can be used to indicate
+        * the length of the CTWindow in TUs.
+        */
+       int p2p_go_ctwindow;
+
        /**
         * p2p_disabled - Whether P2P operations are disabled for this interface
         */
@@ -899,6 +1123,18 @@ struct wpa_config {
         */
        int p2p_no_group_iface;
 
+       /**
+        * p2p_cli_probe - Enable/disable P2P CLI probe request handling
+        *
+        * If this parameter is set to 1, a connected P2P Client will receive
+        * and handle Probe Request frames. Setting this parameter to 0
+        * disables this option. Default value: 0.
+        *
+        * Note: Setting this property at run time takes effect on the following
+        * interface state transition to/from the WPA_COMPLETED state.
+        */
+       int p2p_cli_probe;
+
        /**
         * okc - Whether to enable opportunistic key caching by default
         *
@@ -913,7 +1149,8 @@ struct wpa_config {
         *
         * By default, PMF is disabled unless enabled by the per-network
         * ieee80211w=1 or ieee80211w=2 parameter. pmf=1/2 can be used to change
-        * this default behavior.
+        * this default behavior for RSN network (this is not applicable for
+        * non-RSN cases).
         */
        enum mfp_options pmf;
 
@@ -927,6 +1164,11 @@ struct wpa_config {
         */
        int *sae_groups;
 
+       /**
+        * sae_pmkid_in_assoc - Whether to include PMKID in SAE Assoc Req
+        */
+       int sae_pmkid_in_assoc;
+
        /**
         * dtim_period - Default DTIM period in Beacon intervals
         *
@@ -968,6 +1210,15 @@ struct wpa_config {
         */
        unsigned int sched_scan_interval;
 
+       /**
+        * sched_scan_start_delay - Schedule scan start delay before first scan
+        *
+        * Delay (in seconds) before scheduling first scan plan cycle. The
+        * driver may ignore this parameter and start immediately (or at any
+        * other time), if this feature is not supported.
+        */
+       unsigned int sched_scan_start_delay;
+
        /**
         * tdls_external_control - External control for TDLS setup requests
         *
@@ -991,6 +1242,306 @@ struct wpa_config {
         * directory.
         */
        char *osu_dir;
+
+       /**
+        * wowlan_triggers - Wake-on-WLAN triggers
+        *
+        * If set, these wowlan triggers will be configured.
+        */
+       char *wowlan_triggers;
+
+       /**
+        * p2p_search_delay - Extra delay between concurrent search iterations
+        *
+        * Add extra delay (in milliseconds) between search iterations when
+        * there is a concurrent operation to make p2p_find friendlier to
+        * concurrent operations by avoiding it from taking 100% of radio
+        * resources.
+        */
+       unsigned int p2p_search_delay;
+
+       /**
+        * mac_addr - MAC address policy default
+        *
+        * 0 = use permanent MAC address
+        * 1 = use random MAC address for each ESS connection
+        * 2 = like 1, but maintain OUI (with local admin bit set)
+        *
+        * By default, permanent MAC address is used unless policy is changed by
+        * the per-network mac_addr parameter. Global mac_addr=1 can be used to
+        * change this default behavior.
+        */
+       int mac_addr;
+
+       /**
+        * rand_addr_lifetime - Lifetime of random MAC address in seconds
+        */
+       unsigned int rand_addr_lifetime;
+
+       /**
+        * preassoc_mac_addr - Pre-association MAC address policy
+        *
+        * 0 = use permanent MAC address
+        * 1 = use random MAC address
+        * 2 = like 1, but maintain OUI (with local admin bit set)
+        */
+       int preassoc_mac_addr;
+
+       /**
+        * key_mgmt_offload - Use key management offload
+        *
+        * Key management offload should be used if the device supports it.
+        * Key management offload is the capability of a device operating as
+        * a station to do the exchange necessary to establish temporal keys
+        * during initial RSN connection, after roaming, or during a PTK
+        * rekeying operation.
+        */
+       int key_mgmt_offload;
+
+       /**
+        * user_mpm - MPM residency
+        *
+        * 0: MPM lives in driver.
+        * 1: wpa_supplicant handles peering and station allocation.
+        *
+        * If AMPE or SAE is enabled, the MPM is always in userspace.
+        */
+       int user_mpm;
+
+       /**
+        * max_peer_links - Maximum number of peer links
+        *
+        * Maximum number of mesh peering currently maintained by the STA.
+        */
+       int max_peer_links;
+
+       /**
+        * cert_in_cb - Whether to include a peer certificate dump in events
+        *
+        * This controls whether peer certificates for authentication server and
+        * its certificate chain are included in EAP peer certificate events.
+        */
+       int cert_in_cb;
+
+       /**
+        * mesh_max_inactivity - Timeout in seconds to detect STA inactivity
+        *
+        * This timeout value is used in mesh STA to clean up inactive stations.
+        * By default: 300 seconds.
+        */
+       int mesh_max_inactivity;
+
+       /**
+        * dot11RSNASAERetransPeriod - Timeout to retransmit SAE Auth frame
+        *
+        * This timeout value is used in mesh STA to retransmit
+        * SAE Authentication frame.
+        * By default: 1000 milliseconds.
+        */
+       int dot11RSNASAERetransPeriod;
+
+       /**
+        * passive_scan - Whether to force passive scan for network connection
+        *
+        * This parameter can be used to force only passive scanning to be used
+        * for network connection cases. It should be noted that this will slow
+        * down scan operations and reduce likelihood of finding the AP. In
+        * addition, some use cases will override this due to functional
+        * requirements, e.g., for finding an AP that uses hidden SSID
+        * (scan_ssid=1) or P2P device discovery.
+        */
+       int passive_scan;
+
+       /**
+        * reassoc_same_bss_optim - Whether to optimize reassoc-to-same-BSS
+        */
+       int reassoc_same_bss_optim;
+
+       /**
+        * wps_priority - Priority for the networks added through WPS
+        *
+        * This priority value will be set to each network profile that is added
+        * by executing the WPS protocol.
+        */
+       int wps_priority;
+
+       /**
+        * fst_group_id - FST group ID
+        */
+       char *fst_group_id;
+
+       /**
+        * fst_priority - priority of the interface within the FST group
+        */
+       int fst_priority;
+
+       /**
+        * fst_llt - default FST LLT (Link-Lost Timeout) to be used for the
+        * interface.
+        */
+       int fst_llt;
+
+        /**
+         * wpa_rsc_relaxation - RSC relaxation on GTK installation
+         *
+         * Values:
+         * 0 - use the EAPOL-Key RSC value on GTK installation
+         * 1 - use the null RSC if a bogus RSC value is detected in message 3
+         * of 4-Way Handshake or message 1 of Group Key Handshake.
+         */
+        int wpa_rsc_relaxation;
+
+       /**
+        * sched_scan_plans - Scan plans for scheduled scan
+        *
+        * Each scan plan specifies the interval between scans and the number of
+        * iterations. The last scan plan only specifies the scan interval and
+        * will be run infinitely.
+        *
+        * format: <interval:iterations> <interval2:iterations2> ... <interval>
+        */
+        char *sched_scan_plans;
+
+#ifdef CONFIG_MBO
+       /**
+        * non_pref_chan - Non-preferred channels list, separated by spaces.
+        *
+        * format: op_class:chan:preference:reason<:detail>
+        * Detail is optional.
+        */
+       char *non_pref_chan;
+
+       /**
+        * mbo_cell_capa - Cellular capabilities for MBO
+        */
+       enum mbo_cellular_capa mbo_cell_capa;
+
+       /**
+        * disassoc_imminent_rssi_threshold - RSSI threshold of candidate AP
+        * when disassociation imminent is set.
+        */
+       int disassoc_imminent_rssi_threshold;
+
+       /**
+        * oce - Enable OCE in STA and/or STA-CFON mode
+        *  - Set BIT(0) to enable OCE in non-AP STA mode
+        *  - Set BIT(1) to enable OCE in STA-CFON mode
+        */
+       unsigned int oce;
+#endif /* CONFIG_MBO */
+
+       /**
+        * gas_address3 - GAS Address3 field behavior
+        *
+        * Values:
+        * 0 - P2P specification (Address3 = AP BSSID)
+        * 1 = IEEE 802.11 standard compliant (Address3 = Wildcard BSSID when
+        *      sent to not-associated AP; if associated, AP BSSID)
+        */
+       int gas_address3;
+
+       /**
+        * ftm_responder - Publish FTM (fine timing measurement)
+        * responder functionality
+        *
+        * Values:
+        * 0 - do not publish FTM responder functionality (Default)
+        * 1 - publish FTM responder functionality in
+        *      bit 70 of Extended Capabilities element
+        * Note, actual FTM responder operation is managed outside
+        * wpa_supplicant.
+        */
+       int ftm_responder;
+
+       /**
+        * ftm_initiator - Publish FTM (fine timing measurement)
+        * initiator functionality
+        *
+        * Values:
+        * 0 - do not publish FTM initiator functionality (Default)
+        * 1 - publish FTM initiator functionality in
+        *      bit 71 of Extended Capabilities element
+        * Note, actual FTM initiator operation is managed outside
+        * wpa_supplicant.
+        */
+       int ftm_initiator;
+
+       /**
+        * gas_rand_addr_lifetime - Lifetime of random MAC address for ANQP in
+        *      seconds
+        */
+       unsigned int gas_rand_addr_lifetime;
+
+       /**
+        * gas_rand_mac_addr - GAS MAC address policy
+        *
+        * 0 = use permanent MAC address
+        * 1 = use random MAC address
+        * 2 = like 1, but maintain OUI (with local admin bit set)
+        */
+       int gas_rand_mac_addr;
+
+       /**
+        * dpp_config_processing - How to process DPP configuration
+        *
+        * 0 = report received configuration to an external program for
+        *      processing; do not generate any network profile internally
+        * 1 = report received configuration to an external program and generate
+        *      a network profile internally, but do not automatically connect
+        *      to the created (disabled) profile; the network profile id is
+        *      reported to external programs
+        * 2 = report received configuration to an external program, generate
+        *      a network profile internally, try to connect to the created
+        *      profile automatically
+        */
+       int dpp_config_processing;
+
+       /**
+        * coloc_intf_reporting - Colocated interference reporting
+        *
+        * dot11CoLocIntfReportingActivated
+        * 0 = disabled (false)
+        * 1 = enabled (true)
+        */
+       int coloc_intf_reporting;
+
+       /**
+        * p2p_device_random_mac_addr - P2P Device MAC address policy default
+        *
+        * 0 = use permanent MAC address
+        * 1 = use random MAC address on creating the interface if there is no
+        * persistent groups.
+        *
+        * By default, permanent MAC address is used.
+        */
+       int p2p_device_random_mac_addr;
+
+       /**
+        * p2p_device_persistent_mac_addr - Record last used MAC address
+        *
+        * If there are saved persistent groups, P2P cannot generate another
+        * random MAC address, and need to restore to last used MAC address.
+        */
+       u8 p2p_device_persistent_mac_addr[ETH_ALEN];
+
+       /**
+        * p2p_interface_random_mac_addr - P2P Interface MAC address policy default
+        *
+        * 0 = use permanent MAC address
+        * 1 = use random MAC address on creating the interface.
+        *
+        * By default, permanent MAC address is used.
+        */
+       int p2p_interface_random_mac_addr;
+
+       /**
+        * disable_btm - Disable BSS transition management in STA
+        * - Set to 0 to enable BSS transition management
+        * - Set to 1 to disable BSS transition management
+        *
+        * By default BSS transition management is enabled
+        */
+       int disable_btm;
 };
 
 
@@ -1009,6 +1560,11 @@ int wpa_config_set(struct wpa_ssid *ssid, const char *var, const char *value,
                   int line);
 int wpa_config_set_quoted(struct wpa_ssid *ssid, const char *var,
                          const char *value);
+int wpa_config_dump_values(struct wpa_config *config, char *buf,
+                          size_t buflen);
+int wpa_config_get_value(const char *name, struct wpa_config *config,
+                        char *buf, size_t buflen);
+
 char ** wpa_config_get_all(struct wpa_ssid *ssid, int get_keys);
 char * wpa_config_get(struct wpa_ssid *ssid, const char *var);
 char * wpa_config_get_no_key(struct wpa_ssid *ssid, const char *var);
@@ -1030,6 +1586,7 @@ int wpa_config_remove_cred(struct wpa_config *config, int id);
 void wpa_config_free_cred(struct wpa_cred *cred);
 int wpa_config_set_cred(struct wpa_cred *cred, const char *var,
                        const char *value, int line);
+char * wpa_config_get_cred_no_key(struct wpa_cred *cred, const char *var);
 
 struct wpa_config * wpa_config_alloc_empty(const char *ctrl_interface,
                                           const char *driver_param);
@@ -1043,6 +1600,9 @@ void wpa_config_debug_dump_networks(struct wpa_config *config);
 /* Prototypes for common functions from config.c */
 int wpa_config_process_global(struct wpa_config *config, char *pos, int line);
 
+int wpa_config_get_num_global_field_names(void);
+
+const char * wpa_config_get_global_field_name(unsigned int i, int *no_var);
 
 /* Prototypes for backend specific functions from the selected config_*.c */