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