git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@10403 6f19259b-4bc3-4df7-8a09-765794883524
		
			
				
	
	
		
			404 lines
		
	
	
		
			15 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			404 lines
		
	
	
		
			15 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/** @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 - 2010, Intel Corporation. All rights reserved.<BR>
 | 
						|
  This program and the accompanying materials
 | 
						|
  are licensed and made available under the terms and conditions of the BSD License
 | 
						|
  which accompanies this distribution.  The full text of the license may be found at
 | 
						|
  http://opensource.org/licenses/bsd-license.php
 | 
						|
 | 
						|
  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
 | 
						|
  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 | 
						|
 | 
						|
  @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
 | 
						|
 |