]> git.proxmox.com Git - mirror_edk2.git/blobdiff - NetworkPkg/HttpBootDxe/HttpBootDhcp4.h
MdeModulePkg PiSmmCore: Update comments in InitializeMemoryServices
[mirror_edk2.git] / NetworkPkg / HttpBootDxe / HttpBootDhcp4.h
index 200501666b2ac9c36b53362e03c0471bdeb842ea..0b2cafbf50988e3c55ffc20bee5691a9051cc7ff 100644 (file)
@@ -1,7 +1,7 @@
 /** @file\r
   Functions declaration related with DHCPv4 for HTTP boot driver.\r
 \r
-Copyright (c) 2015, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2015 - 2016, 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
@@ -24,47 +24,6 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 #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
@@ -75,15 +34,15 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 /// 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_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
@@ -96,11 +55,14 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 ///\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
@@ -216,10 +178,12 @@ typedef struct {
   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
@@ -245,6 +209,17 @@ typedef struct {
   EFI_DHCP4_PACKET_OPTION     *OptList[HTTP_BOOT_DHCP4_TAG_INDEX_MAX];\r
 } HTTP_BOOT_DHCP4_PACKET_CACHE;\r
 \r
+/**\r
+  Select an DHCPv4 or DHCP6 offer, and record SelectIndex and SelectProxyType.\r
+\r
+  @param[in]  Private             Pointer to HTTP boot driver private data.\r
+\r
+**/\r
+VOID\r
+HttpBootSelectDhcpOffer (\r
+  IN HTTP_BOOT_PRIVATE_DATA  *Private\r
+  );\r
+\r
 /**\r
   Start the D.O.R.A DHCPv4 process to acquire the IPv4 address and other Http boot information.\r
 \r