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
|
---|