]> git.proxmox.com Git - mirror_edk2.git/blob - MdePkg/Include/Protocol/EapManagement.h
UefiCpuPkg: Move AsmRelocateApLoopStart from Mpfuncs.nasm to AmdSev.nasm
[mirror_edk2.git] / MdePkg / Include / Protocol / EapManagement.h
1 /** @file
2 EFI EAP Management Protocol Definition
3 The EFI EAP Management Protocol is designed to provide ease of management and
4 ease of test for EAPOL state machine. It is intended for the supplicant side.
5 It conforms to IEEE 802.1x specification.
6 The definitions in this file are defined in UEFI Specification 2.2, which have
7 not been verified by one implementation yet.
8
9 Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR>
10 SPDX-License-Identifier: BSD-2-Clause-Patent
11
12 @par Revision Reference:
13 This Protocol is introduced in UEFI Specification 2.2
14
15 **/
16
17 #ifndef __EFI_EAP_MANAGEMENT_PROTOCOL_H__
18 #define __EFI_EAP_MANAGEMENT_PROTOCOL_H__
19
20 #include <Protocol/Eap.h>
21
22 #define EFI_EAP_MANAGEMENT_PROTOCOL_GUID \
23 { \
24 0xbb62e663, 0x625d, 0x40b2, {0xa0, 0x88, 0xbb, 0xe8, 0x36, 0x23, 0xa2, 0x45 } \
25 }
26
27 typedef struct _EFI_EAP_MANAGEMENT_PROTOCOL EFI_EAP_MANAGEMENT_PROTOCOL;
28
29 ///
30 /// PAE Capabilities
31 ///
32 ///@{
33 #define PAE_SUPPORT_AUTHENTICATOR 0x01
34 #define PAE_SUPPORT_SUPPLICANT 0x02
35 ///@}
36
37 ///
38 /// EFI_EAPOL_PORT_INFO
39 ///
40 typedef struct _EFI_EAPOL_PORT_INFO {
41 ///
42 /// The identification number assigned to the Port by the System in
43 /// which the Port resides.
44 ///
45 EFI_PORT_HANDLE PortNumber;
46 ///
47 /// The protocol version number of the EAPOL implementation
48 /// supported by the Port.
49 ///
50 UINT8 ProtocolVersion;
51 ///
52 /// The capabilities of the PAE associated with the Port. This field
53 /// indicates whether Authenticator functionality, Supplicant
54 /// functionality, both, or neither, is supported by the Port's PAE.
55 ///
56 UINT8 PaeCapabilities;
57 } EFI_EAPOL_PORT_INFO;
58
59 ///
60 /// Supplicant PAE state machine (IEEE Std 802.1X Section 8.5.10)
61 ///
62 typedef enum _EFI_EAPOL_SUPPLICANT_PAE_STATE {
63 Logoff,
64 Disconnected,
65 Connecting,
66 Acquired,
67 Authenticating,
68 Held,
69 Authenticated,
70 MaxSupplicantPaeState
71 } EFI_EAPOL_SUPPLICANT_PAE_STATE;
72
73 ///
74 /// Definitions for ValidFieldMask
75 ///
76 ///@{
77 #define AUTH_PERIOD_FIELD_VALID 0x01
78 #define HELD_PERIOD_FIELD_VALID 0x02
79 #define START_PERIOD_FIELD_VALID 0x04
80 #define MAX_START_FIELD_VALID 0x08
81 ///@}
82
83 ///
84 /// EFI_EAPOL_SUPPLICANT_PAE_CONFIGURATION
85 ///
86 typedef struct _EFI_EAPOL_SUPPLICANT_PAE_CONFIGURATION {
87 ///
88 /// Indicates which of the following fields are valid.
89 ///
90 UINT8 ValidFieldMask;
91 ///
92 /// The initial value for the authWhile timer. Its default value is 30s.
93 ///
94 UINTN AuthPeriod;
95 ///
96 /// The initial value for the heldWhile timer. Its default value is 60s.
97 ///
98 UINTN HeldPeriod;
99 ///
100 /// The initial value for the startWhen timer. Its default value is 30s.
101 ///
102 UINTN StartPeriod;
103 ///
104 /// The maximum number of successive EAPOL-Start messages will
105 /// be sent before the Supplicant assumes that there is no
106 /// Authenticator present. Its default value is 3.
107 ///
108 UINTN MaxStart;
109 } EFI_EAPOL_SUPPLICANT_PAE_CONFIGURATION;
110
111 ///
112 /// Supplicant Statistics (IEEE Std 802.1X Section 9.5.2)
113 ///
114 typedef struct _EFI_EAPOL_SUPPLICANT_PAE_STATISTICS {
115 ///
116 /// The number of EAPOL frames of any type that have been received by this Supplican.
117 ///
118 UINTN EapolFramesReceived;
119 ///
120 /// The number of EAPOL frames of any type that have been transmitted by this Supplicant.
121 ///
122 UINTN EapolFramesTransmitted;
123 ///
124 /// The number of EAPOL Start frames that have been transmitted by this Supplicant.
125 ///
126 UINTN EapolStartFramesTransmitted;
127 ///
128 /// The number of EAPOL Logoff frames that have been transmitted by this Supplicant.
129 ///
130 UINTN EapolLogoffFramesTransmitted;
131 ///
132 /// The number of EAP Resp/Id frames that have been transmitted by this Supplicant.
133 ///
134 UINTN EapRespIdFramesTransmitted;
135 ///
136 /// The number of valid EAP Response frames (other than Resp/Id frames) that have been
137 /// transmitted by this Supplicant.
138 ///
139 UINTN EapResponseFramesTransmitted;
140 ///
141 /// The number of EAP Req/Id frames that have been received by this Supplicant.
142 ///
143 UINTN EapReqIdFramesReceived;
144 ///
145 /// The number of EAP Request frames (other than Rq/Id frames) that have been received
146 /// by this Supplicant.
147 ///
148 UINTN EapRequestFramesReceived;
149 ///
150 /// The number of EAPOL frames that have been received by this Supplicant in which the
151 /// frame type is not recognized.
152 ///
153 UINTN InvalidEapolFramesReceived;
154 ///
155 /// The number of EAPOL frames that have been received by this Supplicant in which the
156 /// Packet Body Length field (7.5.5) is invalid.
157 ///
158 UINTN EapLengthErrorFramesReceived;
159 ///
160 /// The protocol version number carried in the most recently received EAPOL frame.
161 ///
162 UINTN LastEapolFrameVersion;
163 ///
164 /// The source MAC address carried in the most recently received EAPOL frame.
165 ///
166 UINTN LastEapolFrameSource;
167 } EFI_EAPOL_SUPPLICANT_PAE_STATISTICS;
168
169 /**
170 Read the system configuration information associated with the Port.
171
172 The GetSystemConfiguration() function reads the system configuration
173 information associated with the Port, including the value of the
174 SystemAuthControl parameter of the System is returned in SystemAuthControl
175 and the Port's information is returned in the buffer pointed to by PortInfo.
176 The Port's information is optional.
177 If PortInfo is NULL, then reading the Port's information is ignored.
178
179 If SystemAuthControl is NULL, then EFI_INVALID_PARAMETER is returned.
180
181 @param[in] This A pointer to the EFI_EAP_MANAGEMENT_PROTOCOL
182 instance that indicates the calling context.
183 @param[out] SystemAuthControl Returns the value of the SystemAuthControl
184 parameter of the System.
185 TRUE means Enabled. FALSE means Disabled.
186 @param[out] PortInfo Returns EFI_EAPOL_PORT_INFO structure to describe
187 the Port's information. This parameter can be NULL
188 to ignore reading the Port's information.
189
190 @retval EFI_SUCCESS The system configuration information of the
191 Port is read successfully.
192 @retval EFI_INVALID_PARAMETER SystemAuthControl is NULL.
193
194
195 **/
196 typedef
197 EFI_STATUS
198 (EFIAPI *EFI_EAP_GET_SYSTEM_CONFIGURATION)(
199 IN EFI_EAP_MANAGEMENT_PROTOCOL *This,
200 OUT BOOLEAN *SystemAuthControl,
201 OUT EFI_EAPOL_PORT_INFO *PortInfo OPTIONAL
202 );
203
204 /**
205 Set the system configuration information associated with the Port.
206
207 The SetSystemConfiguration() function sets the value of the SystemAuthControl
208 parameter of the System to SystemAuthControl.
209
210 @param[in] This A pointer to the EFI_EAP_MANAGEMENT_PROTOCOL
211 instance that indicates the calling context.
212 @param[in] SystemAuthControl The desired value of the SystemAuthControl
213 parameter of the System.
214 TRUE means Enabled. FALSE means Disabled.
215
216 @retval EFI_SUCCESS The system configuration information of the
217 Port is set successfully.
218
219 **/
220 typedef
221 EFI_STATUS
222 (EFIAPI *EFI_EAP_SET_SYSTEM_CONFIGURATION)(
223 IN EFI_EAP_MANAGEMENT_PROTOCOL *This,
224 IN BOOLEAN SystemAuthControl
225 );
226
227 /**
228 Cause the EAPOL state machines for the Port to be initialized.
229
230 The InitializePort() function causes the EAPOL state machines for the Port.
231
232 @param[in] This A pointer to the EFI_EAP_MANAGEMENT_PROTOCOL
233 instance that indicates the calling context.
234
235 @retval EFI_SUCCESS The Port is initialized successfully.
236
237 **/
238 typedef
239 EFI_STATUS
240 (EFIAPI *EFI_EAP_INITIALIZE_PORT)(
241 IN EFI_EAP_MANAGEMENT_PROTOCOL *This
242 );
243
244 /**
245 Notify the EAPOL state machines for the Port that the user of the System has
246 logged on.
247
248 The UserLogon() function notifies the EAPOL state machines for the Port.
249
250 @param[in] This A pointer to the EFI_EAP_MANAGEMENT_PROTOCOL
251 instance that indicates the calling context.
252
253 @retval EFI_SUCCESS The Port is notified successfully.
254
255 **/
256 typedef
257 EFI_STATUS
258 (EFIAPI *EFI_EAP_USER_LOGON)(
259 IN EFI_EAP_MANAGEMENT_PROTOCOL *This
260 );
261
262 /**
263 Notify the EAPOL state machines for the Port that the user of the System has
264 logged off.
265
266 The UserLogoff() function notifies the EAPOL state machines for the Port.
267
268 @param[in] This A pointer to the EFI_EAP_MANAGEMENT_PROTOCOL
269 instance that indicates the calling context.
270
271 @retval EFI_SUCCESS The Port is notified successfully.
272
273 **/
274 typedef
275 EFI_STATUS
276 (EFIAPI *EFI_EAP_USER_LOGOFF)(
277 IN EFI_EAP_MANAGEMENT_PROTOCOL *This
278 );
279
280 /**
281 Read the status of the Supplicant PAE state machine for the Port, including the
282 current state and the configuration of the operational parameters.
283
284 The GetSupplicantStatus() function reads the status of the Supplicant PAE state
285 machine for the Port, including the current state CurrentState and the configuration
286 of the operational parameters Configuration. The configuration of the operational
287 parameters is optional. If Configuration is NULL, then reading the configuration
288 is ignored. The operational parameters in Configuration to be read can also be
289 specified by Configuration.ValidFieldMask.
290
291 If CurrentState is NULL, then EFI_INVALID_PARAMETER is returned.
292
293 @param[in] This A pointer to the EFI_EAP_MANAGEMENT_PROTOCOL
294 instance that indicates the calling context.
295 @param[out] CurrentState Returns the current state of the Supplicant PAE
296 state machine for the Port.
297 @param[in, out] Configuration Returns the configuration of the operational
298 parameters of the Supplicant PAE state machine
299 for the Port as required. This parameter can be
300 NULL to ignore reading the configuration.
301 On input, Configuration.ValidFieldMask specifies the
302 operational parameters to be read.
303 On output, Configuration returns the configuration
304 of the required operational parameters.
305
306 @retval EFI_SUCCESS The configuration of the operational parameter
307 of the Supplicant PAE state machine for the Port
308 is set successfully.
309 @retval EFI_INVALID_PARAMETER CurrentState is NULL.
310
311 **/
312 typedef
313 EFI_STATUS
314 (EFIAPI *EFI_EAP_GET_SUPPLICANT_STATUS)(
315 IN EFI_EAP_MANAGEMENT_PROTOCOL *This,
316 OUT EFI_EAPOL_SUPPLICANT_PAE_STATE *CurrentState,
317 IN OUT EFI_EAPOL_SUPPLICANT_PAE_CONFIGURATION *Configuration OPTIONAL
318 );
319
320 /**
321 Set the configuration of the operational parameter of the Supplicant PAE
322 state machine for the Port.
323
324 The SetSupplicantConfiguration() function sets the configuration of the
325 operational Parameter of the Supplicant PAE state machine for the Port to
326 Configuration. The operational parameters in Configuration to be set can be
327 specified by Configuration.ValidFieldMask.
328
329 If Configuration is NULL, then EFI_INVALID_PARAMETER is returned.
330
331 @param[in] This A pointer to the EFI_EAP_MANAGEMENT_PROTOCOL
332 instance that indicates the calling context.
333 @param[in] Configuration The desired configuration of the operational
334 parameters of the Supplicant PAE state machine
335 for the Port as required.
336
337 @retval EFI_SUCCESS The configuration of the operational parameter
338 of the Supplicant PAE state machine for the Port
339 is set successfully.
340 @retval EFI_INVALID_PARAMETER Configuration is NULL.
341
342 **/
343 typedef
344 EFI_STATUS
345 (EFIAPI *EFI_EAP_SET_SUPPLICANT_CONFIGURATION)(
346 IN EFI_EAP_MANAGEMENT_PROTOCOL *This,
347 IN EFI_EAPOL_SUPPLICANT_PAE_CONFIGURATION *Configuration
348 );
349
350 /**
351 Read the statistical information regarding the operation of the Supplicant
352 associated with the Port.
353
354 The GetSupplicantStatistics() function reads the statistical information
355 Statistics regarding the operation of the Supplicant associated with the Port.
356
357 If Statistics is NULL, then EFI_INVALID_PARAMETER is returned.
358
359 @param[in] This A pointer to the EFI_EAP_MANAGEMENT_PROTOCOL
360 instance that indicates the calling context.
361 @param[out] Statistics Returns the statistical information regarding the
362 operation of the Supplicant for the Port.
363
364 @retval EFI_SUCCESS The statistical information regarding the operation
365 of the Supplicant for the Port is read successfully.
366 @retval EFI_INVALID_PARAMETER Statistics is NULL.
367
368 **/
369 typedef
370 EFI_STATUS
371 (EFIAPI *EFI_EAP_GET_SUPPLICANT_STATISTICS)(
372 IN EFI_EAP_MANAGEMENT_PROTOCOL *This,
373 OUT EFI_EAPOL_SUPPLICANT_PAE_STATISTICS *Statistics
374 );
375
376 ///
377 /// EFI_EAP_MANAGEMENT_PROTOCOL
378 /// is used to control, configure and monitor EAPOL state machine on
379 /// a Port. EAPOL state machine is built on a per-Port basis. Herein,
380 /// a Port means a NIC. For the details of EAPOL, please refer to
381 /// IEEE 802.1x specification.
382 ///
383 struct _EFI_EAP_MANAGEMENT_PROTOCOL {
384 EFI_EAP_GET_SYSTEM_CONFIGURATION GetSystemConfiguration;
385 EFI_EAP_SET_SYSTEM_CONFIGURATION SetSystemConfiguration;
386 EFI_EAP_INITIALIZE_PORT InitializePort;
387 EFI_EAP_USER_LOGON UserLogon;
388 EFI_EAP_USER_LOGOFF UserLogoff;
389 EFI_EAP_GET_SUPPLICANT_STATUS GetSupplicantStatus;
390 EFI_EAP_SET_SUPPLICANT_CONFIGURATION SetSupplicantConfiguration;
391 EFI_EAP_GET_SUPPLICANT_STATISTICS GetSupplicantStatistics;
392 };
393
394 extern EFI_GUID gEfiEapManagementProtocolGuid;
395
396 #endif