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 /** 21 Extract the discover information and boot server entry from the 22 cached packets if unspecified. 23 24 @param[in] Private Pointer to PxeBc private data. 25 @param[in] Type The type of bootstrap to perform. 26 @param[in, out] DiscoverInfo Pointer to EFI_PXE_BASE_CODE_DISCOVER_INFO. 27 @param[out] BootEntry Pointer to PXEBC_BOOT_SVR_ENTRY. 28 @param[out] SrvList Pointer to EFI_PXE_BASE_CODE_SRVLIST. 29 30 @retval EFI_SUCCESS Successfully extracted the information. 31 @retval EFI_DEVICE_ERROR Failed to extract the information. 32 33 **/ 34 EFI_STATUS 35 PxeBcExtractDiscoverInfo ( 36 IN PXEBC_PRIVATE_DATA *Private, 37 IN UINT16 Type, 38 IN OUT EFI_PXE_BASE_CODE_DISCOVER_INFO **DiscoverInfo, 39 OUT PXEBC_BOOT_SVR_ENTRY **BootEntry, 40 OUT EFI_PXE_BASE_CODE_SRVLIST **SrvList 41 ); 42 43 44 /** 45 Build the discover packet and send out for boot. 46 47 @param[in] Private Pointer to PxeBc private data. 48 @param[in] Type PxeBc option boot item type. 49 @param[in] Layer Pointer to option boot item layer. 50 @param[in] UseBis Use BIS or not. 51 @param[in] DestIp Pointer to the server address. 52 @param[in] IpCount The total count of the server address. 53 @param[in] SrvList Pointer to the server address list. 54 55 @retval EFI_SUCCESS Successfully discovered boot file. 56 @retval EFI_OUT_OF_RESOURCES Failed to allocate resources. 57 @retval EFI_NOT_FOUND Can't get the PXE reply packet. 58 @retval Others Failed to discover boot file. 59 60 **/ 61 EFI_STATUS 62 PxeBcDiscoverBootServer ( 63 IN PXEBC_PRIVATE_DATA *Private, 64 IN UINT16 Type, 65 IN UINT16 *Layer, 66 IN BOOLEAN UseBis, 67 IN EFI_IP_ADDRESS *DestIp, 68 IN UINT16 IpCount, 69 IN EFI_PXE_BASE_CODE_SRVLIST *SrvList 70 ); 71 72 73 /** 74 Load boot file into user buffer. 75 76 @param[in] Private Pointer to PxeBc private data. 77 @param[in, out] BufferSize Size of user buffer for input; 78 required buffer size for output. 79 @param[in] Buffer Pointer to user buffer. 80 81 @retval EFI_SUCCESS Successfully obtained all the boot information. 82 @retval EFI_BUFFER_TOO_SMALL The buffer size is not enough for boot file. 83 @retval EFI_ABORTED User cancelled the current operation. 84 @retval Others Failed to parse out the boot information. 85 86 **/ 87 EFI_STATUS 88 PxeBcLoadBootFile ( 89 IN PXEBC_PRIVATE_DATA *Private, 90 IN OUT UINTN *BufferSize, 91 IN VOID *Buffer OPTIONAL 92 ); 93 94 #endif 95