]> git.proxmox.com Git - mirror_edk2.git/blame - MdeModulePkg/Universal/Network/UefiPxeBcDxe/PxeBcDhcp.h
MdeModulePkg: Clean up source files
[mirror_edk2.git] / MdeModulePkg / Universal / Network / UefiPxeBcDxe / PxeBcDhcp.h
CommitLineData
30368135 1/** @file\r
f737cfb9 2 Dhcp and Discover routines for PxeBc.\r
30368135 3\r
e3cf3c20 4Copyright (c) 2013, Red Hat, Inc.\r
d1102dba 5Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>\r
e5eed7d3 6This program and the accompanying materials\r
30368135 7are licensed and made available under the terms and conditions of the BSD License\r
8which accompanies this distribution. The full text of the license may be found at\r
9http://opensource.org/licenses/bsd-license.php\r
10\r
11THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
12WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
13\r
30368135 14**/\r
15\r
16#ifndef __EFI_PXEBC_DHCP_H__\r
17#define __EFI_PXEBC_DHCP_H__\r
18\r
f6b7393c 19#define PXEBC_DHCP4_MAX_OPTION_NUM 16\r
20#define PXEBC_DHCP4_MAX_OPTION_SIZE 312\r
4f6b33b4 21#define PXEBC_DHCP4_MAX_PACKET_SIZE (sizeof (EFI_PXE_BASE_CODE_PACKET))\r
f6b7393c 22\r
23#define PXEBC_DHCP4_S_PORT 67\r
24#define PXEBC_DHCP4_C_PORT 68\r
25#define PXEBC_BS_DOWNLOAD_PORT 69\r
26#define PXEBC_BS_DISCOVER_PORT 4011\r
27\r
28#define PXEBC_DHCP4_OPCODE_REQUEST 1\r
29#define PXEBC_DHCP4_OPCODE_REPLY 2\r
30#define PXEBC_DHCP4_MSG_TYPE_REQUEST 3\r
31#define PXEBC_DHCP4_MAGIC 0x63538263 // network byte order\r
ac6c3d90 32\r
f6b7393c 33//\r
34// Sub-Options in Dhcp Vendor Option\r
35//\r
36#define PXEBC_VENDOR_TAG_MTFTP_IP 1\r
37#define PXEBC_VENDOR_TAG_MTFTP_CPORT 2\r
38#define PXEBC_VENDOR_TAG_MTFTP_SPORT 3\r
39#define PXEBC_VENDOR_TAG_MTFTP_TIMEOUT 4\r
40#define PXEBC_VENDOR_TAG_MTFTP_DELAY 5\r
41#define PXEBC_VENDOR_TAG_DISCOVER_CTRL 6\r
42#define PXEBC_VENDOR_TAG_DISCOVER_MCAST 7\r
43#define PXEBC_VENDOR_TAG_BOOT_SERVERS 8\r
44#define PXEBC_VENDOR_TAG_BOOT_MENU 9\r
45#define PXEBC_VENDOR_TAG_MENU_PROMPT 10\r
46#define PXEBC_VENDOR_TAG_MCAST_ALLOC 11\r
47#define PXEBC_VENDOR_TAG_CREDENTIAL_TYPES 12\r
48#define PXEBC_VENDOR_TAG_BOOT_ITEM 71\r
49\r
50#define PXEBC_DHCP4_DISCOVER_INIT_TIMEOUT 4\r
51#define PXEBC_DHCP4_DISCOVER_RETRIES 4\r
52\r
53#define PXEBC_MAX_MENU_NUM 24\r
54#define PXEBC_MAX_OFFER_NUM 16\r
55\r
56#define PXEBC_BOOT_REQUEST_TIMEOUT 1\r
57#define PXEBC_BOOT_REQUEST_RETRIES 4\r
58\r
59#define PXEBC_DHCP4_OVERLOAD_FILE 1\r
60#define PXEBC_DHCP4_OVERLOAD_SERVER_NAME 2\r
30368135 61\r
62//\r
63// The array index of the DHCP4 option tag interested\r
64//\r
f6b7393c 65#define PXEBC_DHCP4_TAG_INDEX_BOOTFILE_LEN 0\r
66#define PXEBC_DHCP4_TAG_INDEX_VENDOR 1\r
67#define PXEBC_DHCP4_TAG_INDEX_OVERLOAD 2\r
68#define PXEBC_DHCP4_TAG_INDEX_MSG_TYPE 3\r
69#define PXEBC_DHCP4_TAG_INDEX_SERVER_ID 4\r
70#define PXEBC_DHCP4_TAG_INDEX_CLASS_ID 5\r
71#define PXEBC_DHCP4_TAG_INDEX_BOOTFILE 6\r
72#define PXEBC_DHCP4_TAG_INDEX_MAX 7\r
30368135 73\r
74//\r
75// The type of DHCP OFFER, arranged by priority, PXE10 has the highest priority.\r
76//\r
f6b7393c 77#define DHCP4_PACKET_TYPE_PXE10 0\r
78#define DHCP4_PACKET_TYPE_WFM11A 1\r
79#define DHCP4_PACKET_TYPE_BINL 2\r
80#define DHCP4_PACKET_TYPE_DHCP_ONLY 3\r
379db4ac 81#define DHCP4_PACKET_TYPE_BOOTP 4\r
82#define DHCP4_PACKET_TYPE_MAX 5\r
30368135 83\r
84#define BIT(x) (1 << x)\r
85#define CTRL(x) (0x1F & (x))\r
86\r
87//\r
88// WfM11a options\r
89//\r
90#define MTFTP_VENDOR_OPTION_BIT_MAP (BIT (PXEBC_VENDOR_TAG_MTFTP_IP) | \\r
91 BIT (PXEBC_VENDOR_TAG_MTFTP_CPORT) | \\r
92 BIT (PXEBC_VENDOR_TAG_MTFTP_SPORT) | \\r
93 BIT (PXEBC_VENDOR_TAG_MTFTP_TIMEOUT) | \\r
94 BIT (PXEBC_VENDOR_TAG_MTFTP_DELAY))\r
95//\r
96// Discoverty options\r
97//\r
98#define DISCOVER_VENDOR_OPTION_BIT_MAP (BIT (PXEBC_VENDOR_TAG_DISCOVER_CTRL) | \\r
99 BIT (PXEBC_VENDOR_TAG_DISCOVER_MCAST) | \\r
100 BIT (PXEBC_VENDOR_TAG_BOOT_SERVERS) | \\r
101 BIT (PXEBC_VENDOR_TAG_BOOT_MENU) | \\r
102 BIT (PXEBC_VENDOR_TAG_MENU_PROMPT))\r
103\r
104#define IS_VALID_BOOT_PROMPT(x) \\r
105 ((((x)[0]) & BIT (PXEBC_VENDOR_TAG_MENU_PROMPT)) == BIT (PXEBC_VENDOR_TAG_MENU_PROMPT))\r
106\r
107#define IS_VALID_BOOT_MENU(x) \\r
108 ((((x)[0]) & BIT (PXEBC_VENDOR_TAG_BOOT_MENU)) == BIT (PXEBC_VENDOR_TAG_BOOT_MENU))\r
109\r
110#define IS_VALID_MTFTP_VENDOR_OPTION(x) \\r
111 (((UINT32) ((x)[0]) & MTFTP_VENDOR_OPTION_BIT_MAP) == MTFTP_VENDOR_OPTION_BIT_MAP)\r
112\r
113#define IS_VALID_DISCOVER_VENDOR_OPTION(x) (((UINT32) ((x)[0]) & DISCOVER_VENDOR_OPTION_BIT_MAP) != 0)\r
114\r
115#define IS_VALID_CREDENTIAL_VENDOR_OPTION(x) \\r
116 (((UINT32) ((x)[0]) & BIT (PXEBC_VENDOR_TAG_CREDENTIAL_TYPES)) == BIT (PXEBC_VENDOR_TAG_CREDENTIAL_TYPES))\r
117\r
118#define IS_VALID_BOOTITEM_VENDOR_OPTION(x) \\r
119 (((UINT32) ((x)[PXEBC_VENDOR_TAG_BOOT_ITEM / 32]) & BIT (PXEBC_VENDOR_TAG_BOOT_ITEM % 32)) \\r
120 == BIT (PXEBC_VENDOR_TAG_BOOT_ITEM % 32))\r
121\r
122#define IS_DISABLE_BCAST_DISCOVER(x) (((x) & BIT (0)) == BIT (0))\r
123#define IS_DISABLE_MCAST_DISCOVER(x) (((x) & BIT (1)) == BIT (1))\r
124#define IS_ENABLE_USE_SERVER_LIST(x) (((x) & BIT (2)) == BIT (2))\r
30a95d4d 125#define IS_DISABLE_PROMPT_MENU(x) (((x) & BIT (3)) == BIT (3))\r
30368135 126\r
127#define SET_VENDOR_OPTION_BIT_MAP(x, y) (((x)[(y) / 32]) = (UINT32) ((x)[(y) / 32]) | BIT ((y) % 32))\r
128\r
129#pragma pack(1)\r
130typedef struct {\r
131 UINT8 ParaList[135];\r
132} PXEBC_DHCP4_OPTION_PARA;\r
133\r
134typedef struct {\r
135 UINT16 Size;\r
136} PXEBC_DHCP4_OPTION_MAX_MESG_SIZE;\r
137\r
138typedef struct {\r
139 UINT8 Type;\r
140 UINT8 MajorVer;\r
141 UINT8 MinorVer;\r
142} PXEBC_DHCP4_OPTION_UNDI;\r
143\r
144typedef struct {\r
145 UINT8 Type;\r
146} PXEBC_DHCP4_OPTION_MESG;\r
147\r
148typedef struct {\r
149 UINT16 Type;\r
150} PXEBC_DHCP4_OPTION_ARCH;\r
151\r
169a3461 152#define DEFAULT_CLASS_ID_DATA "PXEClient:Arch:xxxxx:UNDI:003000"\r
153#define DEFAULT_UNDI_TYPE 1\r
154#define DEFAULT_UNDI_MAJOR 3\r
155#define DEFAULT_UNDI_MINOR 0\r
30368135 156\r
157typedef struct {\r
158 UINT8 ClassIdentifier[10];\r
159 UINT8 ArchitecturePrefix[5];\r
160 UINT8 ArchitectureType[5];\r
161 UINT8 Lit3[1];\r
162 UINT8 InterfaceName[4];\r
163 UINT8 Lit4[1];\r
164 UINT8 UndiMajor[3];\r
165 UINT8 UndiMinor[3];\r
166} PXEBC_DHCP4_OPTION_CLID;\r
167\r
168typedef struct {\r
169 UINT8 Type;\r
170 UINT8 Guid[16];\r
171} PXEBC_DHCP4_OPTION_UUID;\r
172\r
173typedef struct {\r
174 UINT16 Type;\r
175 UINT16 Layer;\r
176} PXEBC_OPTION_BOOT_ITEM;\r
177\r
178#pragma pack()\r
179\r
180typedef union {\r
181 PXEBC_DHCP4_OPTION_PARA *Para;\r
182 PXEBC_DHCP4_OPTION_UNDI *Undi;\r
183 PXEBC_DHCP4_OPTION_ARCH *Arch;\r
184 PXEBC_DHCP4_OPTION_CLID *Clid;\r
185 PXEBC_DHCP4_OPTION_UUID *Uuid;\r
186 PXEBC_DHCP4_OPTION_MESG *Mesg;\r
187 PXEBC_DHCP4_OPTION_MAX_MESG_SIZE *MaxMesgSize;\r
188} PXEBC_DHCP4_OPTION_ENTRY;\r
189\r
190typedef struct {\r
191 UINT16 Type;\r
192 UINT8 IpCnt;\r
193 EFI_IPv4_ADDRESS IpAddr[1];\r
194} PXEBC_BOOT_SVR_ENTRY;\r
195\r
196typedef struct {\r
197 UINT16 Type;\r
198 UINT8 DescLen;\r
199 UINT8 DescStr[1];\r
200} PXEBC_BOOT_MENU_ENTRY;\r
201\r
202typedef struct {\r
203 UINT8 Timeout;\r
204 UINT8 Prompt[1];\r
205} PXEBC_MENU_PROMPT;\r
206\r
207typedef struct {\r
208 UINT32 BitMap[8];\r
209 EFI_IPv4_ADDRESS MtftpIp;\r
210 UINT16 MtftpCPort;\r
211 UINT16 MtftpSPort;\r
212 UINT8 MtftpTimeout;\r
213 UINT8 MtftpDelay;\r
214 UINT8 DiscoverCtrl;\r
215 EFI_IPv4_ADDRESS DiscoverMcastIp;\r
216 EFI_IPv4_ADDRESS McastIpBase;\r
217 UINT16 McastIpBlock;\r
218 UINT16 McastIpRange;\r
219 UINT16 BootSrvType;\r
220 UINT16 BootSrvLayer;\r
221 PXEBC_BOOT_SVR_ENTRY *BootSvr;\r
222 UINT8 BootSvrLen;\r
223 PXEBC_BOOT_MENU_ENTRY *BootMenu;\r
224 UINT8 BootMenuLen;\r
225 PXEBC_MENU_PROMPT *MenuPrompt;\r
226 UINT8 MenuPromptLen;\r
227 UINT32 *CredType;\r
228 UINT8 CredTypeLen;\r
229} PXEBC_VENDOR_OPTION;\r
230\r
f3f2e05d 231#define PXEBC_CACHED_DHCP4_PACKET_MAX_SIZE (OFFSET_OF (EFI_DHCP4_PACKET, Dhcp4) + PXEBC_DHCP4_MAX_PACKET_SIZE)\r
30368135 232\r
f6b7393c 233typedef union {\r
234 EFI_DHCP4_PACKET Offer;\r
235 EFI_DHCP4_PACKET Ack;\r
236 UINT8 Buffer[PXEBC_CACHED_DHCP4_PACKET_MAX_SIZE];\r
237} PXEBC_DHCP4_PACKET;\r
30368135 238\r
f6b7393c 239typedef struct {\r
240 PXEBC_DHCP4_PACKET Packet;\r
30368135 241 BOOLEAN IsPxeOffer;\r
242 UINT8 OfferType;\r
243 EFI_DHCP4_PACKET_OPTION *Dhcp4Option[PXEBC_DHCP4_TAG_INDEX_MAX];\r
244 PXEBC_VENDOR_OPTION PxeVendorOption;\r
245} PXEBC_CACHED_DHCP4_PACKET;\r
246\r
247#define GET_NEXT_DHCP_OPTION(Opt) \\r
248 (EFI_DHCP4_PACKET_OPTION *) ((UINT8 *) (Opt) + sizeof (EFI_DHCP4_PACKET_OPTION) + (Opt)->Length - 1)\r
249\r
250#define GET_OPTION_BUFFER_LEN(Pkt) ((Pkt)->Length - sizeof (EFI_DHCP4_HEADER) - 4)\r
251#define IS_PROXY_DHCP_OFFER(Offer) EFI_IP4_EQUAL (&((Offer)->Dhcp4.Header.YourAddr), &mZeroIp4Addr)\r
252\r
253#define GET_NEXT_BOOT_SVR_ENTRY(Ent) \\r
254 (PXEBC_BOOT_SVR_ENTRY *) ((UINT8 *) Ent + sizeof (*(Ent)) + ((Ent)->IpCnt - 1) * sizeof (EFI_IPv4_ADDRESS))\r
255\r
f737cfb9 256\r
257/**\r
258 This function initialize the DHCP4 message instance.\r
259\r
260 This function will pad each item of dhcp4 message packet.\r
d1102dba 261\r
f737cfb9 262 @param Seed Pointer to the message instance of the DHCP4 packet.\r
263 @param Udp4 Pointer to the EFI_UDP4_PROTOCOL instance.\r
264\r
f737cfb9 265**/\r
30368135 266VOID\r
267PxeBcInitSeedPacket (\r
268 IN EFI_DHCP4_PACKET *Seed,\r
269 IN EFI_UDP4_PROTOCOL *Udp4\r
d59b8b55 270 );\r
30368135 271\r
272\r
273/**\r
f737cfb9 274 Parse the cached dhcp packet.\r
30368135 275\r
f737cfb9 276 @param CachedPacket Pointer to cached dhcp packet.\r
30368135 277\r
d59b8b55 278 @retval TRUE Succeed to parse and validation.\r
f737cfb9 279 @retval FALSE Fail to parse or validation.\r
30368135 280\r
281**/\r
282BOOLEAN\r
283PxeBcParseCachedDhcpPacket (\r
284 IN PXEBC_CACHED_DHCP4_PACKET *CachedPacket\r
d59b8b55 285 );\r
30368135 286\r
30368135 287/**\r
d59b8b55 288 This function is to check the selected proxy offer (include BINL dhcp offer and\r
f737cfb9 289 DHCP_ONLY offer ) and set the flag and copy the DHCP packets to the Pxe base code\r
290 mode structure.\r
30368135 291\r
f737cfb9 292 @param Private Pointer to PxeBc private data.\r
30368135 293\r
471342bb
FS
294 @retval EFI_SUCCESS Operational successful.\r
295 @retval EFI_NO_RESPONSE Offer dhcp service failed.\r
296 @retval EFI_BUFFER_TOO_SMALL Failed to copy the packet to Pxe base code mode.\r
30368135 297\r
298**/\r
299EFI_STATUS\r
300PxeBcCheckSelectedOffer (\r
301 IN PXEBC_PRIVATE_DATA *Private\r
d59b8b55 302 );\r
30368135 303\r
304\r
305/**\r
f737cfb9 306 Callback routine.\r
d1102dba 307\r
f737cfb9 308 EFI_DHCP4_CALLBACK is provided by the consumer of the EFI DHCPv4 Protocol driver\r
309 to intercept events that occurred in the configuration process. This structure\r
310 provides advanced control of each state transition of the DHCP process. The\r
311 returned status code determines the behavior of the EFI DHCPv4 Protocol driver.\r
312 There are three possible returned values, which are described in the following\r
313 table.\r
314\r
315 @param This Pointer to the EFI DHCPv4 Protocol instance that is used to\r
316 configure this callback function.\r
317 @param Context Pointer to the context that is initialized by\r
318 EFI_DHCP4_PROTOCOL.Configure().\r
319 @param CurrentState The current operational state of the EFI DHCPv4 Protocol\r
320 driver.\r
321 @param Dhcp4Event The event that occurs in the current state, which usually means a\r
322 state transition.\r
323 @param Packet The DHCP packet that is going to be sent or already received.\r
324 @param NewPacket The packet that is used to replace the above Packet.\r
325\r
326 @retval EFI_SUCCESS Tells the EFI DHCPv4 Protocol driver to continue the DHCP process.\r
327 @retval EFI_NOT_READY Only used in the Dhcp4Selecting state. The EFI DHCPv4 Protocol\r
328 driver will continue to wait for more DHCPOFFER packets until the retry\r
329 timeout expires.\r
330 @retval EFI_ABORTED Tells the EFI DHCPv4 Protocol driver to abort the current process and\r
331 return to the Dhcp4Init or Dhcp4InitReboot state.\r
30368135 332\r
333**/\r
334EFI_STATUS\r
6d3ea23f 335EFIAPI\r
30368135 336PxeBcDhcpCallBack (\r
337 IN EFI_DHCP4_PROTOCOL * This,\r
338 IN VOID *Context,\r
339 IN EFI_DHCP4_STATE CurrentState,\r
340 IN EFI_DHCP4_EVENT Dhcp4Event,\r
341 IN EFI_DHCP4_PACKET * Packet OPTIONAL,\r
342 OUT EFI_DHCP4_PACKET **NewPacket OPTIONAL\r
d59b8b55 343 );\r
30368135 344\r
14e84fd8
ZL
345/**\r
346 Switch the Ip4 policy to static.\r
347\r
348 @param[in] Private The pointer to PXEBC_PRIVATE_DATA.\r
349\r
350 @retval EFI_SUCCESS The policy is already configured to static.\r
351 @retval Others Other error as indicated..\r
352\r
353**/\r
354EFI_STATUS\r
d1102dba 355PxeBcSetIp4Policy (\r
14e84fd8
ZL
356 IN PXEBC_PRIVATE_DATA *Private\r
357 );\r
30368135 358\r
359/**\r
f737cfb9 360 Discover the boot of service and initialize the vendor option if exists.\r
361\r
362 @param Private Pointer to PxeBc private data.\r
363 @param Type PxeBc option boot item type\r
364 @param Layer PxeBc option boot item layer\r
d59b8b55 365 @param UseBis Use BIS or not\r
d1102dba
LG
366 @param DestIp Ip address for server\r
367 @param IpCount The total count of the server ip address\r
d59b8b55 368 @param SrvList Server list\r
369 @param IsDiscv Discover the vendor or not\r
370 @param Reply The dhcp4 packet of Pxe reply\r
371\r
372 @retval EFI_SUCCESS Operation succeeds.\r
f737cfb9 373 @retval EFI_OUT_OF_RESOURCES Allocate memory pool failed.\r
374 @retval EFI_NOT_FOUND There is no vendor option exists.\r
d1102dba
LG
375 @retval EFI_TIMEOUT Send Pxe Discover time out.\r
376\r
30368135 377**/\r
378EFI_STATUS\r
379PxeBcDiscvBootService (\r
380 IN PXEBC_PRIVATE_DATA * Private,\r
381 IN UINT16 Type,\r
382 IN UINT16 *Layer,\r
383 IN BOOLEAN UseBis,\r
384 IN EFI_IP_ADDRESS * DestIp,\r
385 IN UINT16 IpCount,\r
386 IN EFI_PXE_BASE_CODE_SRVLIST * SrvList,\r
387 IN BOOLEAN IsDiscv,\r
388 OUT EFI_DHCP4_PACKET * Reply OPTIONAL\r
d59b8b55 389 );\r
30368135 390\r
391\r
392/**\r
f737cfb9 393 Initialize the DHCP options and build the option list.\r
30368135 394\r
f737cfb9 395 @param Private Pointer to PxeBc private data.\r
396 @param OptList Pointer to a DHCP option list.\r
d1102dba
LG
397\r
398 @param IsDhcpDiscover Discover dhcp option or not.\r
30368135 399\r
f737cfb9 400 @return The index item number of the option list.\r
30368135 401\r
402**/\r
403UINT32\r
404PxeBcBuildDhcpOptions (\r
405 IN PXEBC_PRIVATE_DATA *Private,\r
406 IN EFI_DHCP4_PACKET_OPTION **OptList,\r
407 IN BOOLEAN IsDhcpDiscover\r
d59b8b55 408 );\r
30368135 409\r
410\r
411/**\r
f6b7393c 412 Create the boot options.\r
30368135 413\r
f737cfb9 414 @param OptList Pointer to the list of the options\r
415 @param Type the type of option\r
d1102dba 416 @param Layer the layer of the boot options\r
f737cfb9 417 @param OptLen length of opotion\r
30368135 418\r
30368135 419**/\r
420VOID\r
421PxeBcCreateBootOptions (\r
422 IN EFI_DHCP4_PACKET_OPTION *OptList,\r
423 IN UINT16 Type,\r
424 IN UINT16 *Layer,\r
425 OUT UINT32 *OptLen\r
d59b8b55 426 );\r
30368135 427\r
428\r
429/**\r
f737cfb9 430 Parse interested dhcp options.\r
30368135 431\r
f737cfb9 432 @param Buffer Pointer to the dhcp options packet.\r
d59b8b55 433 @param Length The length of the dhcp options.\r
434 @param OptTag The option OpCode.\r
30368135 435\r
d1102dba 436 @return NULL if the buffer length is 0 and OpCode is not\r
ac6c3d90 437 DHCP4_TAG_EOP, or the pointer to the buffer.\r
30368135 438\r
439**/\r
440EFI_DHCP4_PACKET_OPTION *\r
441PxeBcParseExtendOptions (\r
442 IN UINT8 *Buffer,\r
443 IN UINT32 Length,\r
444 IN UINT8 OptTag\r
d59b8b55 445 );\r
30368135 446\r
447\r
448/**\r
f737cfb9 449 This function is to parse and check vendor options.\r
30368135 450\r
f737cfb9 451 @param Dhcp4Option Pointer to dhcp options\r
452 @param VendorOption Pointer to vendor options\r
30368135 453\r
d59b8b55 454 @return TRUE if valid for vendor options, or FALSE.\r
30368135 455\r
456**/\r
457BOOLEAN\r
458PxeBcParseVendorOptions (\r
459 IN EFI_DHCP4_PACKET_OPTION *Dhcp4Option,\r
d59b8b55 460 IN PXEBC_VENDOR_OPTION *VendorOption\r
461 );\r
30368135 462\r
463\r
464/**\r
f737cfb9 465 Choose the boot prompt.\r
30368135 466\r
f737cfb9 467 @param Private Pointer to PxeBc private data.\r
30368135 468\r
f737cfb9 469 @retval EFI_SUCCESS Select boot prompt done.\r
d1102dba 470 @retval EFI_TIMEOUT Select boot prompt time out.\r
f737cfb9 471 @retval EFI_NOT_FOUND The proxy offer is not Pxe10.\r
472 @retval EFI_ABORTED User cancel the operation.\r
473 @retval EFI_NOT_READY Read the input key from the keybroad has not finish.\r
d1102dba 474\r
30368135 475**/\r
476EFI_STATUS\r
477PxeBcSelectBootPrompt (\r
478 IN PXEBC_PRIVATE_DATA *Private\r
d59b8b55 479 );\r
30368135 480\r
481\r
482/**\r
f737cfb9 483 Select the boot menu.\r
484\r
485 @param Private Pointer to PxeBc private data.\r
486 @param Type The type of the menu.\r
487 @param UseDefaultItem Use default item or not.\r
d1102dba 488\r
f737cfb9 489 @retval EFI_ABORTED User cancel operation.\r
490 @retval EFI_SUCCESS Select the boot menu success.\r
d1102dba 491 @retval EFI_NOT_READY Read the input key from the keybroad has not finish.\r
30368135 492\r
493**/\r
494EFI_STATUS\r
495PxeBcSelectBootMenu (\r
496 IN PXEBC_PRIVATE_DATA *Private,\r
497 OUT UINT16 *Type,\r
498 IN BOOLEAN UseDefaultItem\r
d59b8b55 499 );\r
30368135 500\r
501#endif\r
502\r