]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Universal/Network/Dhcp4Dxe/Dhcp4Option.h
BaseTools:Change the path of the file that Binary Cache
[mirror_edk2.git] / MdeModulePkg / Universal / Network / Dhcp4Dxe / Dhcp4Option.h
index 3574292ff4d321e37e0833d10325c5dacc11f97d..9e25386507edb4ffe81a035e5294f38424b992d1 100644 (file)
@@ -1,14 +1,8 @@
 /** @file\r
   To validate, parse and process the DHCP options.\r
-  \r
-Copyright (c) 2006, Intel Corporation.<BR>\r
-All rights reserved. This program and the accompanying materials\r
-are licensed and made available under the terms and conditions of the BSD License\r
-which accompanies this distribution.  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) 2006 - 2018, Intel Corporation. All rights reserved.<BR>\r
+SPDX-License-Identifier: BSD-2-Clause-Patent\r
 \r
 **/\r
 \r
@@ -18,136 +12,27 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 ///\r
 /// DHCP option tags (types)\r
 ///\r
-typedef enum {\r
-  //\r
-  // RFC1497 vendor extensions\r
-  //\r
-  DHCP_TAG_PAD             = 0,    // Pad Option\r
-  DHCP_TAG_EOP             = 255,  // End Option\r
-  DHCP_TAG_NETMASK         = 1,    // Subnet Mask\r
-  DHCP_TAG_TIME_OFFSET     = 2,    // Time Offset from UTC\r
-  DHCP_TAG_ROUTER          = 3,    // Router option,\r
-  DHCP_TAG_TIME_SERVER     = 4,    // Time Server\r
-  DHCP_TAG_NAME_SERVER     = 5,    // Name Server\r
-  DHCP_TAG_DNS_SERVER      = 6,    // Domain Name Server\r
-  DHCP_TAG_LOG_SERVER      = 7,    // Log Server\r
-  DHCP_TAG_COOKIE_SERVER   = 8,    // Cookie Server\r
-  DHCP_TAG_LPR_SERVER      = 9,    // LPR Print Server\r
-  DHCP_TAG_IMPRESS_SERVER  = 10,   // Impress Server\r
-  DHCP_TAG_RL_SERVER       = 11,   // Resource Location Server\r
-  DHCP_TAG_HOSTNAME        = 12,   // Host Name\r
-  DHCP_TAG_BOOTFILE_LEN    = 13,   // Boot File Size\r
-  DHCP_TAG_DUMP            = 14,   // Merit Dump File\r
-  DHCP_TAG_DOMAINNAME      = 15,   // Domain Name\r
-  DHCP_TAG_SWAP_SERVER     = 16,   // Swap Server\r
-  DHCP_TAG_ROOTPATH        = 17,   // Root path\r
-  DHCP_TAG_EXTEND_PATH     = 18,   // Extensions Path\r
-\r
-  //\r
-  // IP Layer Parameters per Host\r
-  //\r
-  DHCP_TAG_IPFORWARD       = 19, // IP Forwarding Enable/Disable\r
-  DHCP_TAG_NONLOCAL_SRR    = 20, // on-Local Source Routing Enable/Disable\r
-  DHCP_TAG_POLICY_SRR      = 21, // Policy Filter\r
-  DHCP_TAG_EMTU            = 22, // Maximum Datagram Reassembly Size\r
-  DHCP_TAG_TTL             = 23, // Default IP Time-to-live\r
-  DHCP_TAG_PATHMTU_AGE     = 24, // Path MTU Aging Timeout\r
-  DHCP_TAG_PATHMTU_PLATEAU = 25, // Path MTU Plateau Table\r
 \r
-  //\r
-  // IP Layer Parameters per Interface\r
-  //\r
-  DHCP_TAG_IFMTU           = 26, // Interface MTU\r
-  DHCP_TAG_SUBNET_LOCAL    = 27, // All Subnets are Local\r
-  DHCP_TAG_BROADCAST       = 28, // Broadcast Address\r
-  DHCP_TAG_DISCOVER_MASK   = 29, // Perform Mask Discovery\r
-  DHCP_TAG_SUPPLY_MASK     = 30, // Mask Supplier\r
-  DHCP_TAG_DISCOVER_ROUTE  = 31, // Perform Router Discovery\r
-  DHCP_TAG_ROUTER_SOLICIT  = 32, // Router Solicitation Address\r
-  DHCP_TAG_STATIC_ROUTE    = 33, // Static Route\r
-\r
-  //\r
-  // Link Layer Parameters per Interface\r
-  //\r
-  DHCP_TAG_TRAILER         = 34, // Trailer Encapsulation\r
-  DHCP_TAG_ARPAGE          = 35, // ARP Cache Timeout\r
-  DHCP_TAG_ETHER_ENCAP     = 36, // Ethernet Encapsulation\r
+#define DHCP_OPTION_MAGIC         0x63538263 // Network byte order\r
+#define DHCP_MAX_OPTIONS          256\r
 \r
-  //\r
-  // TCP Parameters\r
-  //\r
-  DHCP_TAG_TCP_TTL         = 37, // TCP Default TTL\r
-  DHCP_TAG_KEEP_INTERVAL   = 38, // TCP Keepalive Interval\r
-  DHCP_TAG_KEEP_GARBAGE    = 39, // TCP Keepalive Garbage\r
 \r
-  //\r
-  // Application and Service Parameters\r
-  //\r
-  DHCP_TAG_NIS_DOMAIN      = 40,   // Network Information Service Domain\r
-  DHCP_TAG_NIS_SERVER      = 41,   // Network Information Servers\r
-  DHCP_TAG_NTP_SERVER      = 42,   // Network Time Protocol Servers\r
-  DHCP_TAG_VENDOR          = 43,   // Vendor Specific Information\r
-  DHCP_TAG_NBNS            = 44,   // NetBIOS over TCP/IP Name Server\r
-  DHCP_TAG_NBDD            = 45,   // NetBIOS Datagram Distribution Server\r
-  DHCP_TAG_NBTYPE          = 46,   // NetBIOS over TCP/IP Node Type\r
-  DHCP_TAG_NBSCOPE         = 47,   // NetBIOS over TCP/IP Scope\r
-  DHCP_TAG_XFONT           = 48,   // X Window System Font Server\r
-  DHCP_TAG_XDM             = 49,   // X Window System Display Manager\r
-  DHCP_TAG_NISPLUS         = 64,   // Network Information Service+ Domain\r
-  DHCP_TAG_NISPLUS_SERVER  = 65,   // Network Information Service+ Servers\r
-  DHCP_TAG_MOBILEIP        = 68,   // Mobile IP Home Agent\r
-  DHCP_TAG_SMTP            = 69,   // Simple Mail Transport Protocol Server\r
-  DHCP_TAG_POP3            = 70,   // Post Office Protocol (POP3) Server\r
-  DHCP_TAG_NNTP            = 71,   // Network News Transport Protocol Server\r
-  DHCP_TAG_WWW             = 72,   // Default World Wide Web (WWW) Server\r
-  DHCP_TAG_FINGER          = 73,   // Default Finger Server\r
-  DHCP_TAG_IRC             = 74,   // Default Internet Relay Chat (IRC) Server\r
-  DHCP_TAG_STTALK          = 75,   // StreetTalk Server\r
-  DHCP_TAG_STDA            = 76,   // StreetTalk Directory Assistance Server\r
-  DHCP_TAG_CLASSLESS_ROUTE = 121,  // Classless Route\r
+//\r
+// DHCP option types, this is used to validate the DHCP options.\r
+//\r
+#define DHCP_OPTION_SWITCH        1\r
+#define DHCP_OPTION_INT8          2\r
+#define DHCP_OPTION_INT16         3\r
+#define DHCP_OPTION_INT32         4\r
+#define DHCP_OPTION_IP            5\r
+#define DHCP_OPTION_IPPAIR        6\r
 \r
-  //\r
-  // DHCP Extensions\r
-  //\r
-  DHCP_TAG_REQUEST_IP      = 50,         // Requested IP Address\r
-  DHCP_TAG_LEASE           = 51,         // IP Address Lease Time\r
-  DHCP_TAG_OVERLOAD        = 52,         // Option Overload\r
-  DHCP_TAG_TFTP            = 66,         // TFTP server name\r
-  DHCP_TAG_BOOTFILE        = 67,         // Bootfile name\r
-  DHCP_TAG_TYPE            = 53,         // DHCP Message Type\r
-  DHCP_TAG_SERVER_ID       = 54,         // Server Identifier\r
-  DHCP_TAG_PARA_LIST       = 55,         // Parameter Request List\r
-  DHCP_TAG_MESSAGE         = 56,         // Message\r
-  DHCP_TAG_MAXMSG          = 57,         // Maximum DHCP Message Size\r
-  DHCP_TAG_T1              = 58,         // Renewal (T1) Time Value\r
-  DHCP_TAG_T2              = 59,         // Rebinding (T2) Time Value\r
-  DHCP_TAG_VENDOR_CLASS    = 60,         // Vendor class identifier\r
-  DHCP_TAG_CLIENT_ID       = 61          // Client-identifier\r
-} DHCP_TAGS;\r
-\r
-#define DHCP_OPTION_MAGIC      0x63538263 // Network byte order\r
-#define DHCP_MAX_OPTIONS              256\r
-\r
-typedef enum {\r
-  //\r
-  // DHCP option types, this is used to validate the DHCP options.\r
-  //\r
-  DHCP_OPTION_SWITCH       = 1,\r
-  DHCP_OPTION_INT8,\r
-  DHCP_OPTION_INT16,\r
-  DHCP_OPTION_INT32,\r
-  DHCP_OPTION_IP,\r
-  DHCP_OPTION_IPPAIR\r
-} DHCP_OPTION_TYPE; \r
-\r
-typedef enum {\r
-  //\r
-  // Value of DHCP overload option\r
-  //\r
-  DHCP_OVERLOAD_FILENAME   = 1,\r
-  DHCP_OVERLOAD_SVRNAME    = 2,\r
-  DHCP_OVERLOAD_BOTH       = 3\r
-} DHCP_OVERLOAD_TYPE;\r
+//\r
+// Value of DHCP overload option\r
+//\r
+#define DHCP_OVERLOAD_FILENAME    1\r
+#define DHCP_OVERLOAD_SVRNAME     2\r
+#define DHCP_OVERLOAD_BOTH        3\r
 \r
 ///\r
 /// The DHCP option structure. This structure extends the EFI_DHCP_OPTION\r
