]> git.proxmox.com Git - mirror_edk2.git/commitdiff
MdePkg: Refine codes related to Dhcpv4 and Dhcpv6 configuration.
authorZhang Lubo <lubo.zhang@intel.com>
Wed, 22 Jun 2016 02:24:33 +0000 (10:24 +0800)
committerJiaxin Wu <jiaxin.wu@intel.com>
Thu, 23 Jun 2016 01:39:11 +0000 (09:39 +0800)
v2:
*add some new arch types for PXE boot.
refine the definition of arch types for http boot

Add a new head file Dhcp.h in Mde/Include/IndustryStandard, normalize the
universal option numbers and other network number tags.

Cc: Sriram Subramanian <sriram-s@hpe.com>
Cc: Liming Gao <liming.gao@intel.com>
Cc: Ye Ting <ting.ye@intel.com>
Cc: Fu Siyuan <siyuan.fu@intel.com>
Cc: Wu Jiaxin <jiaxin.wu@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Zhang Lubo <lubo.zhang@intel.com>
Reviewed-by: Fu Siyuan <siyuan.fu@intel.com>
MdePkg/Include/IndustryStandard/Dhcp.h [new file with mode: 0644]

diff --git a/MdePkg/Include/IndustryStandard/Dhcp.h b/MdePkg/Include/IndustryStandard/Dhcp.h
new file mode 100644 (file)
index 0000000..c451e2f
--- /dev/null
@@ -0,0 +1,282 @@
+/** @file\r
+  This file contains the DHCPv4 and DHCPv6 option definitions and other configuration.\r
+  They are used to carry additional information and parameters in DHCP messages.\r
+\r
+  Copyright (c) 2016, Intel Corporation. All rights reserved.<BR>\r
+  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
+**/\r
+\r
+#ifndef _DHCP_H_\r
+#define _DHCP_H_\r
+\r
+///\r
+/// Dynamic Host Configuration Protocol for IPv4 (DHCPv4)\r
+///\r
+/// Dhcpv4 Options, definitions from RFC 2132\r
+///\r
+#define DHCP4_TAG_PAD                0    /// Pad Option\r
+#define DHCP4_TAG_EOP                255  /// End Option\r
+#define DHCP4_TAG_NETMASK            1    /// Subnet Mask\r
+#define DHCP4_TAG_TIME_OFFSET        2    /// Time Offset from UTC\r
+#define DHCP4_TAG_ROUTER             3    /// Router option,\r
+#define DHCP4_TAG_TIME_SERVER        4    /// Time Server\r
+#define DHCP4_TAG_NAME_SERVER        5    /// Name Server\r
+#define DHCP4_TAG_DNS_SERVER         6    /// Domain Name Server\r
+#define DHCP4_TAG_LOG_SERVER         7    /// Log Server\r
+#define DHCP4_TAG_COOKIE_SERVER      8    /// Cookie Server\r
+#define DHCP4_TAG_LPR_SERVER         9    /// LPR Print Server\r
+#define DHCP4_TAG_IMPRESS_SERVER     10   /// Impress Server\r
+#define DHCP4_TAG_RL_SERVER          11   /// Resource Location Server\r
+#define DHCP4_TAG_HOSTNAME           12   /// Host Name\r
+#define DHCP4_TAG_BOOTFILE_LEN       13   /// Boot File Size\r
+#define DHCP4_TAG_DUMP               14   /// Merit Dump File\r
+#define DHCP4_TAG_DOMAINNAME         15   /// Domain Name\r
+#define DHCP4_TAG_SWAP_SERVER        16   /// Swap Server\r
+#define DHCP4_TAG_ROOTPATH           17   /// Root path\r
+#define DHCP4_TAG_EXTEND_PATH        18   /// Extensions Path\r
+#define DHCP4_TAG_IPFORWARD          19   /// IP Forwarding Enable/Disable\r
+#define DHCP4_TAG_NONLOCAL_SRR       20   /// on-Local Source Routing Enable/Disable\r
+#define DHCP4_TAG_POLICY_SRR         21   /// Policy Filter\r
+#define DHCP4_TAG_EMTU               22   /// Maximum Datagram Reassembly Size\r
+#define DHCP4_TAG_TTL                23   /// Default IP Time-to-live\r
+#define DHCP4_TAG_PATHMTU_AGE        24   /// Path MTU Aging Timeout\r
+#define DHCP4_TAG_PATHMTU_PLATEAU    25   /// Path MTU Plateau Table\r
+#define DHCP4_TAG_IFMTU              26   /// Interface MTU\r
+#define DHCP4_TAG_SUBNET_LOCAL       27   /// All Subnets are Local\r
+#define DHCP4_TAG_BROADCAST          28   /// Broadcast Address\r
+#define DHCP4_TAG_DISCOVER_MASK      29   /// Perform Mask Discovery\r
+#define DHCP4_TAG_SUPPLY_MASK        30   /// Mask Supplier\r
+#define DHCP4_TAG_DISCOVER_ROUTE     31   /// Perform Router Discovery\r
+#define DHCP4_TAG_ROUTER_SOLICIT     32   /// Router Solicitation Address\r
+#define DHCP4_TAG_STATIC_ROUTE       33   /// Static Route\r
+#define DHCP4_TAG_TRAILER            34   /// Trailer Encapsulation\r
+#define DHCP4_TAG_ARPAGE             35   /// ARP Cache Timeout\r
+#define DHCP4_TAG_ETHER_ENCAP        36   /// Ethernet Encapsulation\r
+#define DHCP4_TAG_TCP_TTL            37   /// TCP Default TTL\r
+#define DHCP4_TAG_KEEP_INTERVAL      38   /// TCP Keepalive Interval\r
+#define DHCP4_TAG_KEEP_GARBAGE       39   /// TCP Keepalive Garbage\r
+#define DHCP4_TAG_NIS_DOMAIN         40   /// Network Information Service Domain\r
+#define DHCP4_TAG_NIS_SERVER         41   /// Network Information Servers\r
+#define DHCP4_TAG_NTP_SERVER         42   /// Network Time Protocol Servers\r
+#define DHCP4_TAG_VENDOR             43   /// Vendor Specific Information\r
+#define DHCP4_TAG_NBNS               44   /// NetBIOS over TCP/IP Name Server\r
+#define DHCP4_TAG_NBDD               45   /// NetBIOS Datagram Distribution Server\r
+#define DHCP4_TAG_NBTYPE             46   /// NetBIOS over TCP/IP Node Type\r
+#define DHCP4_TAG_NBSCOPE            47   /// NetBIOS over TCP/IP Scope\r
+#define DHCP4_TAG_XFONT              48   /// X Window System Font Server\r
+#define DHCP4_TAG_XDM                49   /// X Window System Display Manager\r
+#define DHCP4_TAG_REQUEST_IP         50   /// Requested IP Address\r
+#define DHCP4_TAG_LEASE              51   /// IP Address Lease Time\r
+#define DHCP4_TAG_OVERLOAD           52   /// Option Overload\r
+#define DHCP4_TAG_MSG_TYPE           53   /// DHCP Message Type\r
+#define DHCP4_TAG_SERVER_ID          54   /// Server Identifier\r
+#define DHCP4_TAG_PARA_LIST          55   /// Parameter Request List\r
+#define DHCP4_TAG_MESSAGE            56   /// Message\r
+#define DHCP4_TAG_MAXMSG             57   /// Maximum DHCP Message Size\r
+#define DHCP4_TAG_T1                 58   /// Renewal (T1) Time Value\r
+#define DHCP4_TAG_T2                 59   /// Rebinding (T2) Time Value\r
+#define DHCP4_TAG_VENDOR_CLASS_ID    60   /// Vendor class identifier\r
+#define DHCP4_TAG_CLIENT_ID          61   /// Client-identifier\r
+#define DHCP4_TAG_NISPLUS            64   /// Network Information Service+ Domain\r
+#define DHCP4_TAG_NISPLUS_SERVER     65   /// Network Information Service+ Servers\r
+#define DHCP4_TAG_TFTP               66   /// TFTP server name\r
+#define DHCP4_TAG_BOOTFILE           67   /// Bootfile name\r
+#define DHCP4_TAG_MOBILEIP           68   /// Mobile IP Home Agent\r
+#define DHCP4_TAG_SMTP               69   /// Simple Mail Transport Protocol Server\r
+#define DHCP4_TAG_POP3               70   /// Post Office Protocol (POP3) Server\r
+#define DHCP4_TAG_NNTP               71   /// Network News Transport Protocol Server\r
+#define DHCP4_TAG_WWW                72   /// Default World Wide Web (WWW) Server\r
+#define DHCP4_TAG_FINGER             73   /// Default Finger Server\r
+#define DHCP4_TAG_IRC                74   /// Default Internet Relay Chat (IRC) Server\r
+#define DHCP4_TAG_STTALK             75   /// StreetTalk Server\r
+#define DHCP4_TAG_STDA               76   /// StreetTalk Directory Assistance Server\r
+#define DHCP4_TAG_USER_CLASS_ID      77   /// User class identifier\r
+#define DHCP4_TAG_ARCH               93   /// Client System Architecture Type, RFC 4578\r
+#define DHCP4_TAG_UNDI               94   /// Client Network Interface Identifier, RFC 4578\r
+#define DHCP4_TAG_UUID               97   /// Client Machine Identifier, RFC 4578\r
+#define DHCP4_TAG_CLASSLESS_ROUTE    121  /// Classless Route\r
+\r
+\r
+///\r
+/// Dynamic Host Configuration Protocol for IPv6 (DHCPv6)\r
+///\r
+/// Enumeration of Dhcp6 message type, refers to section-5.3 of rfc-3315.\r
+///\r
+typedef enum {\r
+  Dhcp6MsgSolicit               = 1,\r
+  Dhcp6MsgAdvertise             = 2,\r
+  Dhcp6MsgRequest               = 3,\r
+  Dhcp6MsgConfirm               = 4,\r
+  Dhcp6MsgRenew                 = 5,\r
+  Dhcp6MsgRebind                = 6,\r
+  Dhcp6MsgReply                 = 7,\r
+  Dhcp6MsgRelease               = 8,\r
+  Dhcp6MsgDecline               = 9,\r
+  Dhcp6MsgReconfigure           = 10,\r
+  Dhcp6MsgInfoRequest           = 11\r
+} DHCP6_MSG_TYPE;\r
+\r
+///\r
+/// Enumeration of option code in Dhcp6 packet, refers to section-24.3 of rfc-3315.\r
+///\r
+typedef enum {\r
+  Dhcp6OptClientId              = 1,\r
+  Dhcp6OptServerId              = 2,\r
+  Dhcp6OptIana                  = 3,\r
+  Dhcp6OptIata                  = 4,\r
+  Dhcp6OptIaAddr                = 5,\r
+  Dhcp6OptRequestOption         = 6,\r
+  Dhcp6OptPreference            = 7,\r
+  Dhcp6OptElapsedTime           = 8,\r
+  Dhcp6OptReplayMessage         = 9,\r
+  Dhcp6OptAuthentication        = 11,\r
+  Dhcp6OptServerUnicast         = 12,\r
+  Dhcp6OptStatusCode            = 13,\r
+  Dhcp6OptRapidCommit           = 14,\r
+  Dhcp6OptUserClass             = 15,\r
+  Dhcp6OptVendorClass           = 16,\r
+  Dhcp6OptVendorInfo            = 17,\r
+  Dhcp6OptInterfaceId           = 18,\r
+  Dhcp6OptReconfigMessage       = 19,\r
+  Dhcp6OptReconfigureAccept     = 20\r
+} DHCP6_OPT_CODE;\r
+\r
+///\r
+/// Enumeration of status code recorded by IANA, refers to section-24.4 of rfc-3315.\r
+///\r
+typedef enum {\r
+  Dhcp6StsSuccess               = 0,\r
+  Dhcp6StsUnspecFail            = 1,\r
+  Dhcp6StsNoAddrsAvail          = 2,\r
+  Dhcp6StsNoBinding             = 3,\r
+  Dhcp6StsNotOnLink             = 4,\r
+  Dhcp6StsUseMulticast          = 5\r
+} DHCP6_STS_CODE;\r
+\r
+///\r
+/// Enumeration of Duid type recorded by IANA, refers to section-24.5 of rfc-3315.\r
+///\r
+typedef enum {\r
+  Dhcp6DuidTypeLlt              = 1,\r
+  Dhcp6DuidTypeEn               = 2,\r
+  Dhcp6DuidTypeLl               = 3,\r
+  Dhcp6DuidTypeUuid             = 4\r
+} DHCP6_DUID_TYPE;\r
+\r
+/// Transmission and Retransmission Parameters\r
+/// This section presents a table of values used to describe the message\r
+/// transmission behavior of clients and servers.\r
+///\r
+/// Transmit parameters of solicit message, refers to section-5.5 of rfc-3315.\r
+///\r
+#define DHCP6_SOL_MAX_DELAY       1\r
+#define DHCP6_SOL_IRT             1\r
+#define DHCP6_SOL_MRC             0\r
+#define DHCP6_SOL_MRT             120\r
+#define DHCP6_SOL_MRD             0\r
+///\r
+/// Transmit parameters of request message, refers to section-5.5 of rfc-3315.\r
+///\r
+#define DHCP6_REQ_IRT             1\r
+#define DHCP6_REQ_MRC             10\r
+#define DHCP6_REQ_MRT             30\r
+#define DHCP6_REQ_MRD             0\r
+///\r
+/// Transmit parameters of confirm message, refers to section-5.5 of rfc-3315.\r
+///\r
+#define DHCP6_CNF_MAX_DELAY       1\r
+#define DHCP6_CNF_IRT             1\r
+#define DHCP6_CNF_MRC             0\r
+#define DHCP6_CNF_MRT             4\r
+#define DHCP6_CNF_MRD             10\r
+///\r
+/// Transmit parameters of renew message, refers to section-5.5 of rfc-3315.\r
+///\r
+#define DHCP6_REN_IRT             10\r
+#define DHCP6_REN_MRC             0\r
+#define DHCP6_REN_MRT             600\r
+#define DHCP6_REN_MRD             0\r
+///\r
+/// Transmit parameters of rebind message, refers to section-5.5 of rfc-3315.\r
+///\r
+#define DHCP6_REB_IRT             10\r
+#define DHCP6_REB_MRC             0\r
+#define DHCP6_REB_MRT             600\r
+#define DHCP6_REB_MRD             0\r
+///\r
+/// Transmit parameters of information request message, refers to section-5.5 of rfc-3315.\r
+///\r
+#define DHCP6_INF_MAX_DELAY       1\r
+#define DHCP6_INF_IRT             1\r
+#define DHCP6_INF_MRC             0\r
+#define DHCP6_INF_MRT             120\r
+#define DHCP6_INF_MRD             0\r
+///\r
+/// Transmit parameters of release message, refers to section-5.5 of rfc-3315.\r
+///\r
+#define DHCP6_REL_IRT             1\r
+#define DHCP6_REL_MRC             5\r
+#define DHCP6_REL_MRT             0\r
+#define DHCP6_REL_MRD             0\r
+///\r
+/// Transmit parameters of decline message, refers to section-5.5 of rfc-3315.\r
+///\r
+#define DHCP6_DEC_IRT             1\r
+#define DHCP6_DEC_MRC             5\r
+#define DHCP6_DEC_MRT             0\r
+#define DHCP6_DEC_MRD             0\r
+\r
+////\r
+//// DHCPv6 Options, definitions from RFC 3315,RFC 5970 and RFC 3646.\r
+////\r
+#define DHCP6_OPT_CLIENT_ID         1    /// Client Identifier Option\r
+#define DHCP6_OPT_SERVER_ID         2    /// Server Identifier Option\r
+#define DHCP6_OPT_IA_NA             3    /// The Identity Association for Non-temporary Addresses option\r
+#define DHCP6_OPT_IA_TA             4    /// The Identity Association for the Temporary Addresses\r
+#define DHCP6_OPT_IAADDR            5    /// IA Address option\r
+#define DHCP6_OPT_ORO               6    /// Request option\r
+#define DHCP6_OPT_PREFERENCE        7    /// Preference option\r
+#define DHCP6_OPT_ELAPSED_TIME      8    /// Elapsed Time Option\r
+#define DHCP6_OPT_REPLAY_MSG        9    /// Relay Message option\r
+#define DHCP6_OPT_AUTH              11   /// Authentication option\r
+#define DHCP6_OPT_UNICAST           12   /// Server Unicast Option\r
+#define DHCP6_OPT_STATUS_CODE       13   /// Status Code Option\r
+#define DHCP6_OPT_RAPID_COMMIT      14   /// Rapid Commit option\r
+#define DHCP6_OPT_USER_CLASS        15   /// User Class option\r
+#define DHCP6_OPT_VENDOR_CLASS      16   /// Vendor Class Option\r
+#define DHCP6_OPT_VENDOR_OPTS       17   /// Vendor-specific Information Option\r
+#define DHCP6_OPT_INTERFACE_ID      18   /// Interface-Id Option\r
+#define DHCP6_OPT_RECONFIG_MSG      19   /// Reconfigure Message Option\r
+#define DHCP6_OPT_RECONFIG_ACCEPT   20   /// Reconfigure Accept Option\r
+#define DHCP6_OPT_DNS_SERVERS       23   /// DNS Configuration options, RFC 3646\r
+#define DHCP6_OPT_BOOT_FILE_URL     59   /// Assigned by IANA, RFC 5970\r
+#define DHCP6_OPT_BOOT_FILE_PARAM   60   /// Assigned by IANA, RFC 5970\r
+#define DHCP6_OPT_ARCH              61   /// Assigned by IANA, RFC 5970\r
+#define DHCP6_OPT_UNDI              62   /// Assigned by IANA, RFC 5970\r
+\r
+///\r
+/// Processor Architecture Types\r
+/// These identifiers are defined by IETF:\r
+/// http://www.ietf.org/assignments/dhcpv6-parameters/dhcpv6-parameters.xml\r
+///\r
+#define PXE_CLIENT_ARCH_X86_BIOS         0x0000    /// x86 BIOS for PXE\r
+#define PXE_CLIENT_ARCH_IPF              0x0002    /// Itanium for PXE\r
+#define PXE_CLIENT_ARCH_IA32             0x0006    /// x86 uefi for PXE\r
+#define PXE_CLIENT_ARCH_X64              0x0007    /// x64 uefi for PXE\r
+#define PXE_CLIENT_ARCH_EBC              0x0009    /// EBC for PXE\r
+#define PXE_CLIENT_ARCH_ARM              0x000A    /// Arm uefi 32 for PXE\r
+#define PXE_CLIENT_ARCH_AARCH64          0x000B    /// Arm uefi 64 for PXE\r
+\r
+#define HTTP_CLIENT_ARCH_IA32            0x000F    /// x86 uefi boot from http\r
+#define HTTP_CLIENT_ARCH_X64             0x0010    /// x64 uefi boot from http\r
+#define HTTP_CLIENT_ARCH_EBC             0x0011    /// EBC boot from http\r
+#define HTTP_CLIENT_ARCH_ARM             0x0012    /// Arm uefi 32 boot from http\r
+#define HTTP_CLIENT_ARCH_AARCH64         0x0013    /// Arm uefi 64 boot from http\r
+\r
+#endif\r