]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/wpa/wpa_supplicant/config_ssid.h
Merge llvm release_80 branch r351543, and resolve conflicts.
[FreeBSD/FreeBSD.git] / contrib / wpa / wpa_supplicant / config_ssid.h
1 /*
2  * WPA Supplicant / Network configuration structures
3  * Copyright (c) 2003-2013, Jouni Malinen <j@w1.fi>
4  *
5  * This software may be distributed under the terms of the BSD license.
6  * See README for more details.
7  */
8
9 #ifndef CONFIG_SSID_H
10 #define CONFIG_SSID_H
11
12 #include "common/defs.h"
13 #include "utils/list.h"
14 #include "eap_peer/eap_config.h"
15
16
17 #define DEFAULT_EAP_WORKAROUND ((unsigned int) -1)
18 #define DEFAULT_EAPOL_FLAGS (EAPOL_FLAG_REQUIRE_KEY_UNICAST | \
19                              EAPOL_FLAG_REQUIRE_KEY_BROADCAST)
20 #define DEFAULT_PROTO (WPA_PROTO_WPA | WPA_PROTO_RSN)
21 #define DEFAULT_KEY_MGMT (WPA_KEY_MGMT_PSK | WPA_KEY_MGMT_IEEE8021X)
22 #define DEFAULT_PAIRWISE (WPA_CIPHER_CCMP | WPA_CIPHER_TKIP)
23 #define DEFAULT_GROUP (WPA_CIPHER_CCMP | WPA_CIPHER_TKIP)
24 #define DEFAULT_FRAGMENT_SIZE 1398
25
26 #define DEFAULT_BG_SCAN_PERIOD -1
27 #define DEFAULT_MESH_MAX_RETRIES 2
28 #define DEFAULT_MESH_RETRY_TIMEOUT 40
29 #define DEFAULT_MESH_CONFIRM_TIMEOUT 40
30 #define DEFAULT_MESH_HOLDING_TIMEOUT 40
31 #define DEFAULT_MESH_RSSI_THRESHOLD 1 /* no change */
32 #define DEFAULT_DISABLE_HT 0
33 #define DEFAULT_DISABLE_HT40 0
34 #define DEFAULT_DISABLE_SGI 0
35 #define DEFAULT_DISABLE_LDPC 0
36 #define DEFAULT_DISABLE_MAX_AMSDU -1 /* no change */
37 #define DEFAULT_AMPDU_FACTOR -1 /* no change */
38 #define DEFAULT_AMPDU_DENSITY -1 /* no change */
39 #define DEFAULT_USER_SELECTED_SIM 1
40
41 struct psk_list_entry {
42         struct dl_list list;
43         u8 addr[ETH_ALEN];
44         u8 psk[32];
45         u8 p2p;
46 };
47
48 /**
49  * struct wpa_ssid - Network configuration data
50  *
51  * This structure includes all the configuration variables for a network. This
52  * data is included in the per-interface configuration data as an element of
53  * the network list, struct wpa_config::ssid. Each network block in the
54  * configuration is mapped to a struct wpa_ssid instance.
55  */
56 struct wpa_ssid {
57         /**
58          * next - Next network in global list
59          *
60          * This pointer can be used to iterate over all networks. The head of
61          * this list is stored in the ssid field of struct wpa_config.
62          */
63         struct wpa_ssid *next;
64
65         /**
66          * pnext - Next network in per-priority list
67          *
68          * This pointer can be used to iterate over all networks in the same
69          * priority class. The heads of these list are stored in the pssid
70          * fields of struct wpa_config.
71          */
72         struct wpa_ssid *pnext;
73
74         /**
75          * id - Unique id for the network
76          *
77          * This identifier is used as a unique identifier for each network
78          * block when using the control interface. Each network is allocated an
79          * id when it is being created, either when reading the configuration
80          * file or when a new network is added through the control interface.
81          */
82         int id;
83
84         /**
85          * priority - Priority group
86          *
87          * By default, all networks will get same priority group (0). If some
88          * of the networks are more desirable, this field can be used to change
89          * the order in which wpa_supplicant goes through the networks when
90          * selecting a BSS. The priority groups will be iterated in decreasing
91          * priority (i.e., the larger the priority value, the sooner the
92          * network is matched against the scan results). Within each priority
93          * group, networks will be selected based on security policy, signal
94          * strength, etc.
95          *
96          * Please note that AP scanning with scan_ssid=1 and ap_scan=2 mode are
97          * not using this priority to select the order for scanning. Instead,
98          * they try the networks in the order that used in the configuration
99          * file.
100          */
101         int priority;
102
103         /**
104          * ssid - Service set identifier (network name)
105          *
106          * This is the SSID for the network. For wireless interfaces, this is
107          * used to select which network will be used. If set to %NULL (or
108          * ssid_len=0), any SSID can be used. For wired interfaces, this must
109          * be set to %NULL. Note: SSID may contain any characters, even nul
110          * (ASCII 0) and as such, this should not be assumed to be a nul
111          * terminated string. ssid_len defines how many characters are valid
112          * and the ssid field is not guaranteed to be nul terminated.
113          */
114         u8 *ssid;
115
116         /**
117          * ssid_len - Length of the SSID
118          */
119         size_t ssid_len;
120
121         /**
122          * bssid - BSSID
123          *
124          * If set, this network block is used only when associating with the AP
125          * using the configured BSSID
126          *
127          * If this is a persistent P2P group (disabled == 2), this is the GO
128          * Device Address.
129          */
130         u8 bssid[ETH_ALEN];
131
132         /**
133          * bssid_blacklist - List of inacceptable BSSIDs
134          */
135         u8 *bssid_blacklist;
136         size_t num_bssid_blacklist;
137
138         /**
139          * bssid_blacklist - List of acceptable BSSIDs
140          */
141         u8 *bssid_whitelist;
142         size_t num_bssid_whitelist;
143
144         /**
145          * bssid_set - Whether BSSID is configured for this network
146          */
147         int bssid_set;
148
149         /**
150          * bssid_hint - BSSID hint
151          *
152          * If set, this is configured to the driver as a preferred initial BSSID
153          * while connecting to this network.
154          */
155         u8 bssid_hint[ETH_ALEN];
156
157         /**
158          * bssid_hint_set - Whether BSSID hint is configured for this network
159          */
160         int bssid_hint_set;
161
162         /**
163          * go_p2p_dev_addr - GO's P2P Device Address or all zeros if not set
164          */
165         u8 go_p2p_dev_addr[ETH_ALEN];
166
167         /**
168          * psk - WPA pre-shared key (256 bits)
169          */
170         u8 psk[32];
171
172         /**
173          * psk_set - Whether PSK field is configured
174          */
175         int psk_set;
176
177         /**
178          * passphrase - WPA ASCII passphrase
179          *
180          * If this is set, psk will be generated using the SSID and passphrase
181          * configured for the network. ASCII passphrase must be between 8 and
182          * 63 characters (inclusive).
183          */
184         char *passphrase;
185
186         /**
187          * sae_password - SAE password
188          *
189          * This parameter can be used to set a password for SAE. By default, the
190          * passphrase value is used if this separate parameter is not used, but
191          * passphrase follows the WPA-PSK constraints (8..63 characters) even
192          * though SAE passwords do not have such constraints.
193          */
194         char *sae_password;
195
196         /**
197          * sae_password_id - SAE password identifier
198          *
199          * This parameter can be used to identify a specific SAE password. If
200          * not included, the default SAE password is used instead.
201          */
202         char *sae_password_id;
203
204         /**
205          * ext_psk - PSK/passphrase name in external storage
206          *
207          * If this is set, PSK/passphrase will be fetched from external storage
208          * when requesting association with the network.
209          */
210         char *ext_psk;
211
212         /**
213          * mem_only_psk - Whether to keep PSK/passphrase only in memory
214          *
215          * 0 = allow psk/passphrase to be stored to the configuration file
216          * 1 = do not store psk/passphrase to the configuration file
217          */
218         int mem_only_psk;
219
220         /**
221          * pairwise_cipher - Bitfield of allowed pairwise ciphers, WPA_CIPHER_*
222          */
223         int pairwise_cipher;
224
225         /**
226          * group_cipher - Bitfield of allowed group ciphers, WPA_CIPHER_*
227          */
228         int group_cipher;
229
230         /**
231          * group_mgmt_cipher - Bitfield of allowed group management ciphers
232          *
233          * This is a bitfield of WPA_CIPHER_AES_128_CMAC and WPA_CIPHER_BIP_*
234          * values. If 0, no constraint is used for the cipher, i.e., whatever
235          * the AP uses is accepted.
236          */
237         int group_mgmt_cipher;
238
239         /**
240          * key_mgmt - Bitfield of allowed key management protocols
241          *
242          * WPA_KEY_MGMT_*
243          */
244         int key_mgmt;
245
246         /**
247          * bg_scan_period - Background scan period in seconds, 0 to disable, or
248          * -1 to indicate no change to default driver configuration
249          */
250         int bg_scan_period;
251
252         /**
253          * proto - Bitfield of allowed protocols, WPA_PROTO_*
254          */
255         int proto;
256
257         /**
258          * auth_alg -  Bitfield of allowed authentication algorithms
259          *
260          * WPA_AUTH_ALG_*
261          */
262         int auth_alg;
263
264         /**
265          * scan_ssid - Scan this SSID with Probe Requests
266          *
267          * scan_ssid can be used to scan for APs using hidden SSIDs.
268          * Note: Many drivers do not support this. ap_mode=2 can be used with
269          * such drivers to use hidden SSIDs. Note2: Most nl80211-based drivers
270          * do support scan_ssid=1 and that should be used with them instead of
271          * ap_scan=2.
272          */
273         int scan_ssid;
274
275 #ifdef IEEE8021X_EAPOL
276 #define EAPOL_FLAG_REQUIRE_KEY_UNICAST BIT(0)
277 #define EAPOL_FLAG_REQUIRE_KEY_BROADCAST BIT(1)
278         /**
279          * eapol_flags - Bit field of IEEE 802.1X/EAPOL options (EAPOL_FLAG_*)
280          */
281         int eapol_flags;
282
283         /**
284          * eap - EAP peer configuration for this network
285          */
286         struct eap_peer_config eap;
287 #endif /* IEEE8021X_EAPOL */
288
289 #define NUM_WEP_KEYS 4
290 #define MAX_WEP_KEY_LEN 16
291         /**
292          * wep_key - WEP keys
293          */
294         u8 wep_key[NUM_WEP_KEYS][MAX_WEP_KEY_LEN];
295
296         /**
297          * wep_key_len - WEP key lengths
298          */
299         size_t wep_key_len[NUM_WEP_KEYS];
300
301         /**
302          * wep_tx_keyidx - Default key index for TX frames using WEP
303          */
304         int wep_tx_keyidx;
305
306         /**
307          * proactive_key_caching - Enable proactive key caching
308          *
309          * This field can be used to enable proactive key caching which is also
310          * known as opportunistic PMKSA caching for WPA2. This is disabled (0)
311          * by default unless default value is changed with the global okc=1
312          * parameter. Enable by setting this to 1.
313          *
314          * Proactive key caching is used to make supplicant assume that the APs
315          * are using the same PMK and generate PMKSA cache entries without
316          * doing RSN pre-authentication. This requires support from the AP side
317          * and is normally used with wireless switches that co-locate the
318          * authenticator.
319          *
320          * Internally, special value -1 is used to indicate that the parameter
321          * was not specified in the configuration (i.e., default behavior is
322          * followed).
323          */
324         int proactive_key_caching;
325
326         /**
327          * mixed_cell - Whether mixed cells are allowed
328          *
329          * This option can be used to configure whether so called mixed cells,
330          * i.e., networks that use both plaintext and encryption in the same
331          * SSID, are allowed. This is disabled (0) by default. Enable by
332          * setting this to 1.
333          */
334         int mixed_cell;
335
336 #ifdef IEEE8021X_EAPOL
337
338         /**
339          * leap - Number of EAP methods using LEAP
340          *
341          * This field should be set to 1 if LEAP is enabled. This is used to
342          * select IEEE 802.11 authentication algorithm.
343          */
344         int leap;
345
346         /**
347          * non_leap - Number of EAP methods not using LEAP
348          *
349          * This field should be set to >0 if any EAP method other than LEAP is
350          * enabled. This is used to select IEEE 802.11 authentication
351          * algorithm.
352          */
353         int non_leap;
354
355         /**
356          * eap_workaround - EAP workarounds enabled
357          *
358          * wpa_supplicant supports number of "EAP workarounds" to work around
359          * interoperability issues with incorrectly behaving authentication
360          * servers. This is recommended to be enabled by default because some
361          * of the issues are present in large number of authentication servers.
362          *
363          * Strict EAP conformance mode can be configured by disabling
364          * workarounds with eap_workaround = 0.
365          */
366         unsigned int eap_workaround;
367
368 #endif /* IEEE8021X_EAPOL */
369
370         /**
371          * mode - IEEE 802.11 operation mode (Infrastucture/IBSS)
372          *
373          * 0 = infrastructure (Managed) mode, i.e., associate with an AP.
374          *
375          * 1 = IBSS (ad-hoc, peer-to-peer)
376          *
377          * 2 = AP (access point)
378          *
379          * 3 = P2P Group Owner (can be set in the configuration file)
380          *
381          * 4 = P2P Group Formation (used internally; not in configuration
382          * files)
383          *
384          * 5 = Mesh
385          *
386          * Note: IBSS can only be used with key_mgmt NONE (plaintext and static
387          * WEP) and WPA-PSK (with proto=RSN). In addition, key_mgmt=WPA-NONE
388          * (fixed group key TKIP/CCMP) is available for backwards compatibility,
389          * but its use is deprecated. WPA-None requires following network block
390          * options: proto=WPA, key_mgmt=WPA-NONE, pairwise=NONE, group=TKIP (or
391          * CCMP, but not both), and psk must also be set (either directly or
392          * using ASCII passphrase).
393          */
394         enum wpas_mode {
395                 WPAS_MODE_INFRA = 0,
396                 WPAS_MODE_IBSS = 1,
397                 WPAS_MODE_AP = 2,
398                 WPAS_MODE_P2P_GO = 3,
399                 WPAS_MODE_P2P_GROUP_FORMATION = 4,
400                 WPAS_MODE_MESH = 5,
401         } mode;
402
403         /**
404          * pbss - Whether to use PBSS. Relevant to DMG networks only.
405          * 0 = do not use PBSS
406          * 1 = use PBSS
407          * 2 = don't care (not allowed in AP mode)
408          * Used together with mode configuration. When mode is AP, it
409          * means to start a PCP instead of a regular AP. When mode is INFRA it
410          * means connect to a PCP instead of AP. In this mode you can also
411          * specify 2 (don't care) meaning connect to either AP or PCP.
412          * P2P_GO and P2P_GROUP_FORMATION modes must use PBSS in DMG network.
413          */
414         int pbss;
415
416         /**
417          * disabled - Whether this network is currently disabled
418          *
419          * 0 = this network can be used (default).
420          * 1 = this network block is disabled (can be enabled through
421          * ctrl_iface, e.g., with wpa_cli or wpa_gui).
422          * 2 = this network block includes parameters for a persistent P2P
423          * group (can be used with P2P ctrl_iface commands)
424          */
425         int disabled;
426
427         /**
428          * disabled_for_connect - Whether this network was temporarily disabled
429          *
430          * This flag is used to reenable all the temporarily disabled networks
431          * after either the success or failure of a WPS connection.
432          */
433         int disabled_for_connect;
434
435         /**
436          * id_str - Network identifier string for external scripts
437          *
438          * This value is passed to external ctrl_iface monitors in
439          * WPA_EVENT_CONNECTED event and wpa_cli sets this as WPA_ID_STR
440          * environment variable for action scripts.
441          */
442         char *id_str;
443
444 #ifdef CONFIG_IEEE80211W
445         /**
446          * ieee80211w - Whether management frame protection is enabled
447          *
448          * This value is used to configure policy for management frame
449          * protection (IEEE 802.11w). 0 = disabled, 1 = optional, 2 = required.
450          * This is disabled by default unless the default value has been changed
451          * with the global pmf=1/2 parameter.
452          *
453          * Internally, special value 3 is used to indicate that the parameter
454          * was not specified in the configuration (i.e., default behavior is
455          * followed).
456          */
457         enum mfp_options ieee80211w;
458 #endif /* CONFIG_IEEE80211W */
459
460         /**
461          * frequency - Channel frequency in megahertz (MHz) for IBSS
462          *
463          * This value is used to configure the initial channel for IBSS (adhoc)
464          * networks, e.g., 2412 = IEEE 802.11b/g channel 1. It is ignored in
465          * the infrastructure mode. In addition, this value is only used by the
466          * station that creates the IBSS. If an IBSS network with the
467          * configured SSID is already present, the frequency of the network
468          * will be used instead of this configured value.
469          */
470         int frequency;
471
472         /**
473          * fixed_freq - Use fixed frequency for IBSS
474          */
475         int fixed_freq;
476
477 #ifdef CONFIG_ACS
478         /**
479          * ACS - Automatic Channel Selection for AP mode
480          *
481          * If present, it will be handled together with frequency.
482          * frequency will be used to determine hardware mode only, when it is
483          * used for both hardware mode and channel when used alone. This will
484          * force the channel to be set to 0, thus enabling ACS.
485          */
486         int acs;
487 #endif /* CONFIG_ACS */
488
489         /**
490          * mesh_basic_rates - BSS Basic rate set for mesh network
491          *
492          */
493         int *mesh_basic_rates;
494
495         /**
496          * Mesh network plink parameters
497          */
498         int dot11MeshMaxRetries;
499         int dot11MeshRetryTimeout; /* msec */
500         int dot11MeshConfirmTimeout; /* msec */
501         int dot11MeshHoldingTimeout; /* msec */
502
503         int ht;
504         int ht40;
505
506         int vht;
507
508         int max_oper_chwidth;
509
510         unsigned int vht_center_freq1;
511         unsigned int vht_center_freq2;
512
513         /**
514          * wpa_ptk_rekey - Maximum lifetime for PTK in seconds
515          *
516          * This value can be used to enforce rekeying of PTK to mitigate some
517          * attacks against TKIP deficiencies.
518          */
519         int wpa_ptk_rekey;
520
521         /**
522          * group_rekey - Group rekeying time in seconds
523          *
524          * This value, if non-zero, is used as the dot11RSNAConfigGroupRekeyTime
525          * parameter when operating in Authenticator role in IBSS.
526          */
527         int group_rekey;
528
529         /**
530          * scan_freq - Array of frequencies to scan or %NULL for all
531          *
532          * This is an optional zero-terminated array of frequencies in
533          * megahertz (MHz) to include in scan requests when searching for this
534          * network. This can be used to speed up scanning when the network is
535          * known to not use all possible channels.
536          */
537         int *scan_freq;
538
539         /**
540          * bgscan - Background scan and roaming parameters or %NULL if none
541          *
542          * This is an optional set of parameters for background scanning and
543          * roaming within a network (ESS) in following format:
544          * <bgscan module name>:<module parameters>
545          */
546         char *bgscan;
547
548         /**
549          * ignore_broadcast_ssid - Hide SSID in AP mode
550          *
551          * Send empty SSID in beacons and ignore probe request frames that do
552          * not specify full SSID, i.e., require stations to know SSID.
553          * default: disabled (0)
554          * 1 = send empty (length=0) SSID in beacon and ignore probe request
555          * for broadcast SSID
556          * 2 = clear SSID (ASCII 0), but keep the original length (this may be
557          * required with some clients that do not support empty SSID) and
558          * ignore probe requests for broadcast SSID
559          */
560         int ignore_broadcast_ssid;
561
562         /**
563          * freq_list - Array of allowed frequencies or %NULL for all
564          *
565          * This is an optional zero-terminated array of frequencies in
566          * megahertz (MHz) to allow for selecting the BSS. If set, scan results
567          * that do not match any of the specified frequencies are not
568          * considered when selecting a BSS.
569          */
570         int *freq_list;
571
572         /**
573          * p2p_client_list - List of P2P Clients in a persistent group (GO)
574          *
575          * This is a list of P2P Clients (P2P Device Address) that have joined
576          * the persistent group. This is maintained on the GO for persistent
577          * group entries (disabled == 2).
578          */
579         u8 *p2p_client_list;
580
581         /**
582          * num_p2p_clients - Number of entries in p2p_client_list
583          */
584         size_t num_p2p_clients;
585
586 #ifndef P2P_MAX_STORED_CLIENTS
587 #define P2P_MAX_STORED_CLIENTS 100
588 #endif /* P2P_MAX_STORED_CLIENTS */
589
590         /**
591          * psk_list - Per-client PSKs (struct psk_list_entry)
592          */
593         struct dl_list psk_list;
594
595         /**
596          * p2p_group - Network generated as a P2P group (used internally)
597          */
598         int p2p_group;
599
600         /**
601          * p2p_persistent_group - Whether this is a persistent group
602          */
603         int p2p_persistent_group;
604
605         /**
606          * temporary - Whether this network is temporary and not to be saved
607          */
608         int temporary;
609
610         /**
611          * export_keys - Whether keys may be exported
612          *
613          * This attribute will be set when keys are determined through
614          * WPS or similar so that they may be exported.
615          */
616         int export_keys;
617
618 #ifdef CONFIG_HT_OVERRIDES
619         /**
620          * disable_ht - Disable HT (IEEE 802.11n) for this network
621          *
622          * By default, use it if it is available, but this can be configured
623          * to 1 to have it disabled.
624          */
625         int disable_ht;
626
627         /**
628          * disable_ht40 - Disable HT40 for this network
629          *
630          * By default, use it if it is available, but this can be configured
631          * to 1 to have it disabled.
632          */
633         int disable_ht40;
634
635         /**
636          * disable_sgi - Disable SGI (Short Guard Interval) for this network
637          *
638          * By default, use it if it is available, but this can be configured
639          * to 1 to have it disabled.
640          */
641         int disable_sgi;
642
643         /**
644          * disable_ldpc - Disable LDPC for this network
645          *
646          * By default, use it if it is available, but this can be configured
647          * to 1 to have it disabled.
648          */
649         int disable_ldpc;
650
651         /**
652          * ht40_intolerant - Indicate 40 MHz intolerant for this network
653          */
654         int ht40_intolerant;
655
656         /**
657          * disable_max_amsdu - Disable MAX A-MSDU
658          *
659          * A-MDSU will be 3839 bytes when disabled, or 7935
660          * when enabled (assuming it is otherwise supported)
661          * -1 (default) means do not apply any settings to the kernel.
662          */
663         int disable_max_amsdu;
664
665         /**
666          * ampdu_factor - Maximum A-MPDU Length Exponent
667          *
668          * Value: 0-3, see 7.3.2.56.3 in IEEE Std 802.11n-2009.
669          */
670         int ampdu_factor;
671
672         /**
673          * ampdu_density - Minimum A-MPDU Start Spacing
674          *
675          * Value: 0-7, see 7.3.2.56.3 in IEEE Std 802.11n-2009.
676          */
677         int ampdu_density;
678
679         /**
680          * ht_mcs - Allowed HT-MCS rates, in ASCII hex: ffff0000...
681          *
682          * By default (empty string): Use whatever the OS has configured.
683          */
684         char *ht_mcs;
685 #endif /* CONFIG_HT_OVERRIDES */
686
687 #ifdef CONFIG_VHT_OVERRIDES
688         /**
689          * disable_vht - Disable VHT (IEEE 802.11ac) for this network
690          *
691          * By default, use it if it is available, but this can be configured
692          * to 1 to have it disabled.
693          */
694         int disable_vht;
695
696         /**
697          * vht_capa - VHT capabilities to use
698          */
699         unsigned int vht_capa;
700
701         /**
702          * vht_capa_mask - mask for VHT capabilities
703          */
704         unsigned int vht_capa_mask;
705
706         int vht_rx_mcs_nss_1, vht_rx_mcs_nss_2,
707             vht_rx_mcs_nss_3, vht_rx_mcs_nss_4,
708             vht_rx_mcs_nss_5, vht_rx_mcs_nss_6,
709             vht_rx_mcs_nss_7, vht_rx_mcs_nss_8;
710         int vht_tx_mcs_nss_1, vht_tx_mcs_nss_2,
711             vht_tx_mcs_nss_3, vht_tx_mcs_nss_4,
712             vht_tx_mcs_nss_5, vht_tx_mcs_nss_6,
713             vht_tx_mcs_nss_7, vht_tx_mcs_nss_8;
714 #endif /* CONFIG_VHT_OVERRIDES */
715
716         /**
717          * ap_max_inactivity - Timeout in seconds to detect STA's inactivity
718          *
719          * This timeout value is used in AP mode to clean up inactive stations.
720          * By default: 300 seconds.
721          */
722         int ap_max_inactivity;
723
724         /**
725          * dtim_period - DTIM period in Beacon intervals
726          * By default: 2
727          */
728         int dtim_period;
729
730         /**
731          * beacon_int - Beacon interval (default: 100 TU)
732          */
733         int beacon_int;
734
735         /**
736          * auth_failures - Number of consecutive authentication failures
737          */
738         unsigned int auth_failures;
739
740         /**
741          * disabled_until - Network block disabled until this time if non-zero
742          */
743         struct os_reltime disabled_until;
744
745         /**
746          * parent_cred - Pointer to parent wpa_cred entry
747          *
748          * This pointer can be used to delete temporary networks when a wpa_cred
749          * that was used to create them is removed. This pointer should not be
750          * dereferences since it may not be updated in all cases.
751          */
752         void *parent_cred;
753
754 #ifdef CONFIG_MACSEC
755         /**
756          * macsec_policy - Determines the policy for MACsec secure session
757          *
758          * 0: MACsec not in use (default)
759          * 1: MACsec enabled - Should secure, accept key server's advice to
760          *    determine whether to use a secure session or not.
761          */
762         int macsec_policy;
763
764         /**
765          * macsec_integ_only - Determines how MACsec are transmitted
766          *
767          * This setting applies only when MACsec is in use, i.e.,
768          *  - macsec_policy is enabled
769          *  - the key server has decided to enable MACsec
770          *
771          * 0: Encrypt traffic (default)
772          * 1: Integrity only
773          */
774         int macsec_integ_only;
775
776         /**
777          * macsec_port - MACsec port (in SCI)
778          *
779          * Port component of the SCI.
780          *
781          * Range: 1-65534 (default: 1)
782          */
783         int macsec_port;
784
785         /**
786          * mka_priority - Priority of MKA Actor
787          *
788          * Range: 0-255 (default: 255)
789          */
790         int mka_priority;
791
792         /**
793          * mka_ckn - MKA pre-shared CKN
794          */
795 #define MACSEC_CKN_LEN 32
796         u8 mka_ckn[MACSEC_CKN_LEN];
797
798         /**
799          * mka_cak - MKA pre-shared CAK
800          */
801 #define MACSEC_CAK_LEN 16
802         u8 mka_cak[MACSEC_CAK_LEN];
803
804 #define MKA_PSK_SET_CKN BIT(0)
805 #define MKA_PSK_SET_CAK BIT(1)
806 #define MKA_PSK_SET (MKA_PSK_SET_CKN | MKA_PSK_SET_CAK)
807         /**
808          * mka_psk_set - Whether mka_ckn and mka_cak are set
809          */
810         u8 mka_psk_set;
811 #endif /* CONFIG_MACSEC */
812
813 #ifdef CONFIG_HS20
814         int update_identifier;
815
816         /**
817          * roaming_consortium_selection - Roaming Consortium Selection
818          *
819          * The matching Roaming Consortium OI that was used to generate this
820          * network profile.
821          */
822         u8 *roaming_consortium_selection;
823
824         /**
825          * roaming_consortium_selection_len - roaming_consortium_selection len
826          */
827         size_t roaming_consortium_selection_len;
828 #endif /* CONFIG_HS20 */
829
830         unsigned int wps_run;
831
832         /**
833          * mac_addr - MAC address policy
834          *
835          * 0 = use permanent MAC address
836          * 1 = use random MAC address for each ESS connection
837          * 2 = like 1, but maintain OUI (with local admin bit set)
838          *
839          * Internally, special value -1 is used to indicate that the parameter
840          * was not specified in the configuration (i.e., default behavior is
841          * followed).
842          */
843         int mac_addr;
844
845         /**
846          * no_auto_peer - Do not automatically peer with compatible mesh peers
847          *
848          * When unset, the reception of a beacon from a another mesh peer in
849          * this MBSS will trigger a peering attempt.
850          */
851         int no_auto_peer;
852
853         /**
854          * mesh_rssi_threshold - Set mesh parameter mesh_rssi_threshold (dBm)
855          *
856          * -255..-1 = threshold value in dBm
857          * 0 = not using RSSI threshold
858          * 1 = do not change driver default
859          */
860         int mesh_rssi_threshold;
861
862         /**
863          * wps_disabled - WPS disabled in AP mode
864          *
865          * 0 = WPS enabled and configured (default)
866          * 1 = WPS disabled
867          */
868         int wps_disabled;
869
870         /**
871          * fils_dh_group - FILS DH Group
872          *
873          * 0 = PFS disabled with FILS shared key authentication
874          * 1-65535 DH Group to use for FILS PFS
875          */
876         int fils_dh_group;
877
878         /**
879          * dpp_connector - DPP Connector (signedConnector as string)
880          */
881         char *dpp_connector;
882
883         /**
884          * dpp_netaccesskey - DPP netAccessKey (own private key)
885          */
886         u8 *dpp_netaccesskey;
887
888         /**
889          * dpp_netaccesskey_len - DPP netAccessKey length in octets
890          */
891         size_t dpp_netaccesskey_len;
892
893         /**
894          * net_access_key_expiry - DPP netAccessKey expiry in UNIX time stamp
895          *
896          * 0 indicates no expiration.
897          */
898         unsigned int dpp_netaccesskey_expiry;
899
900         /**
901          * dpp_csign - C-sign-key (Configurator public key)
902          */
903         u8 *dpp_csign;
904
905         /**
906          * dpp_csign_len - C-sign-key length in octets
907          */
908         size_t dpp_csign_len;
909
910         /**
911          * owe_group - OWE DH Group
912          *
913          * 0 = use default (19) first and then try all supported groups one by
914          *      one if AP rejects the selected group
915          * 1-65535 DH Group to use for OWE
916          *
917          * Groups 19 (NIST P-256), 20 (NIST P-384), and 21 (NIST P-521) are
918          * currently supported.
919          */
920         int owe_group;
921
922         /**
923          * owe_only - OWE-only mode (disable transition mode)
924          *
925          * 0 = enable transition mode (allow connection to either OWE or open
926          *      BSS)
927          * 1 = disable transition mode (allow connection only with OWE)
928          */
929         int owe_only;
930
931         /**
932          * owe_transition_bss_select_count - OWE transition BSS select count
933          *
934          * This is an internally used variable (i.e., not used in external
935          * configuration) to track the number of selection attempts done for
936          * OWE BSS in transition mode. This allows fallback to an open BSS if
937          * the selection attempts for OWE BSS exceed the configured threshold.
938          */
939         int owe_transition_bss_select_count;
940 };
941
942 #endif /* CONFIG_SSID_H */