/** @file\r
UEFI HTTP boot driver's private data structure and interfaces declaration.\r
\r
-Copyright (c) 2015 - 2016, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2015 - 2017, Intel Corporation. All rights reserved.<BR>\r
(C) Copyright 2016 Hewlett Packard Enterprise Development LP<BR>\r
This program and the accompanying materials are licensed and made available under \r
the terms and conditions of the BSD License that accompanies this distribution. \r
#include <Uefi.h>\r
\r
#include <IndustryStandard/Http11.h>\r
+#include <IndustryStandard/Dhcp.h>\r
\r
//\r
// Libraries\r
#include <Library/HttpLib.h>\r
#include <Library/HiiLib.h>\r
#include <Library/PrintLib.h>\r
+#include <Library/DpcLib.h>\r
\r
//\r
// UEFI Driver Model Protocols\r
#include <Protocol/Http.h>\r
#include <Protocol/Ip4Config2.h>\r
#include <Protocol/Ip6Config.h>\r
+#include <Protocol/RamDisk.h>\r
//\r
// Produced Protocols\r
//\r
#include <Protocol/LoadFile.h>\r
+#include <Protocol/HttpBootCallback.h>\r
\r
//\r
// Consumed Guids\r
//\r
#define HTTP_BOOT_DXE_VERSION 0xa\r
\r
+//\r
+// Standard Media Types defined in \r
+// http://www.iana.org/assignments/media-types\r
+//\r
+#define HTTP_CONTENT_TYPE_APP_EFI "application/efi"\r
+#define HTTP_CONTENT_TYPE_APP_IMG "application/vnd.efi-img"\r
+#define HTTP_CONTENT_TYPE_APP_ISO "application/vnd.efi-iso"\r
+\r
//\r
// Protocol instances\r
//\r
typedef struct _HTTP_BOOT_PRIVATE_DATA HTTP_BOOT_PRIVATE_DATA;\r
typedef struct _HTTP_BOOT_VIRTUAL_NIC HTTP_BOOT_VIRTUAL_NIC;\r
\r
+typedef enum {\r
+ ImageTypeEfi,\r
+ ImageTypeVirtualCd,\r
+ ImageTypeVirtualDisk,\r
+ ImageTypeMax\r
+} HTTP_BOOT_IMAGE_TYPE;\r
+\r
//\r
// Include files with internal function prototypes\r
//\r
CallbackInfo, \\r
HTTP_BOOT_PRIVATE_DATA_SIGNATURE \\r
)\r
+ \r
+#define HTTP_BOOT_PRIVATE_DATA_FROM_CALLBACK_PROTOCOL(CallbackProtocol) \\r
+ CR ( \\r
+ CallbackProtocol, \\r
+ HTTP_BOOT_PRIVATE_DATA, \\r
+ LoadFileCallback, \\r
+ HTTP_BOOT_PRIVATE_DATA_SIGNATURE \\r
+ )\r
\r
struct _HTTP_BOOT_PRIVATE_DATA {\r
UINT32 Signature;\r
EFI_LOAD_FILE_PROTOCOL LoadFile;\r
EFI_DEVICE_PATH_PROTOCOL *DevicePath;\r
UINT32 Id;\r
+ EFI_HTTP_BOOT_CALLBACK_PROTOCOL *HttpBootCallback;\r
+ EFI_HTTP_BOOT_CALLBACK_PROTOCOL LoadFileCallback;\r
+ UINT64 FileSize;\r
+ UINT64 ReceivedSize;\r
+ UINT32 Percentage;\r
\r
//\r
// HII callback info block\r
EFI_IP_ADDRESS GatewayIp;\r
EFI_IP_ADDRESS ServerIp;\r
UINT16 Port;\r
+\r
+ //\r
+ // The URI string attempt to download through HTTP, may point to\r
+ // the memory in cached DHCP offer, or to the memory in FilePathUri.\r
+ //\r
CHAR8 *BootFileUri;\r
VOID *BootFileUriParser;\r
UINTN BootFileSize;\r
BOOLEAN NoGateway;\r
+ HTTP_BOOT_IMAGE_TYPE ImageType;\r
\r
//\r
// URI string extracted from the input FilePath parameter.\r