/** @file\r
Functions declaration related with DHCPv4 for HTTP boot driver.\r
\r
-Copyright (c) 2015, Intel Corporation. All rights reserved.<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
-The full text of the license may be found at\r
-http://opensource.org/licenses/bsd-license.php. \r
- \r
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+Copyright (c) 2015 - 2018, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2020, Hewlett Packard Enterprise Development LP. All rights reserved.<BR>\r
+SPDX-License-Identifier: BSD-2-Clause-Patent\r
\r
**/\r
\r
#define HTTP_BOOT_DHCP4_MSG_TYPE_REQUEST 3\r
#define HTTP_BOOT_DHCP4_MAGIC 0x63538263 // network byte order\r
\r
-//\r
-// Dhcp Options\r
-//\r
-#define HTTP_BOOT_DHCP4_TAG_PAD 0 // Pad Option\r
-#define HTTP_BOOT_DHCP4_TAG_EOP 255 // End Option\r
-#define HTTP_BOOT_DHCP4_TAG_NETMASK 1 // Subnet Mask\r
-#define HTTP_BOOT_DHCP4_TAG_TIME_OFFSET 2 // Time Offset from UTC\r
-#define HTTP_BOOT_DHCP4_TAG_ROUTER 3 // Router option,\r
-#define HTTP_BOOT_DHCP4_TAG_TIME_SERVER 4 // Time Server\r
-#define HTTP_BOOT_DHCP4_TAG_NAME_SERVER 5 // Name Server\r
-#define HTTP_BOOT_DHCP4_TAG_DNS_SERVER 6 // Domain Name Server\r
-#define HTTP_BOOT_DHCP4_TAG_HOSTNAME 12 // Host Name\r
-#define HTTP_BOOT_DHCP4_TAG_BOOTFILE_LEN 13 // Boot File Size\r
-#define HTTP_BOOT_DHCP4_TAG_DUMP 14 // Merit Dump File\r
-#define HTTP_BOOT_DHCP4_TAG_DOMAINNAME 15 // Domain Name\r
-#define HTTP_BOOT_DHCP4_TAG_ROOTPATH 17 // Root path\r
-#define HTTP_BOOT_DHCP4_TAG_EXTEND_PATH 18 // Extensions Path\r
-#define HTTP_BOOT_DHCP4_TAG_EMTU 22 // Maximum Datagram Reassembly Size\r
-#define HTTP_BOOT_DHCP4_TAG_TTL 23 // Default IP Time-to-live\r
-#define HTTP_BOOT_DHCP4_TAG_BROADCAST 28 // Broadcast Address\r
-#define HTTP_BOOT_DHCP4_TAG_NIS_DOMAIN 40 // Network Information Service Domain\r
-#define HTTP_BOOT_DHCP4_TAG_NIS_SERVER 41 // Network Information Servers\r
-#define HTTP_BOOT_DHCP4_TAG_NTP_SERVER 42 // Network Time Protocol Servers\r
-#define HTTP_BOOT_DHCP4_TAG_VENDOR 43 // Vendor Specific Information\r
-#define HTTP_BOOT_DHCP4_TAG_REQUEST_IP 50 // Requested IP Address\r
-#define HTTP_BOOT_DHCP4_TAG_LEASE 51 // IP Address Lease Time\r
-#define HTTP_BOOT_DHCP4_TAG_OVERLOAD 52 // Option Overload\r
-#define HTTP_BOOT_DHCP4_TAG_MSG_TYPE 53 // DHCP Message Type\r
-#define HTTP_BOOT_DHCP4_TAG_SERVER_ID 54 // Server Identifier\r
-#define HTTP_BOOT_DHCP4_TAG_PARA_LIST 55 // Parameter Request List\r
-#define HTTP_BOOT_DHCP4_TAG_MAXMSG 57 // Maximum DHCP Message Size\r
-#define HTTP_BOOT_DHCP4_TAG_T1 58 // Renewal (T1) Time Value\r
-#define HTTP_BOOT_DHCP4_TAG_T2 59 // Rebinding (T2) Time Value\r
-#define HTTP_BOOT_DHCP4_TAG_CLASS_ID 60 // Vendor class identifier\r
-#define HTTP_BOOT_DHCP4_TAG_CLIENT_ID 61 // Client-identifier\r
-#define HTTP_BOOT_DHCP4_TAG_TFTP 66 // TFTP server name\r
-#define HTTP_BOOT_DHCP4_TAG_BOOTFILE 67 // Bootfile name\r
-#define HTTP_BOOT_DHCP4_TAG_ARCH 93\r
-#define HTTP_BOOT_DHCP4_TAG_UNDI 94\r
-#define HTTP_BOOT_DHCP4_TAG_UUID 97\r
-\r
#define HTTP_BOOT_DHCP4_OVERLOAD_FILE 1\r
#define HTTP_BOOT_DHCP4_OVERLOAD_SERVER_NAME 2\r
\r
///\r
-/// HTTP Tag definition that identifies the processor \r
+/// HTTP Tag definition that identifies the processor\r
/// and programming environment of the client system.\r
/// These identifiers are defined by IETF:\r
/// http://www.ietf.org/assignments/dhcpv6-parameters/dhcpv6-parameters.xml\r
///\r
#if defined (MDE_CPU_IA32)\r
-#define EFI_HTTP_BOOT_CLIENT_SYSTEM_ARCHITECTURE 0x000F\r
+#define EFI_HTTP_BOOT_CLIENT_SYSTEM_ARCHITECTURE HTTP_CLIENT_ARCH_IA32\r
#elif defined (MDE_CPU_X64)\r
-#define EFI_HTTP_BOOT_CLIENT_SYSTEM_ARCHITECTURE 0x0010\r
+#define EFI_HTTP_BOOT_CLIENT_SYSTEM_ARCHITECTURE HTTP_CLIENT_ARCH_X64\r
#elif defined (MDE_CPU_ARM)\r
-#define EFI_HTTP_BOOT_CLIENT_SYSTEM_ARCHITECTURE 0x0012\r
+#define EFI_HTTP_BOOT_CLIENT_SYSTEM_ARCHITECTURE HTTP_CLIENT_ARCH_ARM\r
#elif defined (MDE_CPU_AARCH64)\r
-#define EFI_HTTP_BOOT_CLIENT_SYSTEM_ARCHITECTURE 0x0013\r
+#define EFI_HTTP_BOOT_CLIENT_SYSTEM_ARCHITECTURE HTTP_CLIENT_ARCH_AARCH64\r
+#elif defined (MDE_CPU_RISCV64)\r
+#define EFI_HTTP_BOOT_CLIENT_SYSTEM_ARCHITECTURE HTTP_CLIENT_ARCH_RISCV64\r
#elif defined (MDE_CPU_EBC)\r
-#define EFI_HTTP_BOOT_CLIENT_SYSTEM_ARCHITECTURE 0x0011\r
+#define EFI_HTTP_BOOT_CLIENT_SYSTEM_ARCHITECTURE HTTP_CLIENT_ARCH_EBC\r
#endif\r
\r
/// DHCP offer types among HTTP boot.\r
/// Dhcp4 and Dhcp6 share this definition, and corresponding\r
-/// relatioinship is as follows:\r
+/// relationship is as follows:\r
/// Dhcp4Discover <> Dhcp6Solicit\r
/// Dhcp4Offer <> Dhcp6Advertise\r
/// Dhcp4Request <> Dhcp6Request\r
///\r
typedef enum {\r
//\r
- // <IP address, IP expressed URI> or\r
- // <IP address, IP expressed URI, Name-server (will be ignored)>\r
+ // <IP address, IP expressed URI>\r
//\r
HttpOfferTypeDhcpIpUri,\r
//\r
+ // <IP address, IP expressed URI, Name-server>\r
+ //\r
+ HttpOfferTypeDhcpIpUriDns,\r
+ //\r
// <IP address, Domain-name expressed URI, Name-server>\r
//\r
HttpOfferTypeDhcpNameUriDns,\r
UINT32 Reserved;\r
} HTTP_BOOT_VENDOR_OPTION;\r
\r
+#define HTTP_CACHED_DHCP4_PACKET_MAX_SIZE (OFFSET_OF (EFI_DHCP4_PACKET, Dhcp4) + HTTP_BOOT_DHCP4_PACKET_MAX_SIZE)\r
+\r
typedef union {\r
EFI_DHCP4_PACKET Offer;\r
EFI_DHCP4_PACKET Ack;\r
- UINT8 Buffer[HTTP_BOOT_DHCP4_PACKET_MAX_SIZE];\r
+ UINT8 Buffer[HTTP_CACHED_DHCP4_PACKET_MAX_SIZE];\r
} HTTP_BOOT_DHCP4_PACKET;\r
\r
typedef struct {\r
\r
/**\r
This function will register the default DNS addresses to the network device.\r
- \r
+\r
@param[in] Private The pointer to HTTP_BOOT_PRIVATE_DATA.\r
@param[in] DataLength Size of the buffer pointed to by DnsServerData in bytes.\r
@param[in] DnsServerData Point a list of DNS server address in an array\r