1 /** @file 2 This file contains the DHCPv4 and DHCPv6 option definitions and other configuration. 3 They are used to carry additional information and parameters in DHCP messages. 4 5 Copyright (c) 2016, Intel Corporation. All rights reserved.<BR> 6 This program and the accompanying materials 7 are licensed and made available under the terms and conditions of the BSD License 8 which accompanies this distribution. The full text of the license may be found at 9 http://opensource.org/licenses/bsd-license.php 10 11 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 12 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 13 **/ 14 15 #ifndef _DHCP_H_ 16 #define _DHCP_H_ 17 18 /// 19 /// Dynamic Host Configuration Protocol for IPv4 (DHCPv4) 20 /// 21 /// Dhcpv4 Options, definitions from RFC 2132 22 /// 23 #define DHCP4_TAG_PAD 0 /// Pad Option 24 #define DHCP4_TAG_EOP 255 /// End Option 25 #define DHCP4_TAG_NETMASK 1 /// Subnet Mask 26 #define DHCP4_TAG_TIME_OFFSET 2 /// Time Offset from UTC 27 #define DHCP4_TAG_ROUTER 3 /// Router option, 28 #define DHCP4_TAG_TIME_SERVER 4 /// Time Server 29 #define DHCP4_TAG_NAME_SERVER 5 /// Name Server 30 #define DHCP4_TAG_DNS_SERVER 6 /// Domain Name Server 31 #define DHCP4_TAG_LOG_SERVER 7 /// Log Server 32 #define DHCP4_TAG_COOKIE_SERVER 8 /// Cookie Server 33 #define DHCP4_TAG_LPR_SERVER 9 /// LPR Print Server 34 #define DHCP4_TAG_IMPRESS_SERVER 10 /// Impress Server 35 #define DHCP4_TAG_RL_SERVER 11 /// Resource Location Server 36 #define DHCP4_TAG_HOSTNAME 12 /// Host Name 37 #define DHCP4_TAG_BOOTFILE_LEN 13 /// Boot File Size 38 #define DHCP4_TAG_DUMP 14 /// Merit Dump File 39 #define DHCP4_TAG_DOMAINNAME 15 /// Domain Name 40 #define DHCP4_TAG_SWAP_SERVER 16 /// Swap Server 41 #define DHCP4_TAG_ROOTPATH 17 /// Root path 42 #define DHCP4_TAG_EXTEND_PATH 18 /// Extensions Path 43 #define DHCP4_TAG_IPFORWARD 19 /// IP Forwarding Enable/Disable 44 #define DHCP4_TAG_NONLOCAL_SRR 20 /// on-Local Source Routing Enable/Disable 45 #define DHCP4_TAG_POLICY_SRR 21 /// Policy Filter 46 #define DHCP4_TAG_EMTU 22 /// Maximum Datagram Reassembly Size 47 #define DHCP4_TAG_TTL 23 /// Default IP Time-to-live 48 #define DHCP4_TAG_PATHMTU_AGE 24 /// Path MTU Aging Timeout 49 #define DHCP4_TAG_PATHMTU_PLATEAU 25 /// Path MTU Plateau Table 50 #define DHCP4_TAG_IFMTU 26 /// Interface MTU 51 #define DHCP4_TAG_SUBNET_LOCAL 27 /// All Subnets are Local 52 #define DHCP4_TAG_BROADCAST 28 /// Broadcast Address 53 #define DHCP4_TAG_DISCOVER_MASK 29 /// Perform Mask Discovery 54 #define DHCP4_TAG_SUPPLY_MASK 30 /// Mask Supplier 55 #define DHCP4_TAG_DISCOVER_ROUTE 31 /// Perform Router Discovery 56 #define DHCP4_TAG_ROUTER_SOLICIT 32 /// Router Solicitation Address 57 #define DHCP4_TAG_STATIC_ROUTE 33 /// Static Route 58 #define DHCP4_TAG_TRAILER 34 /// Trailer Encapsulation 59 #define DHCP4_TAG_ARPAGE 35 /// ARP Cache Timeout 60 #define DHCP4_TAG_ETHER_ENCAP 36 /// Ethernet Encapsulation 61 #define DHCP4_TAG_TCP_TTL 37 /// TCP Default TTL 62 #define DHCP4_TAG_KEEP_INTERVAL 38 /// TCP Keepalive Interval 63 #define DHCP4_TAG_KEEP_GARBAGE 39 /// TCP Keepalive Garbage 64 #define DHCP4_TAG_NIS_DOMAIN 40 /// Network Information Service Domain 65 #define DHCP4_TAG_NIS_SERVER 41 /// Network Information Servers 66 #define DHCP4_TAG_NTP_SERVER 42 /// Network Time Protocol Servers 67 #define DHCP4_TAG_VENDOR 43 /// Vendor Specific Information 68 #define DHCP4_TAG_NBNS 44 /// NetBIOS over TCP/IP Name Server 69 #define DHCP4_TAG_NBDD 45 /// NetBIOS Datagram Distribution Server 70 #define DHCP4_TAG_NBTYPE 46 /// NetBIOS over TCP/IP Node Type 71 #define DHCP4_TAG_NBSCOPE 47 /// NetBIOS over TCP/IP Scope 72 #define DHCP4_TAG_XFONT 48 /// X Window System Font Server 73 #define DHCP4_TAG_XDM 49 /// X Window System Display Manager 74 #define DHCP4_TAG_REQUEST_IP 50 /// Requested IP Address 75 #define DHCP4_TAG_LEASE 51 /// IP Address Lease Time 76 #define DHCP4_TAG_OVERLOAD 52 /// Option Overload 77 #define DHCP4_TAG_MSG_TYPE 53 /// DHCP Message Type 78 #define DHCP4_TAG_SERVER_ID 54 /// Server Identifier 79 #define DHCP4_TAG_PARA_LIST 55 /// Parameter Request List 80 #define DHCP4_TAG_MESSAGE 56 /// Message 81 #define DHCP4_TAG_MAXMSG 57 /// Maximum DHCP Message Size 82 #define DHCP4_TAG_T1 58 /// Renewal (T1) Time Value 83 #define DHCP4_TAG_T2 59 /// Rebinding (T2) Time Value 84 #define DHCP4_TAG_VENDOR_CLASS_ID 60 /// Vendor class identifier 85 #define DHCP4_TAG_CLIENT_ID 61 /// Client-identifier 86 #define DHCP4_TAG_NISPLUS 64 /// Network Information Service+ Domain 87 #define DHCP4_TAG_NISPLUS_SERVER 65 /// Network Information Service+ Servers 88 #define DHCP4_TAG_TFTP 66 /// TFTP server name 89 #define DHCP4_TAG_BOOTFILE 67 /// Bootfile name 90 #define DHCP4_TAG_MOBILEIP 68 /// Mobile IP Home Agent 91 #define DHCP4_TAG_SMTP 69 /// Simple Mail Transport Protocol Server 92 #define DHCP4_TAG_POP3 70 /// Post Office Protocol (POP3) Server 93 #define DHCP4_TAG_NNTP 71 /// Network News Transport Protocol Server 94 #define DHCP4_TAG_WWW 72 /// Default World Wide Web (WWW) Server 95 #define DHCP4_TAG_FINGER 73 /// Default Finger Server 96 #define DHCP4_TAG_IRC 74 /// Default Internet Relay Chat (IRC) Server 97 #define DHCP4_TAG_STTALK 75 /// StreetTalk Server 98 #define DHCP4_TAG_STDA 76 /// StreetTalk Directory Assistance Server 99 #define DHCP4_TAG_USER_CLASS_ID 77 /// User class identifier 100 #define DHCP4_TAG_ARCH 93 /// Client System Architecture Type, RFC 4578 101 #define DHCP4_TAG_UNDI 94 /// Client Network Interface Identifier, RFC 4578 102 #define DHCP4_TAG_UUID 97 /// Client Machine Identifier, RFC 4578 103 #define DHCP4_TAG_CLASSLESS_ROUTE 121 /// Classless Route 104 105 106 /// 107 /// Dynamic Host Configuration Protocol for IPv6 (DHCPv6) 108 /// 109 /// Enumeration of Dhcp6 message type, refers to section-5.3 of rfc-3315. 110 /// 111 typedef enum { 112 Dhcp6MsgSolicit = 1, 113 Dhcp6MsgAdvertise = 2, 114 Dhcp6MsgRequest = 3, 115 Dhcp6MsgConfirm = 4, 116 Dhcp6MsgRenew = 5, 117 Dhcp6MsgRebind = 6, 118 Dhcp6MsgReply = 7, 119 Dhcp6MsgRelease = 8, 120 Dhcp6MsgDecline = 9, 121 Dhcp6MsgReconfigure = 10, 122 Dhcp6MsgInfoRequest = 11 123 } DHCP6_MSG_TYPE; 124 125 /// 126 /// Enumeration of option code in Dhcp6 packet, refers to section-24.3 of rfc-3315. 127 /// 128 typedef enum { 129 Dhcp6OptClientId = 1, 130 Dhcp6OptServerId = 2, 131 Dhcp6OptIana = 3, 132 Dhcp6OptIata = 4, 133 Dhcp6OptIaAddr = 5, 134 Dhcp6OptRequestOption = 6, 135 Dhcp6OptPreference = 7, 136 Dhcp6OptElapsedTime = 8, 137 Dhcp6OptReplayMessage = 9, 138 Dhcp6OptAuthentication = 11, 139 Dhcp6OptServerUnicast = 12, 140 Dhcp6OptStatusCode = 13, 141 Dhcp6OptRapidCommit = 14, 142 Dhcp6OptUserClass = 15, 143 Dhcp6OptVendorClass = 16, 144 Dhcp6OptVendorInfo = 17, 145 Dhcp6OptInterfaceId = 18, 146 Dhcp6OptReconfigMessage = 19, 147 Dhcp6OptReconfigureAccept = 20 148 } DHCP6_OPT_CODE; 149 150 /// 151 /// Enumeration of status code recorded by IANA, refers to section-24.4 of rfc-3315. 152 /// 153 typedef enum { 154 Dhcp6StsSuccess = 0, 155 Dhcp6StsUnspecFail = 1, 156 Dhcp6StsNoAddrsAvail = 2, 157 Dhcp6StsNoBinding = 3, 158 Dhcp6StsNotOnLink = 4, 159 Dhcp6StsUseMulticast = 5 160 } DHCP6_STS_CODE; 161 162 /// 163 /// Enumeration of Duid type recorded by IANA, refers to section-24.5 of rfc-3315. 164 /// 165 typedef enum { 166 Dhcp6DuidTypeLlt = 1, 167 Dhcp6DuidTypeEn = 2, 168 Dhcp6DuidTypeLl = 3, 169 Dhcp6DuidTypeUuid = 4 170 } DHCP6_DUID_TYPE; 171 172 /// Transmission and Retransmission Parameters 173 /// This section presents a table of values used to describe the message 174 /// transmission behavior of clients and servers. 175 /// 176 /// Transmit parameters of solicit message, refers to section-5.5 of rfc-3315. 177 /// 178 #define DHCP6_SOL_MAX_DELAY 1 179 #define DHCP6_SOL_IRT 1 180 #define DHCP6_SOL_MRC 0 181 #define DHCP6_SOL_MRT 120 182 #define DHCP6_SOL_MRD 0 183 /// 184 /// Transmit parameters of request message, refers to section-5.5 of rfc-3315. 185 /// 186 #define DHCP6_REQ_IRT 1 187 #define DHCP6_REQ_MRC 10 188 #define DHCP6_REQ_MRT 30 189 #define DHCP6_REQ_MRD 0 190 /// 191 /// Transmit parameters of confirm message, refers to section-5.5 of rfc-3315. 192 /// 193 #define DHCP6_CNF_MAX_DELAY 1 194 #define DHCP6_CNF_IRT 1 195 #define DHCP6_CNF_MRC 0 196 #define DHCP6_CNF_MRT 4 197 #define DHCP6_CNF_MRD 10 198 /// 199 /// Transmit parameters of renew message, refers to section-5.5 of rfc-3315. 200 /// 201 #define DHCP6_REN_IRT 10 202 #define DHCP6_REN_MRC 0 203 #define DHCP6_REN_MRT 600 204 #define DHCP6_REN_MRD 0 205 /// 206 /// Transmit parameters of rebind message, refers to section-5.5 of rfc-3315. 207 /// 208 #define DHCP6_REB_IRT 10 209 #define DHCP6_REB_MRC 0 210 #define DHCP6_REB_MRT 600 211 #define DHCP6_REB_MRD 0 212 /// 213 /// Transmit parameters of information request message, refers to section-5.5 of rfc-3315. 214 /// 215 #define DHCP6_INF_MAX_DELAY 1 216 #define DHCP6_INF_IRT 1 217 #define DHCP6_INF_MRC 0 218 #define DHCP6_INF_MRT 120 219 #define DHCP6_INF_MRD 0 220 /// 221 /// Transmit parameters of release message, refers to section-5.5 of rfc-3315. 222 /// 223 #define DHCP6_REL_IRT 1 224 #define DHCP6_REL_MRC 5 225 #define DHCP6_REL_MRT 0 226 #define DHCP6_REL_MRD 0 227 /// 228 /// Transmit parameters of decline message, refers to section-5.5 of rfc-3315. 229 /// 230 #define DHCP6_DEC_IRT 1 231 #define DHCP6_DEC_MRC 5 232 #define DHCP6_DEC_MRT 0 233 #define DHCP6_DEC_MRD 0 234 235 //// 236 //// DHCPv6 Options, definitions from RFC 3315,RFC 5970 and RFC 3646. 237 //// 238 #define DHCP6_OPT_CLIENT_ID 1 /// Client Identifier Option 239 #define DHCP6_OPT_SERVER_ID 2 /// Server Identifier Option 240 #define DHCP6_OPT_IA_NA 3 /// The Identity Association for Non-temporary Addresses option 241 #define DHCP6_OPT_IA_TA 4 /// The Identity Association for the Temporary Addresses 242 #define DHCP6_OPT_IAADDR 5 /// IA Address option 243 #define DHCP6_OPT_ORO 6 /// Request option 244 #define DHCP6_OPT_PREFERENCE 7 /// Preference option 245 #define DHCP6_OPT_ELAPSED_TIME 8 /// Elapsed Time Option 246 #define DHCP6_OPT_REPLAY_MSG 9 /// Relay Message option 247 #define DHCP6_OPT_AUTH 11 /// Authentication option 248 #define DHCP6_OPT_UNICAST 12 /// Server Unicast Option 249 #define DHCP6_OPT_STATUS_CODE 13 /// Status Code Option 250 #define DHCP6_OPT_RAPID_COMMIT 14 /// Rapid Commit option 251 #define DHCP6_OPT_USER_CLASS 15 /// User Class option 252 #define DHCP6_OPT_VENDOR_CLASS 16 /// Vendor Class Option 253 #define DHCP6_OPT_VENDOR_OPTS 17 /// Vendor-specific Information Option 254 #define DHCP6_OPT_INTERFACE_ID 18 /// Interface-Id Option 255 #define DHCP6_OPT_RECONFIG_MSG 19 /// Reconfigure Message Option 256 #define DHCP6_OPT_RECONFIG_ACCEPT 20 /// Reconfigure Accept Option 257 #define DHCP6_OPT_DNS_SERVERS 23 /// DNS Configuration options, RFC 3646 258 #define DHCP6_OPT_BOOT_FILE_URL 59 /// Assigned by IANA, RFC 5970 259 #define DHCP6_OPT_BOOT_FILE_PARAM 60 /// Assigned by IANA, RFC 5970 260 #define DHCP6_OPT_ARCH 61 /// Assigned by IANA, RFC 5970 261 #define DHCP6_OPT_UNDI 62 /// Assigned by IANA, RFC 5970 262 263 /// 264 /// Processor Architecture Types 265 /// These identifiers are defined by IETF: 266 /// http://www.ietf.org/assignments/dhcpv6-parameters/dhcpv6-parameters.xml 267 /// 268 #define PXE_CLIENT_ARCH_X86_BIOS 0x0000 /// x86 BIOS for PXE 269 #define PXE_CLIENT_ARCH_IPF 0x0002 /// Itanium for PXE 270 #define PXE_CLIENT_ARCH_IA32 0x0006 /// x86 uefi for PXE 271 #define PXE_CLIENT_ARCH_X64 0x0007 /// x64 uefi for PXE 272 #define PXE_CLIENT_ARCH_EBC 0x0009 /// EBC for PXE 273 #define PXE_CLIENT_ARCH_ARM 0x000A /// Arm uefi 32 for PXE 274 #define PXE_CLIENT_ARCH_AARCH64 0x000B /// Arm uefi 64 for PXE 275 276 #define HTTP_CLIENT_ARCH_IA32 0x000F /// x86 uefi boot from http 277 #define HTTP_CLIENT_ARCH_X64 0x0010 /// x64 uefi boot from http 278 #define HTTP_CLIENT_ARCH_EBC 0x0011 /// EBC boot from http 279 #define HTTP_CLIENT_ARCH_ARM 0x0012 /// Arm uefi 32 boot from http 280 #define HTTP_CLIENT_ARCH_AARCH64 0x0013 /// Arm uefi 64 boot from http 281 282 #endif 283