| /** @file |
| EFI EAP Management Protocol Definition |
| The EFI EAP Management Protocol is designed to provide ease of management and |
| ease of test for EAPOL state machine. It is intended for the supplicant side. |
| It conforms to IEEE 802.1x specification. |
| The definitions in this file are defined in UEFI Specification 2.2, which have |
| not been verified by one implementation yet. |
| |
| Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR> |
| SPDX-License-Identifier: BSD-2-Clause-Patent |
| |
| @par Revision Reference: |
| This Protocol is introduced in UEFI Specification 2.2 |
| |
| **/ |
| |
| #ifndef __EFI_EAP_MANAGEMENT_PROTOCOL_H__ |
| #define __EFI_EAP_MANAGEMENT_PROTOCOL_H__ |
| |
| #include <Protocol/Eap.h> |
| |
| #define EFI_EAP_MANAGEMENT_PROTOCOL_GUID \ |
| { \ |
| 0xbb62e663, 0x625d, 0x40b2, {0xa0, 0x88, 0xbb, 0xe8, 0x36, 0x23, 0xa2, 0x45 } \ |
| } |
| |
| typedef struct _EFI_EAP_MANAGEMENT_PROTOCOL EFI_EAP_MANAGEMENT_PROTOCOL; |
| |
| /// |
| /// PAE Capabilities |
| /// |
| ///@{ |
| #define PAE_SUPPORT_AUTHENTICATOR 0x01 |
| #define PAE_SUPPORT_SUPPLICANT 0x02 |
| ///@} |
| |
| /// |
| /// EFI_EAPOL_PORT_INFO |
| /// |
| typedef struct _EFI_EAPOL_PORT_INFO { |
| /// |
| /// The identification number assigned to the Port by the System in |
| /// which the Port resides. |
| /// |
| EFI_PORT_HANDLE PortNumber; |
| /// |
| /// The protocol version number of the EAPOL implementation |
| /// supported by the Port. |
| /// |
| UINT8 ProtocolVersion; |
| /// |
| /// The capabilities of the PAE associated with the Port. This field |
| /// indicates whether Authenticator functionality, Supplicant |
| /// functionality, both, or neither, is supported by the Port's PAE. |
| /// |
| UINT8 PaeCapabilities; |
| } EFI_EAPOL_PORT_INFO; |
| |
| /// |
| /// Supplicant PAE state machine (IEEE Std 802.1X Section 8.5.10) |
| /// |
| typedef enum _EFI_EAPOL_SUPPLICANT_PAE_STATE { |
| Logoff, |
| Disconnected, |
| Connecting, |
| Acquired, |
| Authenticating, |
| Held, |
| Authenticated, |
| MaxSupplicantPaeState |
| } EFI_EAPOL_SUPPLICANT_PAE_STATE; |
| |
| /// |
| /// Definitions for ValidFieldMask |
| /// |
| ///@{ |
| #define AUTH_PERIOD_FIELD_VALID 0x01 |
| #define HELD_PERIOD_FIELD_VALID 0x02 |
| #define START_PERIOD_FIELD_VALID 0x04 |
| #define MAX_START_FIELD_VALID 0x08 |
| ///@} |
| |
| /// |
| /// EFI_EAPOL_SUPPLICANT_PAE_CONFIGURATION |
| /// |
| typedef struct _EFI_EAPOL_SUPPLICANT_PAE_CONFIGURATION { |
| /// |
| /// Indicates which of the following fields are valid. |
| /// |
| UINT8 ValidFieldMask; |
| /// |
| /// The initial value for the authWhile timer. Its default value is 30s. |
| /// |
| UINTN AuthPeriod; |
| /// |
| /// The initial value for the heldWhile timer. Its default value is 60s. |
| /// |
| UINTN HeldPeriod; |
| /// |
| /// The initial value for the startWhen timer. Its default value is 30s. |
| /// |
| UINTN StartPeriod; |
| /// |
| /// The maximum number of successive EAPOL-Start messages will |
| /// be sent before the Supplicant assumes that there is no |
| /// Authenticator present. Its default value is 3. |
| /// |
| UINTN MaxStart; |
| } EFI_EAPOL_SUPPLICANT_PAE_CONFIGURATION; |
| |
| /// |
| /// Supplicant Statistics (IEEE Std 802.1X Section 9.5.2) |
| /// |
| typedef struct _EFI_EAPOL_SUPPLICANT_PAE_STATISTICS { |
| /// |
| /// The number of EAPOL frames of any type that have been received by this Supplican. |
| /// |
| UINTN EapolFramesReceived; |
| /// |
| /// The number of EAPOL frames of any type that have been transmitted by this Supplicant. |
| /// |
| UINTN EapolFramesTransmitted; |
| /// |
| /// The number of EAPOL Start frames that have been transmitted by this Supplicant. |
| /// |
| UINTN EapolStartFramesTransmitted; |
| /// |
| /// The number of EAPOL Logoff frames that have been transmitted by this Supplicant. |
| /// |
| UINTN EapolLogoffFramesTransmitted; |
| /// |
| /// The number of EAP Resp/Id frames that have been transmitted by this Supplicant. |
| /// |
| UINTN EapRespIdFramesTransmitted; |
| /// |
| /// The number of valid EAP Response frames (other than Resp/Id frames) that have been |
| /// transmitted by this Supplicant. |
| /// |
| UINTN EapResponseFramesTransmitted; |
| /// |
| /// The number of EAP Req/Id frames that have been received by this Supplicant. |
| /// |
| UINTN EapReqIdFramesReceived; |
| /// |
| /// The number of EAP Request frames (other than Rq/Id frames) that have been received |
| /// by this Supplicant. |
| /// |
| UINTN EapRequestFramesReceived; |
| /// |
| /// The number of EAPOL frames that have been received by this Supplicant in which the |
| /// frame type is not recognized. |
| /// |
| UINTN InvalidEapolFramesReceived; |
| /// |
| /// The number of EAPOL frames that have been received by this Supplicant in which the |
| /// Packet Body Length field (7.5.5) is invalid. |
| /// |
| UINTN EapLengthErrorFramesReceived; |
| /// |
| /// The protocol version number carried in the most recently received EAPOL frame. |
| /// |
| UINTN LastEapolFrameVersion; |
| /// |
| /// The source MAC address carried in the most recently received EAPOL frame. |
| /// |
| UINTN LastEapolFrameSource; |
| } EFI_EAPOL_SUPPLICANT_PAE_STATISTICS; |
| |
| /** |
| Read the system configuration information associated with the Port. |
| |
| The GetSystemConfiguration() function reads the system configuration |
| information associated with the Port, including the value of the |
| SystemAuthControl parameter of the System is returned in SystemAuthControl |
| and the Port's information is returned in the buffer pointed to by PortInfo. |
| The Port's information is optional. |
| If PortInfo is NULL, then reading the Port's information is ignored. |
| |
| If SystemAuthControl is NULL, then EFI_INVALID_PARAMETER is returned. |
| |
| @param[in] This A pointer to the EFI_EAP_MANAGEMENT_PROTOCOL |
| instance that indicates the calling context. |
| @param[out] SystemAuthControl Returns the value of the SystemAuthControl |
| parameter of the System. |
| TRUE means Enabled. FALSE means Disabled. |
| @param[out] PortInfo Returns EFI_EAPOL_PORT_INFO structure to describe |
| the Port's information. This parameter can be NULL |
| to ignore reading the Port's information. |
| |
| @retval EFI_SUCCESS The system configuration information of the |
| Port is read successfully. |
| @retval EFI_INVALID_PARAMETER SystemAuthControl is NULL. |
| |
| |
| **/ |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_EAP_GET_SYSTEM_CONFIGURATION)( |
| IN EFI_EAP_MANAGEMENT_PROTOCOL *This, |
| OUT BOOLEAN *SystemAuthControl, |
| OUT EFI_EAPOL_PORT_INFO *PortInfo OPTIONAL |
| ); |
| |
| /** |
| Set the system configuration information associated with the Port. |
| |
| The SetSystemConfiguration() function sets the value of the SystemAuthControl |
| parameter of the System to SystemAuthControl. |
| |
| @param[in] This A pointer to the EFI_EAP_MANAGEMENT_PROTOCOL |
| instance that indicates the calling context. |
| @param[in] SystemAuthControl The desired value of the SystemAuthControl |
| parameter of the System. |
| TRUE means Enabled. FALSE means Disabled. |
| |
| @retval EFI_SUCCESS The system configuration information of the |
| Port is set successfully. |
| |
| **/ |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_EAP_SET_SYSTEM_CONFIGURATION)( |
| IN EFI_EAP_MANAGEMENT_PROTOCOL *This, |
| IN BOOLEAN SystemAuthControl |
| ); |
| |
| /** |
| Cause the EAPOL state machines for the Port to be initialized. |
| |
| The InitializePort() function causes the EAPOL state machines for the Port. |
| |
| @param[in] This A pointer to the EFI_EAP_MANAGEMENT_PROTOCOL |
| instance that indicates the calling context. |
| |
| @retval EFI_SUCCESS The Port is initialized successfully. |
| |
| **/ |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_EAP_INITIALIZE_PORT)( |
| IN EFI_EAP_MANAGEMENT_PROTOCOL *This |
| ); |
| |
| /** |
| Notify the EAPOL state machines for the Port that the user of the System has |
| logged on. |
| |
| The UserLogon() function notifies the EAPOL state machines for the Port. |
| |
| @param[in] This A pointer to the EFI_EAP_MANAGEMENT_PROTOCOL |
| instance that indicates the calling context. |
| |
| @retval EFI_SUCCESS The Port is notified successfully. |
| |
| **/ |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_EAP_USER_LOGON)( |
| IN EFI_EAP_MANAGEMENT_PROTOCOL *This |
| ); |
| |
| /** |
| Notify the EAPOL state machines for the Port that the user of the System has |
| logged off. |
| |
| The UserLogoff() function notifies the EAPOL state machines for the Port. |
| |
| @param[in] This A pointer to the EFI_EAP_MANAGEMENT_PROTOCOL |
| instance that indicates the calling context. |
| |
| @retval EFI_SUCCESS The Port is notified successfully. |
| |
| **/ |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_EAP_USER_LOGOFF)( |
| IN EFI_EAP_MANAGEMENT_PROTOCOL *This |
| ); |
| |
| /** |
| Read the status of the Supplicant PAE state machine for the Port, including the |
| current state and the configuration of the operational parameters. |
| |
| The GetSupplicantStatus() function reads the status of the Supplicant PAE state |
| machine for the Port, including the current state CurrentState and the configuration |
| of the operational parameters Configuration. The configuration of the operational |
| parameters is optional. If Configuration is NULL, then reading the configuration |
| is ignored. The operational parameters in Configuration to be read can also be |
| specified by Configuration.ValidFieldMask. |
| |
| If CurrentState is NULL, then EFI_INVALID_PARAMETER is returned. |
| |
| @param[in] This A pointer to the EFI_EAP_MANAGEMENT_PROTOCOL |
| instance that indicates the calling context. |
| @param[out] CurrentState Returns the current state of the Supplicant PAE |
| state machine for the Port. |
| @param[in, out] Configuration Returns the configuration of the operational |
| parameters of the Supplicant PAE state machine |
| for the Port as required. This parameter can be |
| NULL to ignore reading the configuration. |
| On input, Configuration.ValidFieldMask specifies the |
| operational parameters to be read. |
| On output, Configuration returns the configuration |
| of the required operational parameters. |
| |
| @retval EFI_SUCCESS The configuration of the operational parameter |
| of the Supplicant PAE state machine for the Port |
| is set successfully. |
| @retval EFI_INVALID_PARAMETER CurrentState is NULL. |
| |
| **/ |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_EAP_GET_SUPPLICANT_STATUS)( |
| IN EFI_EAP_MANAGEMENT_PROTOCOL *This, |
| OUT EFI_EAPOL_SUPPLICANT_PAE_STATE *CurrentState, |
| IN OUT EFI_EAPOL_SUPPLICANT_PAE_CONFIGURATION *Configuration OPTIONAL |
| ); |
| |
| /** |
| Set the configuration of the operational parameter of the Supplicant PAE |
| state machine for the Port. |
| |
| The SetSupplicantConfiguration() function sets the configuration of the |
| operational Parameter of the Supplicant PAE state machine for the Port to |
| Configuration. The operational parameters in Configuration to be set can be |
| specified by Configuration.ValidFieldMask. |
| |
| If Configuration is NULL, then EFI_INVALID_PARAMETER is returned. |
| |
| @param[in] This A pointer to the EFI_EAP_MANAGEMENT_PROTOCOL |
| instance that indicates the calling context. |
| @param[in] Configuration The desired configuration of the operational |
| parameters of the Supplicant PAE state machine |
| for the Port as required. |
| |
| @retval EFI_SUCCESS The configuration of the operational parameter |
| of the Supplicant PAE state machine for the Port |
| is set successfully. |
| @retval EFI_INVALID_PARAMETER Configuration is NULL. |
| |
| **/ |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_EAP_SET_SUPPLICANT_CONFIGURATION)( |
| IN EFI_EAP_MANAGEMENT_PROTOCOL *This, |
| IN EFI_EAPOL_SUPPLICANT_PAE_CONFIGURATION *Configuration |
| ); |
| |
| /** |
| Read the statistical information regarding the operation of the Supplicant |
| associated with the Port. |
| |
| The GetSupplicantStatistics() function reads the statistical information |
| Statistics regarding the operation of the Supplicant associated with the Port. |
| |
| If Statistics is NULL, then EFI_INVALID_PARAMETER is returned. |
| |
| @param[in] This A pointer to the EFI_EAP_MANAGEMENT_PROTOCOL |
| instance that indicates the calling context. |
| @param[out] Statistics Returns the statistical information regarding the |
| operation of the Supplicant for the Port. |
| |
| @retval EFI_SUCCESS The statistical information regarding the operation |
| of the Supplicant for the Port is read successfully. |
| @retval EFI_INVALID_PARAMETER Statistics is NULL. |
| |
| **/ |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_EAP_GET_SUPPLICANT_STATISTICS)( |
| IN EFI_EAP_MANAGEMENT_PROTOCOL *This, |
| OUT EFI_EAPOL_SUPPLICANT_PAE_STATISTICS *Statistics |
| ); |
| |
| /// |
| /// EFI_EAP_MANAGEMENT_PROTOCOL |
| /// is used to control, configure and monitor EAPOL state machine on |
| /// a Port. EAPOL state machine is built on a per-Port basis. Herein, |
| /// a Port means a NIC. For the details of EAPOL, please refer to |
| /// IEEE 802.1x specification. |
| /// |
| struct _EFI_EAP_MANAGEMENT_PROTOCOL { |
| EFI_EAP_GET_SYSTEM_CONFIGURATION GetSystemConfiguration; |
| EFI_EAP_SET_SYSTEM_CONFIGURATION SetSystemConfiguration; |
| EFI_EAP_INITIALIZE_PORT InitializePort; |
| EFI_EAP_USER_LOGON UserLogon; |
| EFI_EAP_USER_LOGOFF UserLogoff; |
| EFI_EAP_GET_SUPPLICANT_STATUS GetSupplicantStatus; |
| EFI_EAP_SET_SUPPLICANT_CONFIGURATION SetSupplicantConfiguration; |
| EFI_EAP_GET_SUPPLICANT_STATISTICS GetSupplicantStatistics; |
| }; |
| |
| extern EFI_GUID gEfiEapManagementProtocolGuid; |
| |
| #endif |