blob: 77d6ab5f8822da9cedbb268a9a63481b9ee56d3b [file] [log] [blame]
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001/*
2 * WPA Supplicant / Configuration file structures
Dmitry Shmidt04949592012-07-19 12:16:46 -07003 * Copyright (c) 2003-2012, Jouni Malinen <j@w1.fi>
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07004 *
Dmitry Shmidtc5ec7f52012-03-06 16:33:24 -08005 * This software may be distributed under the terms of the BSD license.
6 * See README for more details.
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07007 */
8
9#ifndef CONFIG_H
10#define CONFIG_H
11
12#define DEFAULT_EAPOL_VERSION 1
13#ifdef CONFIG_NO_SCAN_PROCESSING
14#define DEFAULT_AP_SCAN 2
15#else /* CONFIG_NO_SCAN_PROCESSING */
16#define DEFAULT_AP_SCAN 1
17#endif /* CONFIG_NO_SCAN_PROCESSING */
Dmitry Shmidt6c0da2b2015-01-05 13:08:17 -080018#define DEFAULT_USER_MPM 1
19#define DEFAULT_MAX_PEER_LINKS 99
Dmitry Shmidt2f74e362015-01-21 13:19:05 -080020#define DEFAULT_MESH_MAX_INACTIVITY 300
Hai Shaloma20dcd72022-02-04 13:43:00 -080021#define DEFAULT_MESH_FWDING 1
Dmitry Shmidtd80a4012015-11-05 16:35:40 -080022/*
23 * The default dot11RSNASAERetransPeriod is defined as 40 ms in the standard,
24 * but use 1000 ms in practice to avoid issues on low power CPUs.
25 */
26#define DEFAULT_DOT11_RSNA_SAE_RETRANS_PERIOD 1000
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -070027#define DEFAULT_FAST_REAUTH 1
28#define DEFAULT_P2P_GO_INTENT 7
29#define DEFAULT_P2P_INTRA_BSS 1
Dmitry Shmidt61d9df32012-08-29 16:22:06 -070030#define DEFAULT_P2P_GO_MAX_INACTIVITY (5 * 60)
Dmitry Shmidt43cb5782014-06-16 16:23:22 -070031#define DEFAULT_P2P_OPTIMIZE_LISTEN_CHAN 0
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -070032#define DEFAULT_BSS_MAX_COUNT 200
33#define DEFAULT_BSS_EXPIRATION_AGE 180
34#define DEFAULT_BSS_EXPIRATION_SCAN_COUNT 2
35#define DEFAULT_MAX_NUM_STA 128
Roshan Pius3a1667e2018-07-03 15:17:14 -070036#define DEFAULT_AP_ISOLATE 0
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -080037#define DEFAULT_ACCESS_NETWORK_TYPE 15
Dmitry Shmidtea69e842013-05-13 14:52:28 -070038#define DEFAULT_SCAN_CUR_FREQ 0
Dmitry Shmidt09f57ba2014-06-10 16:07:13 -070039#define DEFAULT_P2P_SEARCH_DELAY 500
Dmitry Shmidt661b4f72014-09-29 14:58:27 -070040#define DEFAULT_RAND_ADDR_LIFETIME 60
Dmitry Shmidt6c0da2b2015-01-05 13:08:17 -080041#define DEFAULT_KEY_MGMT_OFFLOAD 1
Dmitry Shmidt2f74e362015-01-21 13:19:05 -080042#define DEFAULT_CERT_IN_CB 1
Dmitry Shmidt7f656022015-02-25 14:36:37 -080043#define DEFAULT_P2P_GO_CTWINDOW 0
Dmitry Shmidtd80a4012015-11-05 16:35:40 -080044#define DEFAULT_WPA_RSC_RELAXATION 1
Dmitry Shmidt57c2d392016-02-23 13:40:19 -080045#define DEFAULT_MBO_CELL_CAPA MBO_CELL_CAPA_NOT_SUPPORTED
Dmitry Shmidtd2986c22017-10-23 14:22:09 -070046#define DEFAULT_DISASSOC_IMMINENT_RSSI_THRESHOLD -75
47#define DEFAULT_OCE_SUPPORT OCE_STA
Hai Shalomfdcde762020-04-02 11:19:20 -070048#define DEFAULT_EXTENDED_KEY_ID 0
Dennis Jeone2cb56b2020-10-23 21:23:01 +090049#define DEFAULT_BTM_OFFLOAD 0
Hai Shalom60840252021-02-19 19:02:11 -080050#define DEFAULT_SCAN_RES_VALID_FOR_CONNECT 5
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -070051
52#include "config_ssid.h"
53#include "wps/wps.h"
Dmitry Shmidt9d9e6022015-04-23 10:34:55 -070054#include "common/ieee802_11_defs.h"
Dmitry Shmidt61d9df32012-08-29 16:22:06 -070055#include "common/ieee802_11_common.h"
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -070056
57
Roshan Pius3a1667e2018-07-03 15:17:14 -070058#define MAX_ROAMING_CONS 36
59#define MAX_ROAMING_CONS_OI_LEN 15
60
Dmitry Shmidt04949592012-07-19 12:16:46 -070061struct wpa_cred {
62 /**
63 * next - Next credential in the list
64 *
65 * This pointer can be used to iterate over all credentials. The head
66 * of this list is stored in the cred field of struct wpa_config.
67 */
68 struct wpa_cred *next;
69
70 /**
71 * id - Unique id for the credential
72 *
73 * This identifier is used as a unique identifier for each credential
74 * block when using the control interface. Each credential is allocated
75 * an id when it is being created, either when reading the
76 * configuration file or when a new credential is added through the
77 * control interface.
78 */
79 int id;
80
81 /**
Dmitry Shmidtfb79edc2014-01-10 10:45:54 -080082 * temporary - Whether this credential is temporary and not to be saved
83 */
84 int temporary;
85
86 /**
Dmitry Shmidt04949592012-07-19 12:16:46 -070087 * priority - Priority group
88 *
89 * By default, all networks and credentials get the same priority group
90 * (0). This field can be used to give higher priority for credentials
91 * (and similarly in struct wpa_ssid for network blocks) to change the
92 * Interworking automatic networking selection behavior. The matching
93 * network (based on either an enabled network block or a credential)
94 * with the highest priority value will be selected.
95 */
96 int priority;
97
98 /**
99 * pcsc - Use PC/SC and SIM/USIM card
100 */
101 int pcsc;
102
103 /**
104 * realm - Home Realm for Interworking
105 */
106 char *realm;
107
108 /**
109 * username - Username for Interworking network selection
110 */
111 char *username;
112
113 /**
114 * password - Password for Interworking network selection
115 */
116 char *password;
117
118 /**
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700119 * ext_password - Whether password is a name for external storage
120 */
121 int ext_password;
122
123 /**
Dmitry Shmidt04949592012-07-19 12:16:46 -0700124 * ca_cert - CA certificate for Interworking network selection
125 */
126 char *ca_cert;
127
128 /**
129 * client_cert - File path to client certificate file (PEM/DER)
130 *
131 * This field is used with Interworking networking selection for a case
132 * where client certificate/private key is used for authentication
133 * (EAP-TLS). Full path to the file should be used since working
134 * directory may change when wpa_supplicant is run in the background.
135 *
136 * Alternatively, a named configuration blob can be used by setting
137 * this to blob://blob_name.
138 */
139 char *client_cert;
140
141 /**
142 * private_key - File path to client private key file (PEM/DER/PFX)
143 *
144 * When PKCS#12/PFX file (.p12/.pfx) is used, client_cert should be
145 * commented out. Both the private key and certificate will be read
146 * from the PKCS#12 file in this case. Full path to the file should be
147 * used since working directory may change when wpa_supplicant is run
148 * in the background.
149 *
150 * Windows certificate store can be used by leaving client_cert out and
151 * configuring private_key in one of the following formats:
152 *
153 * cert://substring_to_match
154 *
155 * hash://certificate_thumbprint_in_hex
156 *
157 * For example: private_key="hash://63093aa9c47f56ae88334c7b65a4"
158 *
159 * Note that when running wpa_supplicant as an application, the user
160 * certificate store (My user account) is used, whereas computer store
161 * (Computer account) is used when running wpasvc as a service.
162 *
163 * Alternatively, a named configuration blob can be used by setting
164 * this to blob://blob_name.
165 */
166 char *private_key;
167
168 /**
169 * private_key_passwd - Password for private key file
170 */
171 char *private_key_passwd;
172
173 /**
174 * imsi - IMSI in <MCC> | <MNC> | '-' | <MSIN> format
175 */
176 char *imsi;
177
178 /**
179 * milenage - Milenage parameters for SIM/USIM simulator in
180 * <Ki>:<OPc>:<SQN> format
181 */
182 char *milenage;
183
184 /**
Sunil Ravia04bd252022-05-02 22:54:18 -0700185 * imsi_privacy_key - IMSI privacy key (PEM encoded X.509v3 certificate)
186 *
187 * This field is used with EAP-SIM/AKA/AKA' to encrypt the permanent
188 * identity (IMSI) to improve privacy. The X.509v3 certificate needs to
189 * include a 2048-bit RSA public key and this is from the operator who
190 * authenticates the SIM/USIM.
191 */
192 char *imsi_privacy_key;
193
194 /**
Hai Shaloma20dcd72022-02-04 13:43:00 -0800195 * engine - Use an engine for private key operations
196 */
197 int engine;
198
199 /**
200 * engine_id - String identifying the engine to use
201 */
202 char *engine_id;
203
204 /**
205 * ca_cert_id - The CA certificate identifier when using an engine
206 */
207 char *ca_cert_id;
208
209 /**
210 * cert_id - The certificate identifier when using an engine
211 */
212 char *cert_id;
213
214 /**
215 * key_id - The private key identifier when using an engine
216 */
217 char *key_id;
218
219 /**
Dmitry Shmidt051af732013-10-22 13:52:46 -0700220 * domain_suffix_match - Constraint for server domain name
221 *
222 * If set, this FQDN is used as a suffix match requirement for the AAA
223 * server certificate in SubjectAltName dNSName element(s). If a
224 * matching dNSName is found, this constraint is met. If no dNSName
Dmitry Shmidtff787d52015-01-12 13:01:47 -0800225 * values are present, this constraint is matched against SubjectName CN
Dmitry Shmidt051af732013-10-22 13:52:46 -0700226 * using same suffix match comparison. Suffix match here means that the
227 * host/domain name is compared one label at a time starting from the
228 * top-level domain and all the labels in @domain_suffix_match shall be
229 * included in the certificate. The certificate may include additional
230 * sub-level labels in addition to the required labels.
231 *
232 * For example, domain_suffix_match=example.com would match
233 * test.example.com but would not match test-example.com.
234 */
235 char *domain_suffix_match;
236
237 /**
238 * domain - Home service provider FQDN(s)
Dmitry Shmidt04949592012-07-19 12:16:46 -0700239 *
240 * This is used to compare against the Domain Name List to figure out
Dmitry Shmidt051af732013-10-22 13:52:46 -0700241 * whether the AP is operated by the Home SP. Multiple domain entries
242 * can be used to configure alternative FQDNs that will be considered
243 * home networks.
Dmitry Shmidt04949592012-07-19 12:16:46 -0700244 */
Dmitry Shmidt051af732013-10-22 13:52:46 -0700245 char **domain;
246
247 /**
248 * num_domain - Number of FQDNs in the domain array
249 */
250 size_t num_domain;
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700251
252 /**
253 * roaming_consortium - Roaming Consortium OI
254 *
255 * If roaming_consortium_len is non-zero, this field contains the
256 * Roaming Consortium OI that can be used to determine which access
257 * points support authentication with this credential. This is an
258 * alternative to the use of the realm parameter. When using Roaming
259 * Consortium to match the network, the EAP parameters need to be
260 * pre-configured with the credential since the NAI Realm information
261 * may not be available or fetched.
262 */
263 u8 roaming_consortium[15];
264
265 /**
266 * roaming_consortium_len - Length of roaming_consortium
267 */
268 size_t roaming_consortium_len;
269
Roshan Pius3a1667e2018-07-03 15:17:14 -0700270 /**
271 * required_roaming_consortium - Required Roaming Consortium OI
272 *
273 * If required_roaming_consortium_len is non-zero, this field contains
274 * the Roaming Consortium OI that is required to be advertised by the AP
275 * for the credential to be considered matching.
276 */
Dmitry Shmidt051af732013-10-22 13:52:46 -0700277 u8 required_roaming_consortium[15];
Roshan Pius3a1667e2018-07-03 15:17:14 -0700278
279 /**
280 * required_roaming_consortium_len - Length of required_roaming_consortium
281 */
Dmitry Shmidt051af732013-10-22 13:52:46 -0700282 size_t required_roaming_consortium_len;
283
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700284 /**
Roshan Pius3a1667e2018-07-03 15:17:14 -0700285 * roaming_consortiums - Roaming Consortium OI(s) memberships
286 *
287 * This field contains one or more OIs identifying the roaming
288 * consortiums of which the provider is a member. The list is sorted
289 * from the most preferred one to the least preferred one. A match
290 * between the Roaming Consortium OIs advertised by an AP and the OIs
291 * in this list indicates that successful authentication is possible.
292 * (Hotspot 2.0 PerProviderSubscription/<X+>/HomeSP/RoamingConsortiumOI)
293 */
294 u8 roaming_consortiums[MAX_ROAMING_CONS][MAX_ROAMING_CONS_OI_LEN];
295
296 /**
297 * roaming_consortiums_len - Length on roaming_consortiums[i]
298 */
299 size_t roaming_consortiums_len[MAX_ROAMING_CONS];
300
301 /**
302 * num_roaming_consortiums - Number of entries in roaming_consortiums
303 */
304 unsigned int num_roaming_consortiums;
305
306 /**
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700307 * eap_method - EAP method to use
308 *
309 * Pre-configured EAP method to use with this credential or %NULL to
310 * indicate no EAP method is selected, i.e., the method will be
311 * selected automatically based on ANQP information.
312 */
313 struct eap_method_type *eap_method;
314
315 /**
316 * phase1 - Phase 1 (outer authentication) parameters
317 *
318 * Pre-configured EAP parameters or %NULL.
319 */
320 char *phase1;
321
322 /**
323 * phase2 - Phase 2 (inner authentication) parameters
324 *
325 * Pre-configured EAP parameters or %NULL.
326 */
327 char *phase2;
Dmitry Shmidta54fa5f2013-01-15 13:53:35 -0800328
329 struct excluded_ssid {
Dmitry Shmidt9d9e6022015-04-23 10:34:55 -0700330 u8 ssid[SSID_MAX_LEN];
Dmitry Shmidta54fa5f2013-01-15 13:53:35 -0800331 size_t ssid_len;
332 } *excluded_ssid;
333 size_t num_excluded_ssid;
Dmitry Shmidtf21452a2014-02-26 10:55:25 -0800334
335 struct roaming_partner {
336 char fqdn[128];
337 int exact_match;
338 u8 priority;
339 char country[3];
340 } *roaming_partner;
341 size_t num_roaming_partner;
342
343 int update_identifier;
344
345 /**
346 * provisioning_sp - FQDN of the SP that provisioned the credential
347 */
348 char *provisioning_sp;
349
350 /**
351 * sp_priority - Credential priority within a provisioning SP
352 *
353 * This is the priority of the credential among all credentials
354 * provisionined by the same SP (i.e., for entries that have identical
355 * provisioning_sp value). The range of this priority is 0-255 with 0
356 * being the highest and 255 the lower priority.
357 */
358 int sp_priority;
359
360 unsigned int min_dl_bandwidth_home;
361 unsigned int min_ul_bandwidth_home;
362 unsigned int min_dl_bandwidth_roaming;
363 unsigned int min_ul_bandwidth_roaming;
364
365 /**
366 * max_bss_load - Maximum BSS Load Channel Utilization (1..255)
367 * This value is used as the maximum channel utilization for network
368 * selection purposes for home networks. If the AP does not advertise
369 * BSS Load or if the limit would prevent any connection, this
370 * constraint will be ignored.
371 */
372 unsigned int max_bss_load;
373
Hai Shalomfdcde762020-04-02 11:19:20 -0700374 size_t num_req_conn_capab;
Dmitry Shmidtf21452a2014-02-26 10:55:25 -0800375 u8 *req_conn_capab_proto;
376 int **req_conn_capab_port;
377
378 /**
379 * ocsp - Whether to use/require OCSP to check server certificate
380 *
381 * 0 = do not use OCSP stapling (TLS certificate status extension)
382 * 1 = try to use OCSP stapling, but not require response
383 * 2 = require valid OCSP stapling response
384 */
385 int ocsp;
Dmitry Shmidtf9bdef92014-04-25 10:46:36 -0700386
387 /**
388 * sim_num - User selected SIM identifier
389 *
390 * This variable is used for identifying which SIM is used if the system
391 * has more than one.
392 */
393 int sim_num;
Dmitry Shmidt04949592012-07-19 12:16:46 -0700394};
395
396
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700397#define CFG_CHANGED_DEVICE_NAME BIT(0)
398#define CFG_CHANGED_CONFIG_METHODS BIT(1)
399#define CFG_CHANGED_DEVICE_TYPE BIT(2)
400#define CFG_CHANGED_OS_VERSION BIT(3)
401#define CFG_CHANGED_UUID BIT(4)
402#define CFG_CHANGED_COUNTRY BIT(5)
403#define CFG_CHANGED_SEC_DEVICE_TYPE BIT(6)
404#define CFG_CHANGED_P2P_SSID_POSTFIX BIT(7)
405#define CFG_CHANGED_WPS_STRING BIT(8)
406#define CFG_CHANGED_P2P_INTRA_BSS BIT(9)
407#define CFG_CHANGED_VENDOR_EXTENSION BIT(10)
Jouni Malinen75ecf522011-06-27 15:19:46 -0700408#define CFG_CHANGED_P2P_LISTEN_CHANNEL BIT(11)
409#define CFG_CHANGED_P2P_OPER_CHANNEL BIT(12)
Dmitry Shmidt04949592012-07-19 12:16:46 -0700410#define CFG_CHANGED_P2P_PREF_CHAN BIT(13)
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700411#define CFG_CHANGED_EXT_PW_BACKEND BIT(14)
Dmitry Shmidtf8623282013-02-20 14:34:59 -0800412#define CFG_CHANGED_NFC_PASSWORD_TOKEN BIT(15)
Dmitry Shmidt2271d3f2014-06-23 12:16:31 -0700413#define CFG_CHANGED_P2P_PASSPHRASE_LEN BIT(16)
Dmitry Shmidtd7ff03d2015-12-04 14:49:35 -0800414#define CFG_CHANGED_SCHED_SCAN_PLANS BIT(17)
Dmitry Shmidtd2986c22017-10-23 14:22:09 -0700415#define CFG_CHANGED_WOWLAN_TRIGGERS BIT(18)
Hai Shalom81f62d82019-07-22 12:10:00 -0700416#define CFG_CHANGED_DISABLE_BTM BIT(19)
Hai Shalom899fcc72020-10-19 14:38:18 -0700417#define CFG_CHANGED_BGSCAN BIT(20)
Dennis Jeone2cb56b2020-10-23 21:23:01 +0900418#define CFG_CHANGED_DISABLE_BTM_NOTIFY BIT(21)
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700419
420/**
421 * struct wpa_config - wpa_supplicant configuration data
422 *
423 * This data structure is presents the per-interface (radio) configuration
424 * data. In many cases, there is only one struct wpa_config instance, but if
425 * more than one network interface is being controlled, one instance is used
426 * for each.
427 */
428struct wpa_config {
429 /**
430 * ssid - Head of the global network list
431 *
432 * This is the head for the list of all the configured networks.
433 */
434 struct wpa_ssid *ssid;
435
436 /**
437 * pssid - Per-priority network lists (in priority order)
438 */
439 struct wpa_ssid **pssid;
440
441 /**
442 * num_prio - Number of different priorities used in the pssid lists
443 *
444 * This indicates how many per-priority network lists are included in
445 * pssid.
446 */
Hai Shalomfdcde762020-04-02 11:19:20 -0700447 size_t num_prio;
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700448
449 /**
Dmitry Shmidt04949592012-07-19 12:16:46 -0700450 * cred - Head of the credential list
451 *
452 * This is the head for the list of all the configured credentials.
453 */
454 struct wpa_cred *cred;
455
456 /**
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700457 * eapol_version - IEEE 802.1X/EAPOL version number
458 *
459 * wpa_supplicant is implemented based on IEEE Std 802.1X-2004 which
460 * defines EAPOL version 2. However, there are many APs that do not
461 * handle the new version number correctly (they seem to drop the
462 * frames completely). In order to make wpa_supplicant interoperate
463 * with these APs, the version number is set to 1 by default. This
464 * configuration value can be used to set it to the new version (2).
465 */
466 int eapol_version;
467
468 /**
469 * ap_scan - AP scanning/selection
470 *
471 * By default, wpa_supplicant requests driver to perform AP
472 * scanning and then uses the scan results to select a
473 * suitable AP. Another alternative is to allow the driver to
474 * take care of AP scanning and selection and use
475 * wpa_supplicant just to process EAPOL frames based on IEEE
476 * 802.11 association information from the driver.
477 *
478 * 1: wpa_supplicant initiates scanning and AP selection (default).
479 *
480 * 0: Driver takes care of scanning, AP selection, and IEEE 802.11
481 * association parameters (e.g., WPA IE generation); this mode can
482 * also be used with non-WPA drivers when using IEEE 802.1X mode;
483 * do not try to associate with APs (i.e., external program needs
484 * to control association). This mode must also be used when using
485 * wired Ethernet drivers.
486 *
487 * 2: like 0, but associate with APs using security policy and SSID
488 * (but not BSSID); this can be used, e.g., with ndiswrapper and NDIS
489 * drivers to enable operation with hidden SSIDs and optimized roaming;
490 * in this mode, the network blocks in the configuration are tried
491 * one by one until the driver reports successful association; each
492 * network block should have explicit security policy (i.e., only one
493 * option in the lists) for key_mgmt, pairwise, group, proto variables.
Dmitry Shmidtd80a4012015-11-05 16:35:40 -0800494 *
495 * Note: ap_scan=2 should not be used with the nl80211 driver interface
496 * (the current Linux interface). ap_scan=1 is optimized work working
497 * with nl80211. For finding networks using hidden SSID, scan_ssid=1 in
498 * the network block can be used with nl80211.
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700499 */
500 int ap_scan;
501
502 /**
Dmitry Shmidtb96dad42013-11-05 10:07:29 -0800503 * bgscan - Background scan and roaming parameters or %NULL if none
504 *
505 * This is an optional set of parameters for background scanning and
506 * roaming within a network (ESS). For more detailed information see
507 * ssid block documentation.
508 *
509 * The variable defines default bgscan behavior for all BSS station
510 * networks except for those which have their own bgscan configuration.
511 */
512 char *bgscan;
513
514 /**
Dmitry Shmidt04949592012-07-19 12:16:46 -0700515 * disable_scan_offload - Disable automatic offloading of scan requests
516 *
517 * By default, %wpa_supplicant tries to offload scanning if the driver
518 * indicates support for this (sched_scan). This configuration
519 * parameter can be used to disable this offloading mechanism.
520 */
521 int disable_scan_offload;
522
523 /**
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700524 * ctrl_interface - Parameters for the control interface
525 *
526 * If this is specified, %wpa_supplicant will open a control interface
527 * that is available for external programs to manage %wpa_supplicant.
528 * The meaning of this string depends on which control interface
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -0800529 * mechanism is used. For all cases, the existence of this parameter
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700530 * in configuration is used to determine whether the control interface
531 * is enabled.
532 *
533 * For UNIX domain sockets (default on Linux and BSD): This is a
534 * directory that will be created for UNIX domain sockets for listening
535 * to requests from external programs (CLI/GUI, etc.) for status
536 * information and configuration. The socket file will be named based
537 * on the interface name, so multiple %wpa_supplicant processes can be
538 * run at the same time if more than one interface is used.
539 * /var/run/wpa_supplicant is the recommended directory for sockets and
540 * by default, wpa_cli will use it when trying to connect with
541 * %wpa_supplicant.
542 *
543 * Access control for the control interface can be configured
544 * by setting the directory to allow only members of a group
545 * to use sockets. This way, it is possible to run
546 * %wpa_supplicant as root (since it needs to change network
547 * configuration and open raw sockets) and still allow GUI/CLI
548 * components to be run as non-root users. However, since the
549 * control interface can be used to change the network
550 * configuration, this access needs to be protected in many
551 * cases. By default, %wpa_supplicant is configured to use gid
552 * 0 (root). If you want to allow non-root users to use the
553 * control interface, add a new group and change this value to
554 * match with that group. Add users that should have control
555 * interface access to this group.
556 *
557 * When configuring both the directory and group, use following format:
558 * DIR=/var/run/wpa_supplicant GROUP=wheel
559 * DIR=/var/run/wpa_supplicant GROUP=0
560 * (group can be either group name or gid)
561 *
562 * For UDP connections (default on Windows): The value will be ignored.
563 * This variable is just used to select that the control interface is
564 * to be created. The value can be set to, e.g., udp
565 * (ctrl_interface=udp).
566 *
567 * For Windows Named Pipe: This value can be used to set the security
568 * descriptor for controlling access to the control interface. Security
569 * descriptor can be set using Security Descriptor String Format (see
570 * http://msdn.microsoft.com/library/default.asp?url=/library/en-us/secauthz/security/security_descriptor_string_format.asp).
571 * The descriptor string needs to be prefixed with SDDL=. For example,
572 * ctrl_interface=SDDL=D: would set an empty DACL (which will reject
573 * all connections).
574 */
575 char *ctrl_interface;
576
577 /**
578 * ctrl_interface_group - Control interface group (DEPRECATED)
579 *
580 * This variable is only used for backwards compatibility. Group for
581 * UNIX domain sockets should now be specified using GROUP=group in
582 * ctrl_interface variable.
583 */
584 char *ctrl_interface_group;
585
586 /**
587 * fast_reauth - EAP fast re-authentication (session resumption)
588 *
589 * By default, fast re-authentication is enabled for all EAP methods
590 * that support it. This variable can be used to disable fast
591 * re-authentication (by setting fast_reauth=0). Normally, there is no
592 * need to disable fast re-authentication.
593 */
594 int fast_reauth;
595
596 /**
597 * opensc_engine_path - Path to the OpenSSL engine for opensc
598 *
599 * This is an OpenSSL specific configuration option for loading OpenSC
600 * engine (engine_opensc.so); if %NULL, this engine is not loaded.
601 */
602 char *opensc_engine_path;
603
604 /**
605 * pkcs11_engine_path - Path to the OpenSSL engine for PKCS#11
606 *
607 * This is an OpenSSL specific configuration option for loading PKCS#11
608 * engine (engine_pkcs11.so); if %NULL, this engine is not loaded.
609 */
610 char *pkcs11_engine_path;
611
612 /**
613 * pkcs11_module_path - Path to the OpenSSL OpenSC/PKCS#11 module
614 *
615 * This is an OpenSSL specific configuration option for configuring
616 * path to OpenSC/PKCS#11 engine (opensc-pkcs11.so); if %NULL, this
617 * module is not loaded.
618 */
619 char *pkcs11_module_path;
620
621 /**
Dmitry Shmidt6c0da2b2015-01-05 13:08:17 -0800622 * openssl_ciphers - OpenSSL cipher string
623 *
624 * This is an OpenSSL specific configuration option for configuring the
625 * default ciphers. If not set, "DEFAULT:!EXP:!LOW" is used as the
626 * default.
627 */
628 char *openssl_ciphers;
629
630 /**
Dmitry Shmidt04949592012-07-19 12:16:46 -0700631 * pcsc_reader - PC/SC reader name prefix
632 *
633 * If not %NULL, PC/SC reader with a name that matches this prefix is
634 * initialized for SIM/USIM access. Empty string can be used to match
635 * the first available reader.
636 */
637 char *pcsc_reader;
638
639 /**
640 * pcsc_pin - PIN for USIM, GSM SIM, and smartcards
641 *
642 * This field is used to configure PIN for SIM/USIM for EAP-SIM and
643 * EAP-AKA. If left out, this will be asked through control interface.
644 */
645 char *pcsc_pin;
646
647 /**
Dmitry Shmidt051af732013-10-22 13:52:46 -0700648 * external_sim - Use external processing for SIM/USIM operations
649 */
650 int external_sim;
651
652 /**
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700653 * driver_param - Driver interface parameters
654 *
655 * This text string is passed to the selected driver interface with the
656 * optional struct wpa_driver_ops::set_param() handler. This can be
657 * used to configure driver specific options without having to add new
658 * driver interface functionality.
659 */
660 char *driver_param;
661
662 /**
663 * dot11RSNAConfigPMKLifetime - Maximum lifetime of a PMK
664 *
665 * dot11 MIB variable for the maximum lifetime of a PMK in the PMK
666 * cache (unit: seconds).
667 */
668 unsigned int dot11RSNAConfigPMKLifetime;
669
670 /**
671 * dot11RSNAConfigPMKReauthThreshold - PMK re-authentication threshold
672 *
673 * dot11 MIB variable for the percentage of the PMK lifetime
674 * that should expire before an IEEE 802.1X reauthentication occurs.
675 */
676 unsigned int dot11RSNAConfigPMKReauthThreshold;
677
678 /**
679 * dot11RSNAConfigSATimeout - Security association timeout
680 *
681 * dot11 MIB variable for the maximum time a security association
682 * shall take to set up (unit: seconds).
683 */
684 unsigned int dot11RSNAConfigSATimeout;
685
686 /**
687 * update_config - Is wpa_supplicant allowed to update configuration
688 *
689 * This variable control whether wpa_supplicant is allow to re-write
690 * its configuration with wpa_config_write(). If this is zero,
691 * configuration data is only changed in memory and the external data
Hai Shalom60840252021-02-19 19:02:11 -0800692 * is not overridden. If this is non-zero, wpa_supplicant will update
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700693 * the configuration data (e.g., a file) whenever configuration is
694 * changed. This update may replace the old configuration which can
695 * remove comments from it in case of a text file configuration.
696 */
697 int update_config;
698
699 /**
700 * blobs - Configuration blobs
701 */
702 struct wpa_config_blob *blobs;
703
704 /**
705 * uuid - Universally Unique IDentifier (UUID; see RFC 4122) for WPS
706 */
707 u8 uuid[16];
708
709 /**
Dmitry Shmidtd2986c22017-10-23 14:22:09 -0700710 * auto_uuid - Automatic UUID behavior
711 * 0 = generate static value based on the local MAC address (default)
712 * 1 = generate a random UUID every time wpa_supplicant starts
713 */
714 int auto_uuid;
715
716 /**
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700717 * device_name - Device Name (WPS)
718 * User-friendly description of device; up to 32 octets encoded in
719 * UTF-8
720 */
721 char *device_name;
722
723 /**
724 * manufacturer - Manufacturer (WPS)
725 * The manufacturer of the device (up to 64 ASCII characters)
726 */
727 char *manufacturer;
728
729 /**
730 * model_name - Model Name (WPS)
731 * Model of the device (up to 32 ASCII characters)
732 */
733 char *model_name;
734
735 /**
736 * model_number - Model Number (WPS)
737 * Additional device description (up to 32 ASCII characters)
738 */
739 char *model_number;
740
741 /**
742 * serial_number - Serial Number (WPS)
743 * Serial number of the device (up to 32 characters)
744 */
745 char *serial_number;
746
747 /**
748 * device_type - Primary Device Type (WPS)
749 */
750 u8 device_type[WPS_DEV_TYPE_LEN];
751
752 /**
753 * config_methods - Config Methods
754 *
755 * This is a space-separated list of supported WPS configuration
756 * methods. For example, "label virtual_display virtual_push_button
757 * keypad".
758 * Available methods: usba ethernet label display ext_nfc_token
759 * int_nfc_token nfc_interface push_button keypad
760 * virtual_display physical_display
761 * virtual_push_button physical_push_button.
762 */
763 char *config_methods;
764
765 /**
766 * os_version - OS Version (WPS)
767 * 4-octet operating system version number
768 */
769 u8 os_version[4];
770
771 /**
772 * country - Country code
773 *
774 * This is the ISO/IEC alpha2 country code for which we are operating
775 * in
776 */
777 char country[2];
778
779 /**
780 * wps_cred_processing - Credential processing
781 *
782 * 0 = process received credentials internally
783 * 1 = do not process received credentials; just pass them over
784 * ctrl_iface to external program(s)
785 * 2 = process received credentials internally and pass them over
786 * ctrl_iface to external program(s)
787 */
788 int wps_cred_processing;
789
Hai Shalom021b0b52019-04-10 11:17:58 -0700790 /**
791 * wps_cred_add_sae - Whether to enable SAE automatically for WPS
792 *
793 * 0 = only add the explicitly listed WPA2-PSK configuration
794 * 1 = add both the WPA2-PSK and SAE configuration and enable PMF so
795 * that the station gets configured in WPA3-Personal transition mode
796 * (supports both WPA2-Personal (PSK) and WPA3-Personal (SAE) APs).
797 */
798 int wps_cred_add_sae;
799
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700800#define MAX_SEC_DEVICE_TYPES 5
801 /**
802 * sec_device_types - Secondary Device Types (P2P)
803 */
804 u8 sec_device_type[MAX_SEC_DEVICE_TYPES][WPS_DEV_TYPE_LEN];
805 int num_sec_device_types;
806
807 int p2p_listen_reg_class;
808 int p2p_listen_channel;
809 int p2p_oper_reg_class;
810 int p2p_oper_channel;
811 int p2p_go_intent;
812 char *p2p_ssid_postfix;
813 int persistent_reconnect;
814 int p2p_intra_bss;
Dmitry Shmidt04949592012-07-19 12:16:46 -0700815 unsigned int num_p2p_pref_chan;
816 struct p2p_channel *p2p_pref_chan;
Dmitry Shmidt68d0e3e2013-10-28 17:59:21 -0700817 struct wpa_freq_range_list p2p_no_go_freq;
818 int p2p_add_cli_chan;
Dmitry Shmidt700a1372013-03-15 14:14:44 -0700819 int p2p_ignore_shared_freq;
Dmitry Shmidt43cb5782014-06-16 16:23:22 -0700820 int p2p_optimize_listen_chan;
Dmitry Shmidt04949592012-07-19 12:16:46 -0700821
Hai Shalom899fcc72020-10-19 14:38:18 -0700822 int p2p_6ghz_disable;
823
Dmitry Shmidt04949592012-07-19 12:16:46 -0700824 struct wpabuf *wps_vendor_ext_m1;
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700825
826#define MAX_WPS_VENDOR_EXT 10
827 /**
828 * wps_vendor_ext - Vendor extension attributes in WPS
829 */
830 struct wpabuf *wps_vendor_ext[MAX_WPS_VENDOR_EXT];
831
832 /**
833 * p2p_group_idle - Maximum idle time in seconds for P2P group
834 *
835 * This value controls how long a P2P group is maintained after there
836 * is no other members in the group. As a GO, this means no associated
837 * stations in the group. As a P2P client, this means no GO seen in
838 * scan results. The maximum idle time is specified in seconds with 0
839 * indicating no time limit, i.e., the P2P group remains in active
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -0800840 * state indefinitely until explicitly removed. As a P2P client, the
841 * maximum idle time of P2P_MAX_CLIENT_IDLE seconds is enforced, i.e.,
842 * this parameter is mainly meant for GO use and for P2P client, it can
Dmitry Shmidt04949592012-07-19 12:16:46 -0700843 * only be used to reduce the default timeout to smaller value. A
844 * special value -1 can be used to configure immediate removal of the
845 * group for P2P client role on any disconnection after the data
846 * connection has been established.
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700847 */
Dmitry Shmidt04949592012-07-19 12:16:46 -0700848 int p2p_group_idle;
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700849
850 /**
Dmitry Shmidtd80a4012015-11-05 16:35:40 -0800851 * p2p_go_freq_change_policy - The GO frequency change policy
852 *
853 * This controls the behavior of the GO when there is a change in the
854 * map of the currently used frequencies in case more than one channel
855 * is supported.
856 *
857 * @P2P_GO_FREQ_MOVE_SCM: Prefer working in a single channel mode if
858 * possible. In case the GO is the only interface using its frequency
859 * and there are other station interfaces on other frequencies, the GO
860 * will migrate to one of these frequencies.
861 *
862 * @P2P_GO_FREQ_MOVE_SCM_PEER_SUPPORTS: Same as P2P_GO_FREQ_MOVE_SCM,
863 * but a transition is possible only in case one of the other used
864 * frequencies is one of the frequencies in the intersection of the
865 * frequency list of the local device and the peer device.
866 *
867 * @P2P_GO_FREQ_MOVE_STAY: Prefer to stay on the current frequency.
868 *
869 * @P2P_GO_FREQ_MOVE_SCM_ECSA: Same as
870 * P2P_GO_FREQ_MOVE_SCM_PEER_SUPPORTS but a transition is possible only
871 * if all the group members advertise eCSA support.
872 */
873 enum {
874 P2P_GO_FREQ_MOVE_SCM = 0,
875 P2P_GO_FREQ_MOVE_SCM_PEER_SUPPORTS = 1,
876 P2P_GO_FREQ_MOVE_STAY = 2,
877 P2P_GO_FREQ_MOVE_SCM_ECSA = 3,
878 P2P_GO_FREQ_MOVE_MAX = P2P_GO_FREQ_MOVE_SCM_ECSA,
879 } p2p_go_freq_change_policy;
880
881#define DEFAULT_P2P_GO_FREQ_MOVE P2P_GO_FREQ_MOVE_STAY
882
883 /**
Dmitry Shmidt2271d3f2014-06-23 12:16:31 -0700884 * p2p_passphrase_len - Passphrase length (8..63) for P2P GO
885 *
886 * This parameter controls the length of the random passphrase that is
887 * generated at the GO.
888 */
889 unsigned int p2p_passphrase_len;
890
891 /**
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700892 * bss_max_count - Maximum number of BSS entries to keep in memory
893 */
894 unsigned int bss_max_count;
895
896 /**
897 * bss_expiration_age - BSS entry age after which it can be expired
898 *
899 * This value controls the time in seconds after which a BSS entry
900 * gets removed if it has not been updated or is not in use.
901 */
902 unsigned int bss_expiration_age;
903
904 /**
905 * bss_expiration_scan_count - Expire BSS after number of scans
906 *
907 * If the BSS entry has not been seen in this many scans, it will be
908 * removed. A value of 1 means that entry is removed after the first
909 * scan in which the BSSID is not seen. Larger values can be used
910 * to avoid BSS entries disappearing if they are not visible in
911 * every scan (e.g., low signal quality or interference).
912 */
913 unsigned int bss_expiration_scan_count;
914
915 /**
916 * filter_ssids - SSID-based scan result filtering
917 *
918 * 0 = do not filter scan results
919 * 1 = only include configured SSIDs in scan results/BSS table
920 */
921 int filter_ssids;
922
923 /**
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700924 * filter_rssi - RSSI-based scan result filtering
925 *
926 * 0 = do not filter scan results
927 * -n = filter scan results below -n dBm
928 */
929 int filter_rssi;
930
931 /**
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700932 * max_num_sta - Maximum number of STAs in an AP/P2P GO
933 */
934 unsigned int max_num_sta;
935
936 /**
Roshan Pius3a1667e2018-07-03 15:17:14 -0700937 * ap_isolate - Whether to use client isolation feature
938 *
939 * Client isolation can be used to prevent low-level bridging of
940 * frames between associated stations in the BSS. By default,
941 * this bridging is allowed (ap_isolate=0); except in P2P GO case,
942 * where p2p_intra_bss parameter is used to determine whether to allow
943 * intra-BSS forwarding (ap_isolate = !p2p_intra_bss).
944 *
945 * 0 = do not enable AP isolation
946 * 1 = enable AP isolation
947 */
948 int ap_isolate;
949
950 /**
Dmitry Shmidt51b6ea82013-05-08 10:42:09 -0700951 * freq_list - Array of allowed scan frequencies or %NULL for all
952 *
953 * This is an optional zero-terminated array of frequencies in
954 * megahertz (MHz) to allow for narrowing scanning range.
955 */
956 int *freq_list;
957
958 /**
Hai Shalom60840252021-02-19 19:02:11 -0800959 * initial_freq_list - like freq_list but for initial scan
960 *
961 * This is an optional zero-terminated array of frequencies in
962 * megahertz (MHz) to allow for narrowing scanning range when
963 * the application is started.
964 *
965 * This can be used to speed up initial connection time if the
966 * channel is known ahead of time, without limiting the scanned
967 * frequencies during normal use.
968 */
969 int *initial_freq_list;
970
971 /**
Dmitry Shmidtea69e842013-05-13 14:52:28 -0700972 * scan_cur_freq - Whether to scan only the current channel
973 *
974 * If true, attempt to scan only the current channel if any other
975 * VIFs on this radio are already associated on a particular channel.
976 */
977 int scan_cur_freq;
978
979 /**
Hai Shalom60840252021-02-19 19:02:11 -0800980 * scan_res_valid_for_connect - Seconds scans are valid for association
981 *
982 * This configures the number of seconds old scan results are considered
983 * valid for association. When scan results are older than this value
984 * a new scan is triggered prior to the association.
985 */
986 int scan_res_valid_for_connect;
987
988 /**
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700989 * changed_parameters - Bitmap of changed parameters since last update
990 */
991 unsigned int changed_parameters;
992
993 /**
Roshan Pius3a1667e2018-07-03 15:17:14 -0700994 * disassoc_low_ack - Disassociate stations with massive packet loss
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700995 */
996 int disassoc_low_ack;
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -0800997
998 /**
999 * interworking - Whether Interworking (IEEE 802.11u) is enabled
1000 */
1001 int interworking;
1002
1003 /**
1004 * access_network_type - Access Network Type
1005 *
1006 * When Interworking is enabled, scans will be limited to APs that
1007 * advertise the specified Access Network Type (0..15; with 15
1008 * indicating wildcard match).
1009 */
1010 int access_network_type;
1011
Dmitry Shmidtd2986c22017-10-23 14:22:09 -07001012 /**
1013 * go_interworking - Whether Interworking for P2P GO is enabled
1014 */
1015 int go_interworking;
1016
1017 /**
1018 * go_access_network_type - P2P GO Access Network Type
1019 *
1020 * This indicates which access network type to advertise if Interworking
1021 * is enabled for P2P GO.
1022 */
1023 int go_access_network_type;
1024
1025 /**
1026 * go_internet - Interworking: Internet connectivity (0 or 1)
1027 */
1028 int go_internet;
1029
1030 /**
1031 * go_venue_group - Interworking: Venue group
1032 */
1033 int go_venue_group;
1034
1035 /**
1036 * go_venue_type: Interworking: Venue type
1037 */
1038 int go_venue_type;
1039
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -08001040 /**
Hai Shalom899fcc72020-10-19 14:38:18 -07001041 * hessid - Homogeneous ESS identifier
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -08001042 *
1043 * If this is set (any octet is non-zero), scans will be used to
1044 * request response only from BSSes belonging to the specified
1045 * Homogeneous ESS. This is used only if interworking is enabled.
1046 */
1047 u8 hessid[ETH_ALEN];
1048
1049 /**
Dmitry Shmidt04949592012-07-19 12:16:46 -07001050 * hs20 - Hotspot 2.0
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -08001051 */
Dmitry Shmidt04949592012-07-19 12:16:46 -07001052 int hs20;
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -08001053
1054 /**
Dmitry Shmidt04949592012-07-19 12:16:46 -07001055 * pbc_in_m1 - AP mode WPS probing workaround for PBC with Windows 7
1056 *
1057 * Windows 7 uses incorrect way of figuring out AP's WPS capabilities
1058 * by acting as a Registrar and using M1 from the AP. The config
1059 * methods attribute in that message is supposed to indicate only the
1060 * configuration method supported by the AP in Enrollee role, i.e., to
1061 * add an external Registrar. For that case, PBC shall not be used and
1062 * as such, the PushButton config method is removed from M1 by default.
1063 * If pbc_in_m1=1 is included in the configuration file, the PushButton
1064 * config method is left in M1 (if included in config_methods
1065 * parameter) to allow Windows 7 to use PBC instead of PIN (e.g., from
1066 * a label in the AP).
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -08001067 */
Dmitry Shmidt04949592012-07-19 12:16:46 -07001068 int pbc_in_m1;
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -08001069
1070 /**
Dmitry Shmidt04949592012-07-19 12:16:46 -07001071 * autoscan - Automatic scan parameters or %NULL if none
1072 *
1073 * This is an optional set of parameters for automatic scanning
1074 * within an interface in following format:
1075 * <autoscan module name>:<module parameters>
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -08001076 */
Dmitry Shmidt04949592012-07-19 12:16:46 -07001077 char *autoscan;
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -08001078
1079 /**
Dmitry Shmidtf8623282013-02-20 14:34:59 -08001080 * wps_nfc_pw_from_config - NFC Device Password was read from config
1081 *
1082 * This parameter can be determined whether the NFC Device Password was
1083 * included in the configuration (1) or generated dynamically (0). Only
1084 * the former case is re-written back to the configuration file.
1085 */
1086 int wps_nfc_pw_from_config;
1087
1088 /**
Dmitry Shmidt04949592012-07-19 12:16:46 -07001089 * wps_nfc_dev_pw_id - NFC Device Password ID for password token
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -08001090 */
Dmitry Shmidt04949592012-07-19 12:16:46 -07001091 int wps_nfc_dev_pw_id;
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -08001092
1093 /**
Dmitry Shmidt04949592012-07-19 12:16:46 -07001094 * wps_nfc_dh_pubkey - NFC DH Public Key for password token
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -08001095 */
Dmitry Shmidt04949592012-07-19 12:16:46 -07001096 struct wpabuf *wps_nfc_dh_pubkey;
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -08001097
1098 /**
Dmitry Shmidta54fa5f2013-01-15 13:53:35 -08001099 * wps_nfc_dh_privkey - NFC DH Private Key for password token
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -08001100 */
Dmitry Shmidt04949592012-07-19 12:16:46 -07001101 struct wpabuf *wps_nfc_dh_privkey;
1102
1103 /**
Dmitry Shmidta54fa5f2013-01-15 13:53:35 -08001104 * wps_nfc_dev_pw - NFC Device Password for password token
Dmitry Shmidt04949592012-07-19 12:16:46 -07001105 */
1106 struct wpabuf *wps_nfc_dev_pw;
Dmitry Shmidt61d9df32012-08-29 16:22:06 -07001107
1108 /**
1109 * ext_password_backend - External password backend or %NULL if none
1110 *
1111 * format: <backend name>[:<optional backend parameters>]
1112 */
1113 char *ext_password_backend;
1114
1115 /*
1116 * p2p_go_max_inactivity - Timeout in seconds to detect STA inactivity
1117 *
1118 * This timeout value is used in P2P GO mode to clean up
1119 * inactive stations.
1120 * By default: 300 seconds.
1121 */
1122 int p2p_go_max_inactivity;
1123
1124 struct hostapd_wmm_ac_params wmm_ac_params[4];
Hai Shalom899fcc72020-10-19 14:38:18 -07001125 struct hostapd_tx_queue_params tx_queue[4];
Dmitry Shmidt61d9df32012-08-29 16:22:06 -07001126
1127 /**
1128 * auto_interworking - Whether to use network selection automatically
1129 *
1130 * 0 = do not automatically go through Interworking network selection
1131 * (i.e., require explicit interworking_select command for this)
1132 * 1 = perform Interworking network selection if one or more
1133 * credentials have been configured and scan did not find a
1134 * matching network block
1135 */
1136 int auto_interworking;
Dmitry Shmidtd5e49232012-12-03 15:08:10 -08001137
1138 /**
1139 * p2p_go_ht40 - Default mode for HT40 enable when operating as GO.
1140 *
1141 * This will take effect for p2p_group_add, p2p_connect, and p2p_invite.
1142 * Note that regulatory constraints and driver capabilities are
1143 * consulted anyway, so setting it to 1 can't do real harm.
1144 * By default: 0 (disabled)
1145 */
1146 int p2p_go_ht40;
1147
1148 /**
Dmitry Shmidt68d0e3e2013-10-28 17:59:21 -07001149 * p2p_go_vht - Default mode for VHT enable when operating as GO
1150 *
1151 * This will take effect for p2p_group_add, p2p_connect, and p2p_invite.
1152 * Note that regulatory constraints and driver capabilities are
1153 * consulted anyway, so setting it to 1 can't do real harm.
1154 * By default: 0 (disabled)
1155 */
1156 int p2p_go_vht;
1157
1158 /**
Ahmed ElArabawy0ff61c52019-12-26 12:38:39 -08001159 * p2p_go_edmg - Default mode for EDMG enable when operating as GO
1160 *
1161 * This will take effect for p2p_group_add, p2p_connect, and p2p_invite.
1162 * Note that regulatory constraints and driver capabilities are
1163 * consulted anyway, so setting it to 1 can't do real harm.
1164 * By default: 0 (disabled)
1165 */
1166 int p2p_go_edmg;
1167
1168 /**
Hai Shalom74f70d42019-02-11 14:42:39 -08001169 * p2p_go_he - Default mode for 11ax HE enable when operating as GO
1170 *
1171 * This will take effect for p2p_group_add, p2p_connect, and p2p_invite.
1172 * Note that regulatory constraints and driver capabilities are
1173 * consulted anyway, so setting it to 1 can't do real harm.
1174 * By default: 0 (disabled)
1175 */
1176 int p2p_go_he;
1177
1178 /**
Dmitry Shmidt7f656022015-02-25 14:36:37 -08001179 * p2p_go_ctwindow - CTWindow to use when operating as GO
1180 *
1181 * By default: 0 (no CTWindow). Values 0-127 can be used to indicate
1182 * the length of the CTWindow in TUs.
1183 */
1184 int p2p_go_ctwindow;
1185
1186 /**
Dmitry Shmidtd5e49232012-12-03 15:08:10 -08001187 * p2p_disabled - Whether P2P operations are disabled for this interface
1188 */
1189 int p2p_disabled;
1190
1191 /**
1192 * p2p_no_group_iface - Whether group interfaces can be used
1193 *
1194 * By default, wpa_supplicant will create a separate interface for P2P
1195 * group operations if the driver supports this. This functionality can
1196 * be disabled by setting this parameter to 1. In that case, the same
1197 * interface that was used for the P2P management operations is used
1198 * also for the group operation.
1199 */
1200 int p2p_no_group_iface;
1201
1202 /**
Dmitry Shmidta3dc3092015-06-23 11:21:28 -07001203 * p2p_cli_probe - Enable/disable P2P CLI probe request handling
1204 *
1205 * If this parameter is set to 1, a connected P2P Client will receive
1206 * and handle Probe Request frames. Setting this parameter to 0
1207 * disables this option. Default value: 0.
1208 *
1209 * Note: Setting this property at run time takes effect on the following
1210 * interface state transition to/from the WPA_COMPLETED state.
1211 */
1212 int p2p_cli_probe;
1213
1214 /**
Dmitry Shmidtd5e49232012-12-03 15:08:10 -08001215 * okc - Whether to enable opportunistic key caching by default
1216 *
1217 * By default, OKC is disabled unless enabled by the per-network
1218 * proactive_key_caching=1 parameter. okc=1 can be used to change this
1219 * default behavior.
1220 */
1221 int okc;
1222
1223 /**
1224 * pmf - Whether to enable/require PMF by default
1225 *
1226 * By default, PMF is disabled unless enabled by the per-network
1227 * ieee80211w=1 or ieee80211w=2 parameter. pmf=1/2 can be used to change
Dmitry Shmidt849734c2016-05-27 09:59:01 -07001228 * this default behavior for RSN network (this is not applicable for
1229 * non-RSN cases).
Dmitry Shmidtd5e49232012-12-03 15:08:10 -08001230 */
1231 enum mfp_options pmf;
Dmitry Shmidta54fa5f2013-01-15 13:53:35 -08001232
1233 /**
1234 * sae_groups - Preference list of enabled groups for SAE
1235 *
1236 * By default (if this parameter is not set), the mandatory group 19
1237 * (ECC group defined over a 256-bit prime order field) is preferred,
1238 * but other groups are also enabled. If this parameter is set, the
1239 * groups will be tried in the indicated order.
1240 */
1241 int *sae_groups;
Dmitry Shmidt7a5e50a2013-03-05 12:37:16 -08001242
1243 /**
Hai Shalomc3565922019-10-28 11:58:20 -07001244 * sae_pwe - SAE mechanism for PWE derivation
1245 * 0 = hunting-and-pecking loop only
1246 * 1 = hash-to-element only
1247 * 2 = both hunting-and-pecking loop and hash-to-element enabled
1248 */
1249 int sae_pwe;
1250
1251 /**
1252 * sae_pmkid_in_assoc - Whether to include PMKID in SAE Assoc Req
1253 */
1254 int sae_pmkid_in_assoc;
1255
1256 /**
Dmitry Shmidt7a5e50a2013-03-05 12:37:16 -08001257 * dtim_period - Default DTIM period in Beacon intervals
1258 *
1259 * This parameter can be used to set the default value for network
1260 * blocks that do not specify dtim_period.
1261 */
1262 int dtim_period;
1263
1264 /**
1265 * beacon_int - Default Beacon interval in TU
1266 *
1267 * This parameter can be used to set the default value for network
1268 * blocks that do not specify beacon_int.
1269 */
1270 int beacon_int;
Dmitry Shmidt0ccb66e2013-03-29 16:41:28 -07001271
1272 /**
1273 * ap_vendor_elements: Vendor specific elements for Beacon/ProbeResp
1274 *
1275 * This parameter can be used to define additional vendor specific
1276 * elements for Beacon and Probe Response frames in AP/P2P GO mode. The
1277 * format for these element(s) is a hexdump of the raw information
1278 * elements (id+len+payload for one or more elements).
1279 */
1280 struct wpabuf *ap_vendor_elements;
Dmitry Shmidt444d5672013-04-01 13:08:44 -07001281
1282 /**
Hai Shaloma20dcd72022-02-04 13:43:00 -08001283 * ap_assocresp_elements: Vendor specific elements for (Re)Association
1284 * Response frames
1285 *
1286 * This parameter can be used to define additional vendor specific
1287 * elements for (Re)Association Response frames in AP/P2P GO mode. The
1288 * format for these element(s) is a hexdump of the raw information
1289 * elements (id+len+payload for one or more elements).
1290 */
1291 struct wpabuf *ap_assocresp_elements;
1292
1293 /**
Dmitry Shmidt444d5672013-04-01 13:08:44 -07001294 * ignore_old_scan_res - Ignore scan results older than request
1295 *
1296 * The driver may have a cache of scan results that makes it return
1297 * information that is older than our scan trigger. This parameter can
1298 * be used to configure such old information to be ignored instead of
1299 * allowing it to update the internal BSS table.
1300 */
1301 int ignore_old_scan_res;
Dmitry Shmidt51b6ea82013-05-08 10:42:09 -07001302
1303 /**
1304 * sched_scan_interval - schedule scan interval
1305 */
1306 unsigned int sched_scan_interval;
Dmitry Shmidte0e48dc2013-11-18 12:00:06 -08001307
1308 /**
Dmitry Shmidtd2986c22017-10-23 14:22:09 -07001309 * sched_scan_start_delay - Schedule scan start delay before first scan
1310 *
1311 * Delay (in seconds) before scheduling first scan plan cycle. The
1312 * driver may ignore this parameter and start immediately (or at any
1313 * other time), if this feature is not supported.
1314 */
1315 unsigned int sched_scan_start_delay;
1316
1317 /**
Dmitry Shmidte0e48dc2013-11-18 12:00:06 -08001318 * tdls_external_control - External control for TDLS setup requests
1319 *
1320 * Enable TDLS mode where external programs are given the control
1321 * to specify the TDLS link to get established to the driver. The
1322 * driver requests the TDLS setup to the supplicant only for the
1323 * specified TDLS peers.
1324 */
1325 int tdls_external_control;
Dmitry Shmidtcf32e602014-01-28 10:57:39 -08001326
1327 u8 ip_addr_go[4];
1328 u8 ip_addr_mask[4];
1329 u8 ip_addr_start[4];
1330 u8 ip_addr_end[4];
Dmitry Shmidtf21452a2014-02-26 10:55:25 -08001331
1332 /**
1333 * osu_dir - OSU provider information directory
1334 *
1335 * If set, allow FETCH_OSU control interface command to be used to fetch
1336 * OSU provider information into all APs and store the results in this
1337 * directory.
1338 */
1339 char *osu_dir;
Dmitry Shmidtb58836e2014-04-29 14:35:56 -07001340
1341 /**
1342 * wowlan_triggers - Wake-on-WLAN triggers
1343 *
1344 * If set, these wowlan triggers will be configured.
1345 */
1346 char *wowlan_triggers;
Dmitry Shmidt09f57ba2014-06-10 16:07:13 -07001347
1348 /**
1349 * p2p_search_delay - Extra delay between concurrent search iterations
1350 *
1351 * Add extra delay (in milliseconds) between search iterations when
1352 * there is a concurrent operation to make p2p_find friendlier to
1353 * concurrent operations by avoiding it from taking 100% of radio
1354 * resources.
1355 */
1356 unsigned int p2p_search_delay;
Dmitry Shmidt661b4f72014-09-29 14:58:27 -07001357
1358 /**
1359 * mac_addr - MAC address policy default
1360 *
1361 * 0 = use permanent MAC address
1362 * 1 = use random MAC address for each ESS connection
1363 * 2 = like 1, but maintain OUI (with local admin bit set)
1364 *
1365 * By default, permanent MAC address is used unless policy is changed by
1366 * the per-network mac_addr parameter. Global mac_addr=1 can be used to
1367 * change this default behavior.
1368 */
1369 int mac_addr;
1370
1371 /**
1372 * rand_addr_lifetime - Lifetime of random MAC address in seconds
1373 */
1374 unsigned int rand_addr_lifetime;
1375
1376 /**
1377 * preassoc_mac_addr - Pre-association MAC address policy
1378 *
1379 * 0 = use permanent MAC address
1380 * 1 = use random MAC address
1381 * 2 = like 1, but maintain OUI (with local admin bit set)
1382 */
1383 int preassoc_mac_addr;
Dmitry Shmidt6c0da2b2015-01-05 13:08:17 -08001384
1385 /**
1386 * key_mgmt_offload - Use key management offload
1387 *
1388 * Key management offload should be used if the device supports it.
1389 * Key management offload is the capability of a device operating as
1390 * a station to do the exchange necessary to establish temporal keys
1391 * during initial RSN connection, after roaming, or during a PTK
1392 * rekeying operation.
1393 */
1394 int key_mgmt_offload;
1395
1396 /**
1397 * user_mpm - MPM residency
1398 *
1399 * 0: MPM lives in driver.
1400 * 1: wpa_supplicant handles peering and station allocation.
1401 *
1402 * If AMPE or SAE is enabled, the MPM is always in userspace.
1403 */
1404 int user_mpm;
1405
1406 /**
1407 * max_peer_links - Maximum number of peer links
1408 *
1409 * Maximum number of mesh peering currently maintained by the STA.
1410 */
1411 int max_peer_links;
Dmitry Shmidt2f74e362015-01-21 13:19:05 -08001412
1413 /**
1414 * cert_in_cb - Whether to include a peer certificate dump in events
1415 *
1416 * This controls whether peer certificates for authentication server and
1417 * its certificate chain are included in EAP peer certificate events.
1418 */
1419 int cert_in_cb;
1420
1421 /**
1422 * mesh_max_inactivity - Timeout in seconds to detect STA inactivity
1423 *
1424 * This timeout value is used in mesh STA to clean up inactive stations.
1425 * By default: 300 seconds.
1426 */
1427 int mesh_max_inactivity;
Dmitry Shmidt807291d2015-01-27 13:40:23 -08001428
1429 /**
Hai Shaloma20dcd72022-02-04 13:43:00 -08001430 * mesh_fwding - Mesh network layer-2 forwarding (dot11MeshForwarding)
1431 *
1432 * This controls whether to enable layer-2 forwarding.
1433 * By default: 1: enabled
1434 */
1435 int mesh_fwding;
1436
1437 /**
Dmitry Shmidtd80a4012015-11-05 16:35:40 -08001438 * dot11RSNASAERetransPeriod - Timeout to retransmit SAE Auth frame
1439 *
1440 * This timeout value is used in mesh STA to retransmit
1441 * SAE Authentication frame.
1442 * By default: 1000 milliseconds.
1443 */
1444 int dot11RSNASAERetransPeriod;
1445
1446 /**
Dmitry Shmidt807291d2015-01-27 13:40:23 -08001447 * passive_scan - Whether to force passive scan for network connection
1448 *
1449 * This parameter can be used to force only passive scanning to be used
1450 * for network connection cases. It should be noted that this will slow
1451 * down scan operations and reduce likelihood of finding the AP. In
1452 * addition, some use cases will override this due to functional
1453 * requirements, e.g., for finding an AP that uses hidden SSID
1454 * (scan_ssid=1) or P2P device discovery.
1455 */
1456 int passive_scan;
Dmitry Shmidt7f656022015-02-25 14:36:37 -08001457
1458 /**
1459 * reassoc_same_bss_optim - Whether to optimize reassoc-to-same-BSS
1460 */
1461 int reassoc_same_bss_optim;
Dmitry Shmidt7a53dbb2015-06-11 13:13:53 -07001462
1463 /**
1464 * wps_priority - Priority for the networks added through WPS
1465 *
1466 * This priority value will be set to each network profile that is added
1467 * by executing the WPS protocol.
1468 */
1469 int wps_priority;
Dmitry Shmidtd80a4012015-11-05 16:35:40 -08001470
1471 /**
1472 * fst_group_id - FST group ID
1473 */
1474 char *fst_group_id;
1475
1476 /**
1477 * fst_priority - priority of the interface within the FST group
1478 */
1479 int fst_priority;
1480
1481 /**
1482 * fst_llt - default FST LLT (Link-Lost Timeout) to be used for the
1483 * interface.
1484 */
1485 int fst_llt;
1486
1487 /**
1488 * wpa_rsc_relaxation - RSC relaxation on GTK installation
1489 *
1490 * Values:
1491 * 0 - use the EAPOL-Key RSC value on GTK installation
1492 * 1 - use the null RSC if a bogus RSC value is detected in message 3
1493 * of 4-Way Handshake or message 1 of Group Key Handshake.
1494 */
1495 int wpa_rsc_relaxation;
Dmitry Shmidtd7ff03d2015-12-04 14:49:35 -08001496
1497 /**
1498 * sched_scan_plans - Scan plans for scheduled scan
1499 *
1500 * Each scan plan specifies the interval between scans and the number of
1501 * iterations. The last scan plan only specifies the scan interval and
1502 * will be run infinitely.
1503 *
1504 * format: <interval:iterations> <interval2:iterations2> ... <interval>
1505 */
1506 char *sched_scan_plans;
Dmitry Shmidt57c2d392016-02-23 13:40:19 -08001507
1508#ifdef CONFIG_MBO
1509 /**
1510 * non_pref_chan - Non-preferred channels list, separated by spaces.
1511 *
1512 * format: op_class:chan:preference:reason<:detail>
1513 * Detail is optional.
1514 */
1515 char *non_pref_chan;
1516
1517 /**
1518 * mbo_cell_capa - Cellular capabilities for MBO
1519 */
1520 enum mbo_cellular_capa mbo_cell_capa;
Dmitry Shmidtd2986c22017-10-23 14:22:09 -07001521
1522 /**
1523 * disassoc_imminent_rssi_threshold - RSSI threshold of candidate AP
1524 * when disassociation imminent is set.
1525 */
1526 int disassoc_imminent_rssi_threshold;
1527
1528 /**
1529 * oce - Enable OCE in STA and/or STA-CFON mode
1530 * - Set BIT(0) to enable OCE in non-AP STA mode
1531 * - Set BIT(1) to enable OCE in STA-CFON mode
1532 */
1533 unsigned int oce;
Sunil Ravi84bb3e12021-06-10 09:52:05 -07001534#endif /* CONFIG_MBO */
Dennis Jeone2cb56b2020-10-23 21:23:01 +09001535 /**
1536 * btm_offload - Set where to perform roaming logic
1537 * - Set to 0 to handle fully roaming logic in supplicant
1538 * - Set to 1 to skip roaming logic in supplicant for firmware roaming
1539 * just parse BTM frame and notify framework
1540 */
Sunil Ravi84bb3e12021-06-10 09:52:05 -07001541 int btm_offload;
Dmitry Shmidtd5ab1b52016-06-21 12:38:41 -07001542
1543 /**
1544 * gas_address3 - GAS Address3 field behavior
1545 *
1546 * Values:
1547 * 0 - P2P specification (Address3 = AP BSSID)
1548 * 1 = IEEE 802.11 standard compliant (Address3 = Wildcard BSSID when
1549 * sent to not-associated AP; if associated, AP BSSID)
1550 */
1551 int gas_address3;
Dmitry Shmidt7d175302016-09-06 13:11:34 -07001552
1553 /**
1554 * ftm_responder - Publish FTM (fine timing measurement)
1555 * responder functionality
1556 *
1557 * Values:
1558 * 0 - do not publish FTM responder functionality (Default)
1559 * 1 - publish FTM responder functionality in
1560 * bit 70 of Extended Capabilities element
1561 * Note, actual FTM responder operation is managed outside
1562 * wpa_supplicant.
1563 */
1564 int ftm_responder;
1565
1566 /**
1567 * ftm_initiator - Publish FTM (fine timing measurement)
1568 * initiator functionality
1569 *
1570 * Values:
1571 * 0 - do not publish FTM initiator functionality (Default)
1572 * 1 - publish FTM initiator functionality in
1573 * bit 71 of Extended Capabilities element
1574 * Note, actual FTM initiator operation is managed outside
1575 * wpa_supplicant.
1576 */
1577 int ftm_initiator;
Dmitry Shmidtebd93af2017-02-21 13:40:44 -08001578
1579 /**
1580 * gas_rand_addr_lifetime - Lifetime of random MAC address for ANQP in
1581 * seconds
1582 */
1583 unsigned int gas_rand_addr_lifetime;
1584
1585 /**
1586 * gas_rand_mac_addr - GAS MAC address policy
1587 *
1588 * 0 = use permanent MAC address
1589 * 1 = use random MAC address
1590 * 2 = like 1, but maintain OUI (with local admin bit set)
1591 */
1592 int gas_rand_mac_addr;
Dmitry Shmidtd2986c22017-10-23 14:22:09 -07001593
1594 /**
1595 * dpp_config_processing - How to process DPP configuration
1596 *
1597 * 0 = report received configuration to an external program for
1598 * processing; do not generate any network profile internally
1599 * 1 = report received configuration to an external program and generate
1600 * a network profile internally, but do not automatically connect
1601 * to the created (disabled) profile; the network profile id is
1602 * reported to external programs
1603 * 2 = report received configuration to an external program, generate
1604 * a network profile internally, try to connect to the created
1605 * profile automatically
1606 */
1607 int dpp_config_processing;
Jimmy Chenf887c7b2018-11-13 15:19:57 +08001608
1609 /**
Hai Shalomc3565922019-10-28 11:58:20 -07001610 * dpp_name - Name for Enrollee's DPP Configuration Request
1611 */
1612 char *dpp_name;
1613
1614 /**
1615 * dpp_mud_url - MUD URL for Enrollee's DPP Configuration Request
1616 */
1617 char *dpp_mud_url;
1618
1619 /**
Hai Shalom39ba6fc2019-01-22 12:40:38 -08001620 * coloc_intf_reporting - Colocated interference reporting
1621 *
1622 * dot11CoLocIntfReportingActivated
1623 * 0 = disabled (false)
1624 * 1 = enabled (true)
1625 */
1626 int coloc_intf_reporting;
1627
1628 /**
Jimmy Chenf887c7b2018-11-13 15:19:57 +08001629 * p2p_device_random_mac_addr - P2P Device MAC address policy default
1630 *
Hai Shalom60840252021-02-19 19:02:11 -08001631 * 0 = use permanent MAC address (the one set by default by the device
1632 * driver). Notice that, if the device driver is configured to
1633 * always use random MAC addresses, this flag breaks reinvoking a
1634 * persistent group, so flags 1 or 2 should be used instead with
1635 * such drivers if persistent groups are used.
Hai Shalom74f70d42019-02-11 14:42:39 -08001636 * 1 = use random MAC address on creating the interface if there is no
Hai Shalom60840252021-02-19 19:02:11 -08001637 * persistent group. Besides, if a persistent group is created,
1638 * p2p_device_persistent_mac_addr is set to the MAC address of the
1639 * P2P Device interface, so that this address will be subsequently
1640 * used to change the MAC address of the P2P Device interface. With
1641 * no persistent group, the random MAC address is created by
1642 * wpa_supplicant, changing the one set by the device driver.
1643 * The device driver shall support SIOCGIFFLAGS/SIOCSIFFLAGS ioctl
1644 * interface control operations.
1645 * 2 = this flag should be used when the device driver uses random MAC
1646 * addresses by default when a P2P Device interface is created.
1647 * If p2p_device_persistent_mac_addr is set, use this MAC address
1648 * on creating the P2P Device interface. If not set, use the
1649 * default method adopted by the device driver (e.g., random MAC
1650 * address). Besides, if a persistent group is created,
1651 * p2p_device_persistent_mac_addr is set to the MAC address of the
1652 * P2P Device interface, so that this address will be subsequently
1653 * used in place of the default address set by the device driver.
1654 * (This option does not need support of SIOCGIFFLAGS/SIOCSIFFLAGS
1655 * ioctl interface control operations and uses NL80211_ATTR_MAC).
Jimmy Chenf887c7b2018-11-13 15:19:57 +08001656 *
1657 * By default, permanent MAC address is used.
1658 */
1659 int p2p_device_random_mac_addr;
1660
1661 /**
1662 * p2p_device_persistent_mac_addr - Record last used MAC address
1663 *
Hai Shalom74f70d42019-02-11 14:42:39 -08001664 * If there are saved persistent groups, P2P cannot generate another
1665 * random MAC address, and need to restore to last used MAC address.
Jimmy Chenf887c7b2018-11-13 15:19:57 +08001666 */
Hai Shalom39ba6fc2019-01-22 12:40:38 -08001667 u8 p2p_device_persistent_mac_addr[ETH_ALEN];
Jimmy Chenf887c7b2018-11-13 15:19:57 +08001668
Jimmy Chen36c21992018-11-29 16:46:43 +08001669 /**
1670 * p2p_interface_random_mac_addr - P2P Interface MAC address policy default
1671 *
1672 * 0 = use permanent MAC address
1673 * 1 = use random MAC address on creating the interface.
1674 *
1675 * By default, permanent MAC address is used.
1676 */
1677 int p2p_interface_random_mac_addr;
1678
xshud0ee72f2018-11-08 14:37:01 -08001679 /**
1680 * bss_no_flush_when_down - Whether to flush BSS entries when the interface is disabled
1681 *
1682 * 0 = Flush BSS entries when the interface becomes disabled (Default)
1683 * 1 = Do not flush BSS entries when the interface becomes disabled
1684 */
1685 int bss_no_flush_when_down;
Hai Shalom81f62d82019-07-22 12:10:00 -07001686
1687 /**
1688 * disable_btm - Disable BSS transition management in STA
1689 * - Set to 0 to enable BSS transition management
1690 * - Set to 1 to disable BSS transition management
1691 *
1692 * By default BSS transition management is enabled
1693 */
1694 int disable_btm;
Hai Shalomfdcde762020-04-02 11:19:20 -07001695
1696 /**
1697 * extended_key_id - Extended Key ID support
1698 *
1699 * IEEE Std 802.11-2016 optionally allows to use Key ID 0 and 1 for PTK
1700 * keys with Extended Key ID.
1701 *
1702 * 0 = don't use Extended Key ID
1703 * 1 = use Extended Key ID when possible
1704 */
1705 int extended_key_id;
Hai Shalom60840252021-02-19 19:02:11 -08001706
1707 /**
1708 * wowlan_disconnect_on_deinit - Trigger disconnect on wpa_supplicant
1709 * interface deinit even if the driver has enabled WoWLAN.
1710 *
1711 * 0 = Do not disconnect
1712 * 1 = Trigger disconnection
1713 */
1714 int wowlan_disconnect_on_deinit;
1715
1716#ifdef CONFIG_PASN
1717#ifdef CONFIG_TESTING_OPTIONS
1718 /*
1719 * Normally, KDK should be derived if and only if both sides support
1720 * secure LTF. Allow forcing KDK derivation for testing purposes.
1721 */
1722 int force_kdk_derivation;
Hai Shaloma20dcd72022-02-04 13:43:00 -08001723
1724 /* If set, corrupt the MIC in the 3rd Authentication frame of PASN */
1725 int pasn_corrupt_mic;
1726
Hai Shalom60840252021-02-19 19:02:11 -08001727#endif /* CONFIG_TESTING_OPTIONS */
1728#endif /* CONFIG_PASN*/
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001729};
1730
1731
1732/* Prototypes for common functions from config.c */
1733
1734void wpa_config_free(struct wpa_config *ssid);
1735void wpa_config_free_ssid(struct wpa_ssid *ssid);
1736void wpa_config_foreach_network(struct wpa_config *config,
1737 void (*func)(void *, struct wpa_ssid *),
1738 void *arg);
1739struct wpa_ssid * wpa_config_get_network(struct wpa_config *config, int id);
1740struct wpa_ssid * wpa_config_add_network(struct wpa_config *config);
1741int wpa_config_remove_network(struct wpa_config *config, int id);
1742void wpa_config_set_network_defaults(struct wpa_ssid *ssid);
1743int wpa_config_set(struct wpa_ssid *ssid, const char *var, const char *value,
1744 int line);
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -08001745int wpa_config_set_quoted(struct wpa_ssid *ssid, const char *var,
1746 const char *value);
Dmitry Shmidt7f656022015-02-25 14:36:37 -08001747int wpa_config_dump_values(struct wpa_config *config, char *buf,
1748 size_t buflen);
1749int wpa_config_get_value(const char *name, struct wpa_config *config,
1750 char *buf, size_t buflen);
1751
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001752char ** wpa_config_get_all(struct wpa_ssid *ssid, int get_keys);
1753char * wpa_config_get(struct wpa_ssid *ssid, const char *var);
1754char * wpa_config_get_no_key(struct wpa_ssid *ssid, const char *var);
1755void wpa_config_update_psk(struct wpa_ssid *ssid);
1756int wpa_config_add_prio_network(struct wpa_config *config,
1757 struct wpa_ssid *ssid);
1758int wpa_config_update_prio_list(struct wpa_config *config);
1759const struct wpa_config_blob * wpa_config_get_blob(struct wpa_config *config,
1760 const char *name);
1761void wpa_config_set_blob(struct wpa_config *config,
1762 struct wpa_config_blob *blob);
1763void wpa_config_free_blob(struct wpa_config_blob *blob);
1764int wpa_config_remove_blob(struct wpa_config *config, const char *name);
Dmitry Shmidt344abd32014-01-14 13:17:00 -08001765void wpa_config_flush_blobs(struct wpa_config *config);
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001766
Dmitry Shmidt04949592012-07-19 12:16:46 -07001767struct wpa_cred * wpa_config_get_cred(struct wpa_config *config, int id);
1768struct wpa_cred * wpa_config_add_cred(struct wpa_config *config);
1769int wpa_config_remove_cred(struct wpa_config *config, int id);
1770void wpa_config_free_cred(struct wpa_cred *cred);
1771int wpa_config_set_cred(struct wpa_cred *cred, const char *var,
1772 const char *value, int line);
Dmitry Shmidt0cfd5f72014-04-04 14:48:05 -07001773char * wpa_config_get_cred_no_key(struct wpa_cred *cred, const char *var);
Dmitry Shmidt04949592012-07-19 12:16:46 -07001774
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001775struct wpa_config * wpa_config_alloc_empty(const char *ctrl_interface,
1776 const char *driver_param);
1777#ifndef CONFIG_NO_STDOUT_DEBUG
1778void wpa_config_debug_dump_networks(struct wpa_config *config);
1779#else /* CONFIG_NO_STDOUT_DEBUG */
1780#define wpa_config_debug_dump_networks(c) do { } while (0)
1781#endif /* CONFIG_NO_STDOUT_DEBUG */
1782
1783
1784/* Prototypes for common functions from config.c */
1785int wpa_config_process_global(struct wpa_config *config, char *pos, int line);
1786
Dmitry Shmidtd80a4012015-11-05 16:35:40 -08001787int wpa_config_get_num_global_field_names(void);
1788
1789const char * wpa_config_get_global_field_name(unsigned int i, int *no_var);
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001790
1791/* Prototypes for backend specific functions from the selected config_*.c */
1792
1793/**
1794 * wpa_config_read - Read and parse configuration database
1795 * @name: Name of the configuration (e.g., path and file name for the
1796 * configuration file)
Jouni Malinen5d1c8ad2013-04-23 12:34:56 -07001797 * @cfgp: Pointer to previously allocated configuration data or %NULL if none
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001798 * Returns: Pointer to allocated configuration data or %NULL on failure
1799 *
1800 * This function reads configuration data, parses its contents, and allocates
1801 * data structures needed for storing configuration information. The allocated
1802 * data can be freed with wpa_config_free().
1803 *
1804 * Each configuration backend needs to implement this function.
1805 */
Dmitry Shmidt64f47c52013-04-16 10:41:54 -07001806struct wpa_config * wpa_config_read(const char *name, struct wpa_config *cfgp);
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001807
1808/**
1809 * wpa_config_write - Write or update configuration data
1810 * @name: Name of the configuration (e.g., path and file name for the
1811 * configuration file)
1812 * @config: Configuration data from wpa_config_read()
1813 * Returns: 0 on success, -1 on failure
1814 *
1815 * This function write all configuration data into an external database (e.g.,
1816 * a text file) in a format that can be read with wpa_config_read(). This can
1817 * be used to allow wpa_supplicant to update its configuration, e.g., when a
1818 * new network is added or a password is changed.
1819 *
1820 * Each configuration backend needs to implement this function.
1821 */
1822int wpa_config_write(const char *name, struct wpa_config *config);
1823
1824#endif /* CONFIG_H */