]> git.proxmox.com Git - mirror_edk2.git/blob - NetworkPkg/UefiPxeBcDxe/PxeBcBoot.h
UefiCpuPkg: Move AsmRelocateApLoopStart from Mpfuncs.nasm to AmdSev.nasm
[mirror_edk2.git] / NetworkPkg / UefiPxeBcDxe / PxeBcBoot.h
1 /** @file
2 Boot functions declaration for UefiPxeBc Driver.
3
4 Copyright (c) 2009 - 2012, Intel Corporation. All rights reserved.<BR>
5
6 SPDX-License-Identifier: BSD-2-Clause-Patent
7
8 **/
9
10 #ifndef __EFI_PXEBC_BOOT_H__
11 #define __EFI_PXEBC_BOOT_H__
12
13 #define PXEBC_DISPLAY_MAX_LINE 70
14 #define PXEBC_DEFAULT_UDP_OVERHEAD_SIZE 8
15 #define PXEBC_DEFAULT_TFTP_OVERHEAD_SIZE 4
16
17 #define PXEBC_IS_SIZE_OVERFLOWED(x) ((sizeof (UINTN) < sizeof (UINT64)) && ((x) > 0xFFFFFFFF))
18
19 /**
20 Extract the discover information and boot server entry from the
21 cached packets if unspecified.
22
23 @param[in] Private Pointer to PxeBc private data.
24 @param[in] Type The type of bootstrap to perform.
25 @param[in, out] DiscoverInfo Pointer to EFI_PXE_BASE_CODE_DISCOVER_INFO.
26 @param[out] BootEntry Pointer to PXEBC_BOOT_SVR_ENTRY.
27 @param[out] SrvList Pointer to EFI_PXE_BASE_CODE_SRVLIST.
28
29 @retval EFI_SUCCESS Successfully extracted the information.
30 @retval EFI_DEVICE_ERROR Failed to extract the information.
31
32 **/
33 EFI_STATUS
34 PxeBcExtractDiscoverInfo (
35 IN PXEBC_PRIVATE_DATA *Private,
36 IN UINT16 Type,
37 IN OUT EFI_PXE_BASE_CODE_DISCOVER_INFO **DiscoverInfo,
38 OUT PXEBC_BOOT_SVR_ENTRY **BootEntry,
39 OUT EFI_PXE_BASE_CODE_SRVLIST **SrvList
40 );
41
42 /**
43 Build the discover packet and send out for boot.
44
45 @param[in] Private Pointer to PxeBc private data.
46 @param[in] Type PxeBc option boot item type.
47 @param[in] Layer Pointer to option boot item layer.
48 @param[in] UseBis Use BIS or not.
49 @param[in] DestIp Pointer to the server address.
50 @param[in] IpCount The total count of the server address.
51 @param[in] SrvList Pointer to the server address list.
52
53 @retval EFI_SUCCESS Successfully discovered boot file.
54 @retval EFI_OUT_OF_RESOURCES Failed to allocate resources.
55 @retval EFI_NOT_FOUND Can't get the PXE reply packet.
56 @retval Others Failed to discover boot file.
57
58 **/
59 EFI_STATUS
60 PxeBcDiscoverBootServer (
61 IN PXEBC_PRIVATE_DATA *Private,
62 IN UINT16 Type,
63 IN UINT16 *Layer,
64 IN BOOLEAN UseBis,
65 IN EFI_IP_ADDRESS *DestIp,
66 IN UINT16 IpCount,
67 IN EFI_PXE_BASE_CODE_SRVLIST *SrvList
68 );
69
70 /**
71 Load boot file into user buffer.
72
73 @param[in] Private Pointer to PxeBc private data.
74 @param[in, out] BufferSize Size of user buffer for input;
75 required buffer size for output.
76 @param[in] Buffer Pointer to user buffer.
77
78 @retval EFI_SUCCESS Successfully obtained all the boot information.
79 @retval EFI_BUFFER_TOO_SMALL The buffer size is not enough for boot file.
80 @retval EFI_ABORTED User cancelled the current operation.
81 @retval Others Failed to parse out the boot information.
82
83 **/
84 EFI_STATUS
85 PxeBcLoadBootFile (
86 IN PXEBC_PRIVATE_DATA *Private,
87 IN OUT UINTN *BufferSize,
88 IN VOID *Buffer OPTIONAL
89 );
90
91 #endif