2 Support functions declaration for UEFI HTTP boot driver.
4 Copyright (c) 2015 - 2018, Intel Corporation. All rights reserved.<BR>
5 (C) Copyright 2020 Hewlett-Packard Development Company, L.P.<BR>
6 SPDX-License-Identifier: BSD-2-Clause-Patent
10 #ifndef __EFI_HTTP_BOOT_SUPPORT_H__
11 #define __EFI_HTTP_BOOT_SUPPORT_H__
14 Get the Nic handle using any child handle in the IPv4 stack.
16 @param[in] ControllerHandle Pointer to child handle over IPv4.
18 @return NicHandle The pointer to the Nic handle.
19 @return NULL Can't find the Nic handle.
23 HttpBootGetNicByIp4Children (
24 IN EFI_HANDLE ControllerHandle
28 Get the Nic handle using any child handle in the IPv6 stack.
30 @param[in] ControllerHandle Pointer to child handle over IPv6.
32 @return NicHandle The pointer to the Nic handle.
33 @return NULL Can't find the Nic handle.
37 HttpBootGetNicByIp6Children (
38 IN EFI_HANDLE ControllerHandle
42 This function is to convert UINTN to ASCII string with the required formatting.
44 @param[in] Number Numeric value to be converted.
45 @param[in] Buffer The pointer to the buffer for ASCII string.
46 @param[in] Length The length of the required format.
50 HttpBootUintnToAscDecWithFormat (
58 This function is to display the IPv4 address.
60 @param[in] Ip The pointer to the IPv4 address.
65 IN EFI_IPv4_ADDRESS
*Ip
69 This function is to display the IPv6 address.
71 @param[in] Ip The pointer to the IPv6 address.
76 IN EFI_IPv6_ADDRESS
*Ip
80 This function is to display the HTTP error status.
82 @param[in] StatusCode The status code value in HTTP message.
86 HttpBootPrintErrorMessage (
87 EFI_HTTP_STATUS_CODE StatusCode
91 Retrieve the host address using the EFI_DNS6_PROTOCOL.
93 @param[in] Private The pointer to the driver's private data.
94 @param[in] HostName Pointer to buffer containing hostname.
95 @param[out] IpAddress On output, pointer to buffer containing IPv6 address.
97 @retval EFI_SUCCESS Operation succeeded.
98 @retval EFI_DEVICE_ERROR An unexpected network error occurred.
99 @retval Others Other errors as indicated.
103 IN HTTP_BOOT_PRIVATE_DATA
*Private
,
105 OUT EFI_IPv6_ADDRESS
*IpAddress
109 Notify the callback function when an event is triggered.
111 @param[in] Event The triggered event.
112 @param[in] Context The opaque parameter to the function.
117 HttpBootCommonNotify (
123 This function checks the HTTP(S) URI scheme.
125 @param[in] Uri The pointer to the URI string.
127 @retval EFI_SUCCESS The URI scheme is valid.
128 @retval EFI_INVALID_PARAMETER The URI scheme is not HTTP or HTTPS.
129 @retval EFI_ACCESS_DENIED HTTP is disabled and the URI is HTTP.
133 HttpBootCheckUriScheme (
138 Get the URI address string from the input device path.
140 Caller need to free the buffer in the UriAddress pointer.
142 @param[in] FilePath Pointer to the device path which contains a URI device path node.
143 @param[out] UriAddress The URI address string extract from the device path.
145 @retval EFI_SUCCESS The URI string is returned.
146 @retval EFI_OUT_OF_RESOURCES Failed to allocate memory.
150 HttpBootParseFilePath (
151 IN EFI_DEVICE_PATH_PROTOCOL
*FilePath
,
152 OUT CHAR8
**UriAddress
156 This function returns the image type according to server replied HTTP message
157 and also the image's URI info.
159 @param[in] Uri The pointer to the image's URI string.
160 @param[in] UriParser URI Parse result returned by NetHttpParseUrl().
161 @param[in] HeaderCount Number of HTTP header structures in Headers list.
162 @param[in] Headers Array containing list of HTTP headers.
163 @param[out] ImageType The image type of the downloaded file.
165 @retval EFI_SUCCESS The image type is returned in ImageType.
166 @retval EFI_INVALID_PARAMETER ImageType, Uri or UriParser is NULL.
167 @retval EFI_INVALID_PARAMETER HeaderCount is not zero, and Headers is NULL.
168 @retval EFI_NOT_FOUND Failed to identify the image type.
169 @retval Others Unexpected error happened.
173 HttpBootCheckImageType (
176 IN UINTN HeaderCount
,
177 IN EFI_HTTP_HEADER
*Headers
,
178 OUT HTTP_BOOT_IMAGE_TYPE
*ImageType
182 This function register the RAM disk info to the system.
184 @param[in] Private The pointer to the driver's private data.
185 @param[in] BufferSize The size of Buffer in bytes.
186 @param[in] Buffer The base address of the RAM disk.
187 @param[in] ImageType The image type of the file in Buffer.
189 @retval EFI_SUCCESS The RAM disk has been registered.
190 @retval EFI_NOT_FOUND No RAM disk protocol instances were found.
191 @retval EFI_UNSUPPORTED The ImageType is not supported.
192 @retval Others Unexpected error happened.
196 HttpBootRegisterRamDisk (
197 IN HTTP_BOOT_PRIVATE_DATA
*Private
,
200 IN HTTP_BOOT_IMAGE_TYPE ImageType
204 Indicate if the HTTP status code indicates a redirection.
206 @param[in] StatusCode HTTP status code from server.
208 @return TRUE if it's redirection.
212 HttpBootIsHttpRedirectStatusCode (
213 IN EFI_HTTP_STATUS_CODE StatusCode