1 /* 2 * WPA Supplicant - Common definitions 3 * Copyright (c) 2004-2018, 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 DEFS_H 10 #define DEFS_H 11 12 #define WPA_CIPHER_NONE BIT(0) 13 #define WPA_CIPHER_WEP40 BIT(1) 14 #define WPA_CIPHER_WEP104 BIT(2) 15 #define WPA_CIPHER_TKIP BIT(3) 16 #define WPA_CIPHER_CCMP BIT(4) 17 #define WPA_CIPHER_AES_128_CMAC BIT(5) 18 #define WPA_CIPHER_GCMP BIT(6) 19 #define WPA_CIPHER_SMS4 BIT(7) 20 #define WPA_CIPHER_GCMP_256 BIT(8) 21 #define WPA_CIPHER_CCMP_256 BIT(9) 22 #define WPA_CIPHER_BIP_GMAC_128 BIT(11) 23 #define WPA_CIPHER_BIP_GMAC_256 BIT(12) 24 #define WPA_CIPHER_BIP_CMAC_256 BIT(13) 25 #define WPA_CIPHER_GTK_NOT_USED BIT(14) 26 27 #define WPA_KEY_MGMT_IEEE8021X BIT(0) 28 #define WPA_KEY_MGMT_PSK BIT(1) 29 #define WPA_KEY_MGMT_NONE BIT(2) 30 #define WPA_KEY_MGMT_IEEE8021X_NO_WPA BIT(3) 31 #define WPA_KEY_MGMT_WPA_NONE BIT(4) 32 #define WPA_KEY_MGMT_FT_IEEE8021X BIT(5) 33 #define WPA_KEY_MGMT_FT_PSK BIT(6) 34 #define WPA_KEY_MGMT_IEEE8021X_SHA256 BIT(7) 35 #define WPA_KEY_MGMT_PSK_SHA256 BIT(8) 36 #define WPA_KEY_MGMT_WPS BIT(9) 37 #define WPA_KEY_MGMT_SAE BIT(10) 38 #define WPA_KEY_MGMT_FT_SAE BIT(11) 39 #define WPA_KEY_MGMT_WAPI_PSK BIT(12) 40 #define WPA_KEY_MGMT_WAPI_CERT BIT(13) 41 #define WPA_KEY_MGMT_CCKM BIT(14) 42 #define WPA_KEY_MGMT_IEEE8021X_SUITE_B BIT(16) 43 #define WPA_KEY_MGMT_IEEE8021X_SUITE_B_192 BIT(17) 44 #define WPA_KEY_MGMT_FILS_SHA256 BIT(18) 45 #define WPA_KEY_MGMT_FILS_SHA384 BIT(19) 46 #define WPA_KEY_MGMT_FT_FILS_SHA256 BIT(20) 47 #define WPA_KEY_MGMT_FT_FILS_SHA384 BIT(21) 48 #define WPA_KEY_MGMT_OWE BIT(22) 49 #define WPA_KEY_MGMT_DPP BIT(23) 50 #define WPA_KEY_MGMT_FT_IEEE8021X_SHA384 BIT(24) 51 #define WPA_KEY_MGMT_PASN BIT(25) 52 #define WPA_KEY_MGMT_SAE_EXT_KEY BIT(26) 53 #define WPA_KEY_MGMT_FT_SAE_EXT_KEY BIT(27) 54 #define WPA_KEY_MGMT_IEEE8021X_SHA384 BIT(28) 55 56 57 #define WPA_KEY_MGMT_FT (WPA_KEY_MGMT_FT_PSK | \ 58 WPA_KEY_MGMT_FT_IEEE8021X | \ 59 WPA_KEY_MGMT_FT_IEEE8021X_SHA384 | \ 60 WPA_KEY_MGMT_FT_SAE | \ 61 WPA_KEY_MGMT_FT_SAE_EXT_KEY | \ 62 WPA_KEY_MGMT_FT_FILS_SHA256 | \ 63 WPA_KEY_MGMT_FT_FILS_SHA384) 64 wpa_key_mgmt_wpa_ieee8021x(int akm)65 static inline int wpa_key_mgmt_wpa_ieee8021x(int akm) 66 { 67 return !!(akm & (WPA_KEY_MGMT_IEEE8021X | 68 WPA_KEY_MGMT_FT_IEEE8021X | 69 WPA_KEY_MGMT_FT_IEEE8021X_SHA384 | 70 WPA_KEY_MGMT_CCKM | 71 WPA_KEY_MGMT_IEEE8021X_SHA256 | 72 WPA_KEY_MGMT_IEEE8021X_SUITE_B | 73 WPA_KEY_MGMT_IEEE8021X_SUITE_B_192 | 74 WPA_KEY_MGMT_FILS_SHA256 | 75 WPA_KEY_MGMT_FILS_SHA384 | 76 WPA_KEY_MGMT_FT_FILS_SHA256 | 77 WPA_KEY_MGMT_FT_FILS_SHA384 | 78 WPA_KEY_MGMT_IEEE8021X_SHA384)); 79 } 80 wpa_key_mgmt_wpa_psk_no_sae(int akm)81 static inline int wpa_key_mgmt_wpa_psk_no_sae(int akm) 82 { 83 return !!(akm & (WPA_KEY_MGMT_PSK | 84 WPA_KEY_MGMT_FT_PSK | 85 WPA_KEY_MGMT_PSK_SHA256)); 86 } 87 wpa_key_mgmt_wpa_psk(int akm)88 static inline int wpa_key_mgmt_wpa_psk(int akm) 89 { 90 return !!(akm & (WPA_KEY_MGMT_PSK | 91 WPA_KEY_MGMT_FT_PSK | 92 WPA_KEY_MGMT_PSK_SHA256 | 93 WPA_KEY_MGMT_SAE | 94 WPA_KEY_MGMT_SAE_EXT_KEY | 95 WPA_KEY_MGMT_FT_SAE | 96 WPA_KEY_MGMT_FT_SAE_EXT_KEY)); 97 } 98 wpa_key_mgmt_ft(int akm)99 static inline int wpa_key_mgmt_ft(int akm) 100 { 101 return !!(akm & WPA_KEY_MGMT_FT); 102 } 103 wpa_key_mgmt_only_ft(int akm)104 static inline int wpa_key_mgmt_only_ft(int akm) 105 { 106 int ft = wpa_key_mgmt_ft(akm); 107 akm &= ~WPA_KEY_MGMT_FT; 108 return ft && !akm; 109 } 110 wpa_key_mgmt_ft_psk(int akm)111 static inline int wpa_key_mgmt_ft_psk(int akm) 112 { 113 return !!(akm & WPA_KEY_MGMT_FT_PSK); 114 } 115 wpa_key_mgmt_sae(int akm)116 static inline int wpa_key_mgmt_sae(int akm) 117 { 118 return !!(akm & (WPA_KEY_MGMT_SAE | 119 WPA_KEY_MGMT_SAE_EXT_KEY | 120 WPA_KEY_MGMT_FT_SAE | 121 WPA_KEY_MGMT_FT_SAE_EXT_KEY)); 122 } 123 wpa_key_mgmt_sae_ext_key(int akm)124 static inline int wpa_key_mgmt_sae_ext_key(int akm) 125 { 126 return !!(akm & (WPA_KEY_MGMT_SAE_EXT_KEY | 127 WPA_KEY_MGMT_FT_SAE_EXT_KEY)); 128 } 129 wpa_key_mgmt_only_sae(int akm)130 static inline int wpa_key_mgmt_only_sae(int akm) 131 { 132 return wpa_key_mgmt_sae(akm) && 133 !(akm & ~(WPA_KEY_MGMT_SAE | 134 WPA_KEY_MGMT_SAE_EXT_KEY | 135 WPA_KEY_MGMT_FT_SAE | 136 WPA_KEY_MGMT_FT_SAE_EXT_KEY)); 137 } 138 wpa_key_mgmt_fils(int akm)139 static inline int wpa_key_mgmt_fils(int akm) 140 { 141 return !!(akm & (WPA_KEY_MGMT_FILS_SHA256 | 142 WPA_KEY_MGMT_FILS_SHA384 | 143 WPA_KEY_MGMT_FT_FILS_SHA256 | 144 WPA_KEY_MGMT_FT_FILS_SHA384)); 145 } 146 wpa_key_mgmt_sha256(int akm)147 static inline int wpa_key_mgmt_sha256(int akm) 148 { 149 return !!(akm & (WPA_KEY_MGMT_FT_IEEE8021X | 150 WPA_KEY_MGMT_PSK_SHA256 | 151 WPA_KEY_MGMT_IEEE8021X_SHA256 | 152 WPA_KEY_MGMT_SAE | 153 WPA_KEY_MGMT_FT_SAE | 154 WPA_KEY_MGMT_IEEE8021X_SUITE_B | 155 WPA_KEY_MGMT_FILS_SHA256 | 156 WPA_KEY_MGMT_FT_FILS_SHA256)); 157 } 158 wpa_key_mgmt_sha384(int akm)159 static inline int wpa_key_mgmt_sha384(int akm) 160 { 161 return !!(akm & (WPA_KEY_MGMT_IEEE8021X_SUITE_B_192 | 162 WPA_KEY_MGMT_FT_IEEE8021X_SHA384 | 163 WPA_KEY_MGMT_FILS_SHA384 | 164 WPA_KEY_MGMT_FT_FILS_SHA384 | 165 WPA_KEY_MGMT_IEEE8021X_SHA384)); 166 } 167 wpa_key_mgmt_suite_b(int akm)168 static inline int wpa_key_mgmt_suite_b(int akm) 169 { 170 return !!(akm & (WPA_KEY_MGMT_IEEE8021X_SUITE_B | 171 WPA_KEY_MGMT_IEEE8021X_SUITE_B_192)); 172 } 173 wpa_key_mgmt_wpa(int akm)174 static inline int wpa_key_mgmt_wpa(int akm) 175 { 176 return wpa_key_mgmt_wpa_ieee8021x(akm) || 177 wpa_key_mgmt_wpa_psk(akm) || 178 wpa_key_mgmt_fils(akm) || 179 wpa_key_mgmt_sae(akm) || 180 akm == WPA_KEY_MGMT_OWE || 181 akm == WPA_KEY_MGMT_DPP; 182 } 183 wpa_key_mgmt_wpa_any(int akm)184 static inline int wpa_key_mgmt_wpa_any(int akm) 185 { 186 return wpa_key_mgmt_wpa(akm) || (akm & WPA_KEY_MGMT_WPA_NONE); 187 } 188 wpa_key_mgmt_cckm(int akm)189 static inline int wpa_key_mgmt_cckm(int akm) 190 { 191 return akm == WPA_KEY_MGMT_CCKM; 192 } 193 wpa_key_mgmt_cross_akm(int akm)194 static inline int wpa_key_mgmt_cross_akm(int akm) 195 { 196 return !!(akm & (WPA_KEY_MGMT_PSK | 197 WPA_KEY_MGMT_PSK_SHA256 | 198 WPA_KEY_MGMT_SAE | 199 WPA_KEY_MGMT_SAE_EXT_KEY)); 200 } 201 202 #define WPA_PROTO_WPA BIT(0) 203 #define WPA_PROTO_RSN BIT(1) 204 #define WPA_PROTO_WAPI BIT(2) 205 206 #define WPA_AUTH_ALG_OPEN BIT(0) 207 #define WPA_AUTH_ALG_SHARED BIT(1) 208 #define WPA_AUTH_ALG_LEAP BIT(2) 209 #define WPA_AUTH_ALG_FT BIT(3) 210 #define WPA_AUTH_ALG_SAE BIT(4) 211 #define WPA_AUTH_ALG_FILS BIT(5) 212 #define WPA_AUTH_ALG_FILS_SK_PFS BIT(6) 213 wpa_auth_alg_fils(int alg)214 static inline int wpa_auth_alg_fils(int alg) 215 { 216 return !!(alg & (WPA_AUTH_ALG_FILS | WPA_AUTH_ALG_FILS_SK_PFS)); 217 } 218 219 enum wpa_alg { 220 WPA_ALG_NONE, 221 WPA_ALG_WEP, 222 WPA_ALG_TKIP, 223 WPA_ALG_CCMP, 224 WPA_ALG_BIP_CMAC_128, 225 WPA_ALG_GCMP, 226 WPA_ALG_SMS4, 227 WPA_ALG_KRK, 228 WPA_ALG_GCMP_256, 229 WPA_ALG_CCMP_256, 230 WPA_ALG_BIP_GMAC_128, 231 WPA_ALG_BIP_GMAC_256, 232 WPA_ALG_BIP_CMAC_256 233 }; 234 wpa_alg_bip(enum wpa_alg alg)235 static inline int wpa_alg_bip(enum wpa_alg alg) 236 { 237 return alg == WPA_ALG_BIP_CMAC_128 || 238 alg == WPA_ALG_BIP_GMAC_128 || 239 alg == WPA_ALG_BIP_GMAC_256 || 240 alg == WPA_ALG_BIP_CMAC_256; 241 } 242 243 /** 244 * enum wpa_states - wpa_supplicant state 245 * 246 * These enumeration values are used to indicate the current wpa_supplicant 247 * state (wpa_s->wpa_state). The current state can be retrieved with 248 * wpa_supplicant_get_state() function and the state can be changed by calling 249 * wpa_supplicant_set_state(). In WPA state machine (wpa.c and preauth.c), the 250 * wrapper functions wpa_sm_get_state() and wpa_sm_set_state() should be used 251 * to access the state variable. 252 */ 253 enum wpa_states { 254 /** 255 * WPA_DISCONNECTED - Disconnected state 256 * 257 * This state indicates that client is not associated, but is likely to 258 * start looking for an access point. This state is entered when a 259 * connection is lost. 260 */ 261 WPA_DISCONNECTED, 262 263 /** 264 * WPA_INTERFACE_DISABLED - Interface disabled 265 * 266 * This state is entered if the network interface is disabled, e.g., 267 * due to rfkill. wpa_supplicant refuses any new operations that would 268 * use the radio until the interface has been enabled. 269 */ 270 WPA_INTERFACE_DISABLED, 271 272 /** 273 * WPA_INACTIVE - Inactive state (wpa_supplicant disabled) 274 * 275 * This state is entered if there are no enabled networks in the 276 * configuration. wpa_supplicant is not trying to associate with a new 277 * network and external interaction (e.g., ctrl_iface call to add or 278 * enable a network) is needed to start association. 279 */ 280 WPA_INACTIVE, 281 282 /** 283 * WPA_SCANNING - Scanning for a network 284 * 285 * This state is entered when wpa_supplicant starts scanning for a 286 * network. 287 */ 288 WPA_SCANNING, 289 290 /** 291 * WPA_AUTHENTICATING - Trying to authenticate with a BSS/SSID 292 * 293 * This state is entered when wpa_supplicant has found a suitable BSS 294 * to authenticate with and the driver is configured to try to 295 * authenticate with this BSS. This state is used only with drivers 296 * that use wpa_supplicant as the SME. 297 */ 298 WPA_AUTHENTICATING, 299 300 /** 301 * WPA_ASSOCIATING - Trying to associate with a BSS/SSID 302 * 303 * This state is entered when wpa_supplicant has found a suitable BSS 304 * to associate with and the driver is configured to try to associate 305 * with this BSS in ap_scan=1 mode. When using ap_scan=2 mode, this 306 * state is entered when the driver is configured to try to associate 307 * with a network using the configured SSID and security policy. 308 */ 309 WPA_ASSOCIATING, 310 311 /** 312 * WPA_ASSOCIATED - Association completed 313 * 314 * This state is entered when the driver reports that association has 315 * been successfully completed with an AP. If IEEE 802.1X is used 316 * (with or without WPA/WPA2), wpa_supplicant remains in this state 317 * until the IEEE 802.1X/EAPOL authentication has been completed. 318 */ 319 WPA_ASSOCIATED, 320 321 /** 322 * WPA_4WAY_HANDSHAKE - WPA 4-Way Key Handshake in progress 323 * 324 * This state is entered when WPA/WPA2 4-Way Handshake is started. In 325 * case of WPA-PSK, this happens when receiving the first EAPOL-Key 326 * frame after association. In case of WPA-EAP, this state is entered 327 * when the IEEE 802.1X/EAPOL authentication has been completed. 328 */ 329 WPA_4WAY_HANDSHAKE, 330 331 /** 332 * WPA_GROUP_HANDSHAKE - WPA Group Key Handshake in progress 333 * 334 * This state is entered when 4-Way Key Handshake has been completed 335 * (i.e., when the supplicant sends out message 4/4) and when Group 336 * Key rekeying is started by the AP (i.e., when supplicant receives 337 * message 1/2). 338 */ 339 WPA_GROUP_HANDSHAKE, 340 341 /** 342 * WPA_COMPLETED - All authentication completed 343 * 344 * This state is entered when the full authentication process is 345 * completed. In case of WPA2, this happens when the 4-Way Handshake is 346 * successfully completed. With WPA, this state is entered after the 347 * Group Key Handshake; with IEEE 802.1X (non-WPA) connection is 348 * completed after dynamic keys are received (or if not used, after 349 * the EAP authentication has been completed). With static WEP keys and 350 * plaintext connections, this state is entered when an association 351 * has been completed. 352 * 353 * This state indicates that the supplicant has completed its 354 * processing for the association phase and that data connection is 355 * fully configured. 356 */ 357 WPA_COMPLETED 358 }; 359 360 #define MLME_SETPROTECTION_PROTECT_TYPE_NONE 0 361 #define MLME_SETPROTECTION_PROTECT_TYPE_RX 1 362 #define MLME_SETPROTECTION_PROTECT_TYPE_TX 2 363 #define MLME_SETPROTECTION_PROTECT_TYPE_RX_TX 3 364 365 #define MLME_SETPROTECTION_KEY_TYPE_GROUP 0 366 #define MLME_SETPROTECTION_KEY_TYPE_PAIRWISE 1 367 368 369 /** 370 * enum mfp_options - Management frame protection (IEEE 802.11w) options 371 */ 372 enum mfp_options { 373 NO_MGMT_FRAME_PROTECTION = 0, 374 MGMT_FRAME_PROTECTION_OPTIONAL = 1, 375 MGMT_FRAME_PROTECTION_REQUIRED = 2, 376 }; 377 #define MGMT_FRAME_PROTECTION_DEFAULT 3 378 379 /** 380 * enum hostapd_hw_mode - Hardware mode 381 */ 382 enum hostapd_hw_mode { 383 HOSTAPD_MODE_IEEE80211B, 384 HOSTAPD_MODE_IEEE80211G, 385 HOSTAPD_MODE_IEEE80211A, 386 HOSTAPD_MODE_IEEE80211AD, 387 HOSTAPD_MODE_IEEE80211ANY, 388 NUM_HOSTAPD_MODES 389 }; 390 391 /** 392 * enum wpa_ctrl_req_type - Control interface request types 393 */ 394 enum wpa_ctrl_req_type { 395 WPA_CTRL_REQ_UNKNOWN, 396 WPA_CTRL_REQ_EAP_IDENTITY, 397 WPA_CTRL_REQ_EAP_PASSWORD, 398 WPA_CTRL_REQ_EAP_NEW_PASSWORD, 399 WPA_CTRL_REQ_EAP_PIN, 400 WPA_CTRL_REQ_EAP_OTP, 401 WPA_CTRL_REQ_EAP_PASSPHRASE, 402 WPA_CTRL_REQ_SIM, 403 WPA_CTRL_REQ_PSK_PASSPHRASE, 404 WPA_CTRL_REQ_EXT_CERT_CHECK, 405 NUM_WPA_CTRL_REQS 406 }; 407 408 /* Maximum number of EAP methods to store for EAP server user information */ 409 #define EAP_MAX_METHODS 8 410 411 enum mesh_plink_state { 412 PLINK_IDLE = 1, 413 PLINK_OPN_SNT, 414 PLINK_OPN_RCVD, 415 PLINK_CNF_RCVD, 416 PLINK_ESTAB, 417 PLINK_HOLDING, 418 PLINK_BLOCKED, /* not defined in the IEEE 802.11 standard */ 419 }; 420 421 enum set_band { 422 WPA_SETBAND_AUTO = 0, 423 WPA_SETBAND_5G = BIT(0), 424 WPA_SETBAND_2G = BIT(1), 425 WPA_SETBAND_6G = BIT(2), 426 }; 427 428 enum wpa_radio_work_band { 429 BAND_2_4_GHZ = BIT(0), 430 BAND_5_GHZ = BIT(1), 431 BAND_60_GHZ = BIT(2), 432 }; 433 434 enum beacon_rate_type { 435 BEACON_RATE_LEGACY, 436 BEACON_RATE_HT, 437 BEACON_RATE_VHT, 438 BEACON_RATE_HE 439 }; 440 441 enum eap_proxy_sim_state { 442 SIM_STATE_ERROR, 443 }; 444 445 #define OCE_STA BIT(0) 446 #define OCE_STA_CFON BIT(1) 447 #define OCE_AP BIT(2) 448 449 /* enum chan_width - Channel width definitions */ 450 enum chan_width { 451 CHAN_WIDTH_20_NOHT, 452 CHAN_WIDTH_20, 453 CHAN_WIDTH_40, 454 CHAN_WIDTH_80, 455 CHAN_WIDTH_80P80, 456 CHAN_WIDTH_160, 457 CHAN_WIDTH_2160, 458 CHAN_WIDTH_4320, 459 CHAN_WIDTH_6480, 460 CHAN_WIDTH_8640, 461 CHAN_WIDTH_320, 462 CHAN_WIDTH_UNKNOWN 463 }; 464 465 /* VHT/EDMG/etc. channel widths 466 * Note: The first four values are used in hostapd.conf and as such, must 467 * maintain their defined values. Other values are used internally. */ 468 enum oper_chan_width { 469 CONF_OPER_CHWIDTH_USE_HT = 0, 470 CONF_OPER_CHWIDTH_80MHZ = 1, 471 CONF_OPER_CHWIDTH_160MHZ = 2, 472 CONF_OPER_CHWIDTH_80P80MHZ = 3, 473 CONF_OPER_CHWIDTH_2160MHZ, 474 CONF_OPER_CHWIDTH_4320MHZ, 475 CONF_OPER_CHWIDTH_6480MHZ, 476 CONF_OPER_CHWIDTH_8640MHZ, 477 CONF_OPER_CHWIDTH_40MHZ_6GHZ, 478 CONF_OPER_CHWIDTH_320MHZ, 479 }; 480 481 enum key_flag { 482 KEY_FLAG_MODIFY = BIT(0), 483 KEY_FLAG_DEFAULT = BIT(1), 484 KEY_FLAG_RX = BIT(2), 485 KEY_FLAG_TX = BIT(3), 486 KEY_FLAG_GROUP = BIT(4), 487 KEY_FLAG_PAIRWISE = BIT(5), 488 KEY_FLAG_PMK = BIT(6), 489 KEY_FLAG_NEXT = BIT(7), 490 /* Used flag combinations */ 491 KEY_FLAG_RX_TX = KEY_FLAG_RX | KEY_FLAG_TX, 492 KEY_FLAG_GROUP_RX_TX = KEY_FLAG_GROUP | KEY_FLAG_RX_TX, 493 KEY_FLAG_GROUP_RX_TX_DEFAULT = KEY_FLAG_GROUP_RX_TX | 494 KEY_FLAG_DEFAULT, 495 KEY_FLAG_GROUP_RX = KEY_FLAG_GROUP | KEY_FLAG_RX, 496 KEY_FLAG_GROUP_TX_DEFAULT = KEY_FLAG_GROUP | KEY_FLAG_TX | 497 KEY_FLAG_DEFAULT, 498 KEY_FLAG_PAIRWISE_RX_TX = KEY_FLAG_PAIRWISE | KEY_FLAG_RX_TX, 499 KEY_FLAG_PAIRWISE_RX = KEY_FLAG_PAIRWISE | KEY_FLAG_RX, 500 KEY_FLAG_PAIRWISE_RX_TX_MODIFY = KEY_FLAG_PAIRWISE_RX_TX | 501 KEY_FLAG_MODIFY, 502 KEY_FLAG_PAIRWISE_NEXT = KEY_FLAG_PAIRWISE_RX | KEY_FLAG_NEXT, 503 /* Max allowed flags for each key type */ 504 KEY_FLAG_PAIRWISE_MASK = KEY_FLAG_PAIRWISE_RX_TX_MODIFY | 505 KEY_FLAG_NEXT, 506 KEY_FLAG_GROUP_MASK = KEY_FLAG_GROUP_RX_TX_DEFAULT, 507 KEY_FLAG_PMK_MASK = KEY_FLAG_PMK, 508 }; 509 check_key_flag(enum key_flag key_flag)510 static inline int check_key_flag(enum key_flag key_flag) 511 { 512 return !!(!key_flag || 513 ((key_flag & (KEY_FLAG_PAIRWISE | KEY_FLAG_MODIFY)) && 514 (key_flag & ~KEY_FLAG_PAIRWISE_MASK)) || 515 ((key_flag & KEY_FLAG_GROUP) && 516 (key_flag & ~KEY_FLAG_GROUP_MASK)) || 517 ((key_flag & KEY_FLAG_PMK) && 518 (key_flag & ~KEY_FLAG_PMK_MASK))); 519 } 520 521 enum ptk0_rekey_handling { 522 PTK0_REKEY_ALLOW_ALWAYS, 523 PTK0_REKEY_ALLOW_LOCAL_OK, 524 PTK0_REKEY_ALLOW_NEVER 525 }; 526 527 enum frame_encryption { 528 FRAME_ENCRYPTION_UNKNOWN = -1, 529 FRAME_NOT_ENCRYPTED = 0, 530 FRAME_ENCRYPTED = 1 531 }; 532 533 #define MAX_NUM_MLD_LINKS 15 534 535 enum sae_pwe { 536 SAE_PWE_HUNT_AND_PECK = 0, 537 SAE_PWE_HASH_TO_ELEMENT = 1, 538 SAE_PWE_BOTH = 2, 539 SAE_PWE_FORCE_HUNT_AND_PECK = 3, 540 SAE_PWE_NOT_SET = 4, 541 }; 542 543 enum wpa_p2p_mode { 544 WPA_P2P_MODE_WFD_R1 = 0, 545 WPA_P2P_MODE_WFD_R2 = 1, 546 WPA_P2P_MODE_WFD_PCC = 2, 547 }; 548 549 #define USEC_80211_TU 1024 550 551 #define USEC_TO_TU(m) ((m) / USEC_80211_TU) 552 #define TU_TO_USEC(m) ((m) * USEC_80211_TU) 553 554 #endif /* DEFS_H */ 555