LCOV - code coverage report
Current view: top level - src/common - defs.h (source / functions) Hit Total Coverage
Test: wpa_supplicant/hostapd combined for hwsim test run 1443382998 Lines: 20 20 100.0 %
Date: 2015-09-27 Functions: 9 9 100.0 %

          Line data    Source code
       1             : /*
       2             :  * WPA Supplicant - Common definitions
       3             :  * Copyright (c) 2004-2015, 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             : #ifdef FALSE
      13             : #undef FALSE
      14             : #endif
      15             : #ifdef TRUE
      16             : #undef TRUE
      17             : #endif
      18             : typedef enum { FALSE = 0, TRUE = 1 } Boolean;
      19             : 
      20             : 
      21             : #define WPA_CIPHER_NONE BIT(0)
      22             : #define WPA_CIPHER_WEP40 BIT(1)
      23             : #define WPA_CIPHER_WEP104 BIT(2)
      24             : #define WPA_CIPHER_TKIP BIT(3)
      25             : #define WPA_CIPHER_CCMP BIT(4)
      26             : #define WPA_CIPHER_AES_128_CMAC BIT(5)
      27             : #define WPA_CIPHER_GCMP BIT(6)
      28             : #define WPA_CIPHER_SMS4 BIT(7)
      29             : #define WPA_CIPHER_GCMP_256 BIT(8)
      30             : #define WPA_CIPHER_CCMP_256 BIT(9)
      31             : #define WPA_CIPHER_BIP_GMAC_128 BIT(11)
      32             : #define WPA_CIPHER_BIP_GMAC_256 BIT(12)
      33             : #define WPA_CIPHER_BIP_CMAC_256 BIT(13)
      34             : #define WPA_CIPHER_GTK_NOT_USED BIT(14)
      35             : 
      36             : #define WPA_KEY_MGMT_IEEE8021X BIT(0)
      37             : #define WPA_KEY_MGMT_PSK BIT(1)
      38             : #define WPA_KEY_MGMT_NONE BIT(2)
      39             : #define WPA_KEY_MGMT_IEEE8021X_NO_WPA BIT(3)
      40             : #define WPA_KEY_MGMT_WPA_NONE BIT(4)
      41             : #define WPA_KEY_MGMT_FT_IEEE8021X BIT(5)
      42             : #define WPA_KEY_MGMT_FT_PSK BIT(6)
      43             : #define WPA_KEY_MGMT_IEEE8021X_SHA256 BIT(7)
      44             : #define WPA_KEY_MGMT_PSK_SHA256 BIT(8)
      45             : #define WPA_KEY_MGMT_WPS BIT(9)
      46             : #define WPA_KEY_MGMT_SAE BIT(10)
      47             : #define WPA_KEY_MGMT_FT_SAE BIT(11)
      48             : #define WPA_KEY_MGMT_WAPI_PSK BIT(12)
      49             : #define WPA_KEY_MGMT_WAPI_CERT BIT(13)
      50             : #define WPA_KEY_MGMT_CCKM BIT(14)
      51             : #define WPA_KEY_MGMT_OSEN BIT(15)
      52             : #define WPA_KEY_MGMT_IEEE8021X_SUITE_B BIT(16)
      53             : #define WPA_KEY_MGMT_IEEE8021X_SUITE_B_192 BIT(17)
      54             : 
      55       46986 : static inline int wpa_key_mgmt_wpa_ieee8021x(int akm)
      56             : {
      57       46986 :         return !!(akm & (WPA_KEY_MGMT_IEEE8021X |
      58             :                          WPA_KEY_MGMT_FT_IEEE8021X |
      59             :                          WPA_KEY_MGMT_CCKM |
      60             :                          WPA_KEY_MGMT_OSEN |
      61             :                          WPA_KEY_MGMT_IEEE8021X_SHA256 |
      62             :                          WPA_KEY_MGMT_IEEE8021X_SUITE_B |
      63             :                          WPA_KEY_MGMT_IEEE8021X_SUITE_B_192));
      64             : }
      65             : 
      66       86658 : static inline int wpa_key_mgmt_wpa_psk(int akm)
      67             : {
      68       86658 :         return !!(akm & (WPA_KEY_MGMT_PSK |
      69             :                          WPA_KEY_MGMT_FT_PSK |
      70             :                          WPA_KEY_MGMT_PSK_SHA256 |
      71             :                          WPA_KEY_MGMT_SAE |
      72             :                          WPA_KEY_MGMT_FT_SAE));
      73             : }
      74             : 
      75       51832 : static inline int wpa_key_mgmt_ft(int akm)
      76             : {
      77       51832 :         return !!(akm & (WPA_KEY_MGMT_FT_PSK |
      78             :                          WPA_KEY_MGMT_FT_IEEE8021X |
      79             :                          WPA_KEY_MGMT_FT_SAE));
      80             : }
      81             : 
      82       12938 : static inline int wpa_key_mgmt_sae(int akm)
      83             : {
      84       12938 :         return !!(akm & (WPA_KEY_MGMT_SAE |
      85             :                          WPA_KEY_MGMT_FT_SAE));
      86             : }
      87             : 
      88       17914 : static inline int wpa_key_mgmt_sha256(int akm)
      89             : {
      90       17914 :         return !!(akm & (WPA_KEY_MGMT_PSK_SHA256 |
      91             :                          WPA_KEY_MGMT_IEEE8021X_SHA256 |
      92             :                          WPA_KEY_MGMT_OSEN |
      93             :                          WPA_KEY_MGMT_IEEE8021X_SUITE_B));
      94             : }
      95             : 
      96        3093 : static inline int wpa_key_mgmt_sha384(int akm)
      97             : {
      98        3093 :         return !!(akm & WPA_KEY_MGMT_IEEE8021X_SUITE_B_192);
      99             : }
     100             : 
     101       19175 : static inline int wpa_key_mgmt_suite_b(int akm)
     102             : {
     103       19175 :         return !!(akm & (WPA_KEY_MGMT_IEEE8021X_SUITE_B |
     104             :                          WPA_KEY_MGMT_IEEE8021X_SUITE_B_192));
     105             : }
     106             : 
     107       14421 : static inline int wpa_key_mgmt_wpa(int akm)
     108             : {
     109       37514 :         return wpa_key_mgmt_wpa_ieee8021x(akm) ||
     110       19281 :                 wpa_key_mgmt_wpa_psk(akm) ||
     111        4860 :                 wpa_key_mgmt_sae(akm);
     112             : }
     113             : 
     114        1184 : static inline int wpa_key_mgmt_wpa_any(int akm)
     115             : {
     116        1184 :         return wpa_key_mgmt_wpa(akm) || (akm & WPA_KEY_MGMT_WPA_NONE);
     117             : }
     118             : 
     119             : static inline int wpa_key_mgmt_cckm(int akm)
     120             : {
     121             :         return akm == WPA_KEY_MGMT_CCKM;
     122             : }
     123             : 
     124             : 
     125             : #define WPA_PROTO_WPA BIT(0)
     126             : #define WPA_PROTO_RSN BIT(1)
     127             : #define WPA_PROTO_WAPI BIT(2)
     128             : #define WPA_PROTO_OSEN BIT(3)
     129             : 
     130             : #define WPA_AUTH_ALG_OPEN BIT(0)
     131             : #define WPA_AUTH_ALG_SHARED BIT(1)
     132             : #define WPA_AUTH_ALG_LEAP BIT(2)
     133             : #define WPA_AUTH_ALG_FT BIT(3)
     134             : #define WPA_AUTH_ALG_SAE BIT(4)
     135             : 
     136             : 
     137             : enum wpa_alg {
     138             :         WPA_ALG_NONE,
     139             :         WPA_ALG_WEP,
     140             :         WPA_ALG_TKIP,
     141             :         WPA_ALG_CCMP,
     142             :         WPA_ALG_IGTK,
     143             :         WPA_ALG_PMK,
     144             :         WPA_ALG_GCMP,
     145             :         WPA_ALG_SMS4,
     146             :         WPA_ALG_KRK,
     147             :         WPA_ALG_GCMP_256,
     148             :         WPA_ALG_CCMP_256,
     149             :         WPA_ALG_BIP_GMAC_128,
     150             :         WPA_ALG_BIP_GMAC_256,
     151             :         WPA_ALG_BIP_CMAC_256
     152             : };
     153             : 
     154             : /**
     155             :  * enum wpa_states - wpa_supplicant state
     156             :  *
     157             :  * These enumeration values are used to indicate the current wpa_supplicant
     158             :  * state (wpa_s->wpa_state). The current state can be retrieved with
     159             :  * wpa_supplicant_get_state() function and the state can be changed by calling
     160             :  * wpa_supplicant_set_state(). In WPA state machine (wpa.c and preauth.c), the
     161             :  * wrapper functions wpa_sm_get_state() and wpa_sm_set_state() should be used
     162             :  * to access the state variable.
     163             :  */
     164             : enum wpa_states {
     165             :         /**
     166             :          * WPA_DISCONNECTED - Disconnected state
     167             :          *
     168             :          * This state indicates that client is not associated, but is likely to
     169             :          * start looking for an access point. This state is entered when a
     170             :          * connection is lost.
     171             :          */
     172             :         WPA_DISCONNECTED,
     173             : 
     174             :         /**
     175             :          * WPA_INTERFACE_DISABLED - Interface disabled
     176             :          *
     177             :          * This state is entered if the network interface is disabled, e.g.,
     178             :          * due to rfkill. wpa_supplicant refuses any new operations that would
     179             :          * use the radio until the interface has been enabled.
     180             :          */
     181             :         WPA_INTERFACE_DISABLED,
     182             : 
     183             :         /**
     184             :          * WPA_INACTIVE - Inactive state (wpa_supplicant disabled)
     185             :          *
     186             :          * This state is entered if there are no enabled networks in the
     187             :          * configuration. wpa_supplicant is not trying to associate with a new
     188             :          * network and external interaction (e.g., ctrl_iface call to add or
     189             :          * enable a network) is needed to start association.
     190             :          */
     191             :         WPA_INACTIVE,
     192             : 
     193             :         /**
     194             :          * WPA_SCANNING - Scanning for a network
     195             :          *
     196             :          * This state is entered when wpa_supplicant starts scanning for a
     197             :          * network.
     198             :          */
     199             :         WPA_SCANNING,
     200             : 
     201             :         /**
     202             :          * WPA_AUTHENTICATING - Trying to authenticate with a BSS/SSID
     203             :          *
     204             :          * This state is entered when wpa_supplicant has found a suitable BSS
     205             :          * to authenticate with and the driver is configured to try to
     206             :          * authenticate with this BSS. This state is used only with drivers
     207             :          * that use wpa_supplicant as the SME.
     208             :          */
     209             :         WPA_AUTHENTICATING,
     210             : 
     211             :         /**
     212             :          * WPA_ASSOCIATING - Trying to associate with a BSS/SSID
     213             :          *
     214             :          * This state is entered when wpa_supplicant has found a suitable BSS
     215             :          * to associate with and the driver is configured to try to associate
     216             :          * with this BSS in ap_scan=1 mode. When using ap_scan=2 mode, this
     217             :          * state is entered when the driver is configured to try to associate
     218             :          * with a network using the configured SSID and security policy.
     219             :          */
     220             :         WPA_ASSOCIATING,
     221             : 
     222             :         /**
     223             :          * WPA_ASSOCIATED - Association completed
     224             :          *
     225             :          * This state is entered when the driver reports that association has
     226             :          * been successfully completed with an AP. If IEEE 802.1X is used
     227             :          * (with or without WPA/WPA2), wpa_supplicant remains in this state
     228             :          * until the IEEE 802.1X/EAPOL authentication has been completed.
     229             :          */
     230             :         WPA_ASSOCIATED,
     231             : 
     232             :         /**
     233             :          * WPA_4WAY_HANDSHAKE - WPA 4-Way Key Handshake in progress
     234             :          *
     235             :          * This state is entered when WPA/WPA2 4-Way Handshake is started. In
     236             :          * case of WPA-PSK, this happens when receiving the first EAPOL-Key
     237             :          * frame after association. In case of WPA-EAP, this state is entered
     238             :          * when the IEEE 802.1X/EAPOL authentication has been completed.
     239             :          */
     240             :         WPA_4WAY_HANDSHAKE,
     241             : 
     242             :         /**
     243             :          * WPA_GROUP_HANDSHAKE - WPA Group Key Handshake in progress
     244             :          *
     245             :          * This state is entered when 4-Way Key Handshake has been completed
     246             :          * (i.e., when the supplicant sends out message 4/4) and when Group
     247             :          * Key rekeying is started by the AP (i.e., when supplicant receives
     248             :          * message 1/2).
     249             :          */
     250             :         WPA_GROUP_HANDSHAKE,
     251             : 
     252             :         /**
     253             :          * WPA_COMPLETED - All authentication completed
     254             :          *
     255             :          * This state is entered when the full authentication process is
     256             :          * completed. In case of WPA2, this happens when the 4-Way Handshake is
     257             :          * successfully completed. With WPA, this state is entered after the
     258             :          * Group Key Handshake; with IEEE 802.1X (non-WPA) connection is
     259             :          * completed after dynamic keys are received (or if not used, after
     260             :          * the EAP authentication has been completed). With static WEP keys and
     261             :          * plaintext connections, this state is entered when an association
     262             :          * has been completed.
     263             :          *
     264             :          * This state indicates that the supplicant has completed its
     265             :          * processing for the association phase and that data connection is
     266             :          * fully configured.
     267             :          */
     268             :         WPA_COMPLETED
     269             : };
     270             : 
     271             : #define MLME_SETPROTECTION_PROTECT_TYPE_NONE 0
     272             : #define MLME_SETPROTECTION_PROTECT_TYPE_RX 1
     273             : #define MLME_SETPROTECTION_PROTECT_TYPE_TX 2
     274             : #define MLME_SETPROTECTION_PROTECT_TYPE_RX_TX 3
     275             : 
     276             : #define MLME_SETPROTECTION_KEY_TYPE_GROUP 0
     277             : #define MLME_SETPROTECTION_KEY_TYPE_PAIRWISE 1
     278             : 
     279             : 
     280             : /**
     281             :  * enum mfp_options - Management frame protection (IEEE 802.11w) options
     282             :  */
     283             : enum mfp_options {
     284             :         NO_MGMT_FRAME_PROTECTION = 0,
     285             :         MGMT_FRAME_PROTECTION_OPTIONAL = 1,
     286             :         MGMT_FRAME_PROTECTION_REQUIRED = 2,
     287             : };
     288             : #define MGMT_FRAME_PROTECTION_DEFAULT 3
     289             : 
     290             : /**
     291             :  * enum hostapd_hw_mode - Hardware mode
     292             :  */
     293             : enum hostapd_hw_mode {
     294             :         HOSTAPD_MODE_IEEE80211B,
     295             :         HOSTAPD_MODE_IEEE80211G,
     296             :         HOSTAPD_MODE_IEEE80211A,
     297             :         HOSTAPD_MODE_IEEE80211AD,
     298             :         HOSTAPD_MODE_IEEE80211ANY,
     299             :         NUM_HOSTAPD_MODES
     300             : };
     301             : 
     302             : /**
     303             :  * enum wpa_ctrl_req_type - Control interface request types
     304             :  */
     305             : enum wpa_ctrl_req_type {
     306             :         WPA_CTRL_REQ_UNKNOWN,
     307             :         WPA_CTRL_REQ_EAP_IDENTITY,
     308             :         WPA_CTRL_REQ_EAP_PASSWORD,
     309             :         WPA_CTRL_REQ_EAP_NEW_PASSWORD,
     310             :         WPA_CTRL_REQ_EAP_PIN,
     311             :         WPA_CTRL_REQ_EAP_OTP,
     312             :         WPA_CTRL_REQ_EAP_PASSPHRASE,
     313             :         WPA_CTRL_REQ_SIM,
     314             :         WPA_CTRL_REQ_PSK_PASSPHRASE,
     315             :         NUM_WPA_CTRL_REQS
     316             : };
     317             : 
     318             : /* Maximum number of EAP methods to store for EAP server user information */
     319             : #define EAP_MAX_METHODS 8
     320             : 
     321             : enum mesh_plink_state {
     322             :         PLINK_LISTEN = 1,
     323             :         PLINK_OPEN_SENT,
     324             :         PLINK_OPEN_RCVD,
     325             :         PLINK_CNF_RCVD,
     326             :         PLINK_ESTAB,
     327             :         PLINK_HOLDING,
     328             :         PLINK_BLOCKED,
     329             : };
     330             : 
     331             : enum set_band {
     332             :         WPA_SETBAND_AUTO,
     333             :         WPA_SETBAND_5G,
     334             :         WPA_SETBAND_2G
     335             : };
     336             : 
     337             : #endif /* DEFS_H */

Generated by: LCOV version 1.10