VirtualBox

source: vbox/trunk/src/VBox/Devices/EFI/Firmware/NetworkPkg/HttpBootDxe/HttpBootClient.h@ 86756

Last change on this file since 86756 was 80721, checked in by vboxsync, 5 years ago

Devices/EFI/FirmwareNew: Start upgrade process to edk2-stable201908 (compiles on Windows and works to some extent), bugref:4643

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