/** @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 |