@@ -179,18 +64,18 @@ typedef struct {
 /// classless route, who can parse the DHCP offer to get them.\r
 ///\r
 typedef struct {\r
-  IP4_ADDR                  NetMask;  // DHCP_TAG_NETMASK\r
-  IP4_ADDR                  Router;   // DHCP_TAG_ROUTER, only the first router is used\r
+  IP4_ADDR                  NetMask;  // DHCP4_TAG_NETMASK\r
+  IP4_ADDR                  Router;   // DHCP4_TAG_ROUTER, only the first router is used\r
 \r
   //\r
   // DHCP specific options\r
   //\r
-  UINT8                     DhcpType; // DHCP_TAG_TYPE\r
-  UINT8                     Overload; // DHCP_TAG_OVERLOAD\r
-  IP4_ADDR                  ServerId; // DHCP_TAG_SERVER_ID\r
-  UINT32                    Lease;    // DHCP_TAG_LEASE\r
-  UINT32                    T1;       // DHCP_TAG_T1\r
-  UINT32                    T2;       // DHCP_TAG_T2\r
+  UINT8                     DhcpType; // DHCP4_TAG_MSG_TYPE\r
+  UINT8                     Overload; // DHCP4_TAG_OVERLOAD\r
+  IP4_ADDR                  ServerId; // DHCP4_TAG_SERVER_ID\r
+  UINT32                    Lease;    // DHCP4_TAG_LEASE\r
+  UINT32                    T1;       // DHCP4_TAG_T1\r
+  UINT32                    T2;       // DHCP4_TAG_T2\r
 } DHCP_PARAMETER;\r
 \r
 ///\r
@@ -280,6 +165,7 @@ DhcpValidateOptions (
   @param[out] OptionPoint            The array that contains the DHCP options. Caller\r
                                      should free it.\r
 \r
+  @retval EFI_NOT_FOUND          Cannot find any option.\r
   @retval EFI_OUT_OF_RESOURCES   Failed to allocate memory to parse the packet.\r
   @retval EFI_INVALID_PARAMETER  The options are mal-formated\r
   @retval EFI_SUCCESS            The options are parsed into OptionPoint\r