VirtualBox

source: vbox/trunk/src/VBox/Devices/EFI/FirmwareNew/NetworkPkg/HttpBootDxe/HttpBootClient.h@ 105670

Last change on this file since 105670 was 105670, checked in by vboxsync, 4 months ago

Devices/EFI/FirmwareNew: Merge edk2-stable-202405 and make it build on aarch64, bugref:4643

  • Property svn:eol-style set to native
File size: 4.5 KB
Line 
1/** @file
2 Declaration of the boot file download function.
3
4Copyright (c) 2015 - 2021, Intel Corporation. All rights reserved.<BR>
5(C) Copyright 2016 Hewlett Packard Enterprise Development LP<BR>
6SPDX-License-Identifier: BSD-2-Clause-Patent
7
8**/
9
10#ifndef __EFI_HTTP_BOOT_HTTP_H__
11#define __EFI_HTTP_BOOT_HTTP_H__
12
13#define HTTP_BOOT_BLOCK_SIZE 32000
14#define HTTP_USER_AGENT_EFI_HTTP_BOOT "UefiHttpBoot/1.0"
15#define HTTP_BOOT_AUTHENTICATION_INFO_MAX_LEN 255
16
17//
18// Record the data length and start address of a data block.
19//
20typedef struct {
21 LIST_ENTRY Link; // Link to the EntityDataList in HTTP_BOOT_CACHE_CONTENT
22 UINT8 *Block; // If NULL, the data is in previous data block.
23 UINT8 *DataStart; // Point to somewhere in the Block
24 UINTN DataLength;
25} HTTP_BOOT_ENTITY_DATA;
26
27//
28// Structure for a cache item
29//
30typedef struct {
31 LIST_ENTRY Link; // Link to the CacheList in driver's private data.
32 EFI_HTTP_REQUEST_DATA *RequestData;
33 HTTP_IO_RESPONSE_DATA *ResponseData; // Not include any message-body data.
34 HTTP_BOOT_IMAGE_TYPE ImageType;
35 UINTN EntityLength;
36 LIST_ENTRY EntityDataList; // Entity data (message-body)
37} HTTP_BOOT_CACHE_CONTENT;
38
39//
40// Callback data for HTTP_BODY_PARSER_CALLBACK()
41//
42typedef struct {
43 EFI_STATUS Status;
44 //
45 // Cache info.
46 //
47 HTTP_BOOT_CACHE_CONTENT *Cache;
48 BOOLEAN NewBlock;
49 UINT8 *Block;
50
51 //
52 // Caller provided buffer to load the file in.
53 //
54 UINTN CopyedSize;
55 UINTN BufferSize;
56 UINT8 *Buffer;
57
58 HTTP_BOOT_PRIVATE_DATA *Private;
59} HTTP_BOOT_CALLBACK_DATA;
60
61/**
62 Discover all the boot information for boot file.
63
64 @param[in, out] Private The pointer to the driver's private data.
65
66 @retval EFI_SUCCESS Successfully obtained all the boot information .
67 @retval Others Failed to retrieve the boot information.
68
69**/
70EFI_STATUS
71HttpBootDiscoverBootInfo (
72 IN OUT HTTP_BOOT_PRIVATE_DATA *Private
73 );
74
75/**
76 Create a HttpIo instance for the file download.
77
78 @param[in] Private The pointer to the driver's private data.
79
80 @retval EFI_SUCCESS Successfully created.
81 @retval Others Failed to create HttpIo.
82
83**/
84EFI_STATUS
85HttpBootCreateHttpIo (
86 IN HTTP_BOOT_PRIVATE_DATA *Private
87 );
88
89/**
90 This function download the boot file by using UEFI HTTP protocol.
91
92 @param[in] Private The pointer to the driver's private data.
93 @param[in] HeaderOnly Only request the response header, it could save a lot of time if
94 the caller only want to know the size of the requested file.
95 @param[in, out] BufferSize On input the size of Buffer in bytes. On output with a return
96 code of EFI_SUCCESS, the amount of data transferred to
97 Buffer. On output with a return code of EFI_BUFFER_TOO_SMALL,
98 the size of Buffer required to retrieve the requested file.
99 @param[out] Buffer The memory buffer to transfer the file to. IF Buffer is NULL,
100 then the size of the requested file is returned in
101 BufferSize.
102 @param[out] ImageType The image type of the downloaded file.
103
104 @retval EFI_SUCCESS The file was loaded.
105 @retval EFI_INVALID_PARAMETER BufferSize is NULL or Buffer Size is not NULL but Buffer is NULL.
106 @retval EFI_OUT_OF_RESOURCES Could not allocate needed resources
107 @retval EFI_BUFFER_TOO_SMALL The BufferSize is too small to read the current directory entry.
108 BufferSize has been updated with the size needed to complete
109 the request.
110 @retval EFI_ACCESS_DENIED The server needs to authenticate the client.
111 @retval Others Unexpected error happened.
112
113**/
114EFI_STATUS
115HttpBootGetBootFile (
116 IN HTTP_BOOT_PRIVATE_DATA *Private,
117 IN BOOLEAN HeaderOnly,
118 IN OUT UINTN *BufferSize,
119 OUT UINT8 *Buffer,
120 OUT HTTP_BOOT_IMAGE_TYPE *ImageType
121 );
122
123/**
124 Clean up all cached data.
125
126 @param[in] Private The pointer to the driver's private data.
127
128**/
129VOID
130HttpBootFreeCacheList (
131 IN HTTP_BOOT_PRIVATE_DATA *Private
132 );
133
134#endif
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette