]> git.proxmox.com Git - mirror_edk2.git/blame - MdePkg/Include/IndustryStandard/Dhcp.h
UefiCpuPkg: Move AsmRelocateApLoopStart from Mpfuncs.nasm to AmdSev.nasm
[mirror_edk2.git] / MdePkg / Include / IndustryStandard / Dhcp.h
CommitLineData
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
d2c0d52e 7 Copyright (c) 2022, Loongson Technology Corporation Limited. All rights reserved.<BR>\r
9344f092 8 SPDX-License-Identifier: BSD-2-Clause-Patent\r
8d648abc
ZL
9**/\r
10\r
11#ifndef _DHCP_H_\r
12#define _DHCP_H_\r
13\r
14///\r
15/// Dynamic Host Configuration Protocol for IPv4 (DHCPv4)\r
16///\r
17/// Dhcpv4 Options, definitions from RFC 2132\r
18///\r
2f88bd3a
MK
19#define DHCP4_TAG_PAD 0 /// Pad Option\r
20#define DHCP4_TAG_EOP 255 /// End Option\r
21#define DHCP4_TAG_NETMASK 1 /// Subnet Mask\r
22#define DHCP4_TAG_TIME_OFFSET 2 /// Time Offset from UTC\r
23#define DHCP4_TAG_ROUTER 3 /// Router option,\r
24#define DHCP4_TAG_TIME_SERVER 4 /// Time Server\r
25#define DHCP4_TAG_NAME_SERVER 5 /// Name Server\r
26#define DHCP4_TAG_DNS_SERVER 6 /// Domain Name Server\r
27#define DHCP4_TAG_LOG_SERVER 7 /// Log Server\r
28#define DHCP4_TAG_COOKIE_SERVER 8 /// Cookie Server\r
29#define DHCP4_TAG_LPR_SERVER 9 /// LPR Print Server\r
30#define DHCP4_TAG_IMPRESS_SERVER 10 /// Impress Server\r
31#define DHCP4_TAG_RL_SERVER 11 /// Resource Location Server\r
32#define DHCP4_TAG_HOSTNAME 12 /// Host Name\r
33#define DHCP4_TAG_BOOTFILE_LEN 13 /// Boot File Size\r
34#define DHCP4_TAG_DUMP 14 /// Merit Dump File\r
35#define DHCP4_TAG_DOMAINNAME 15 /// Domain Name\r
36#define DHCP4_TAG_SWAP_SERVER 16 /// Swap Server\r
37#define DHCP4_TAG_ROOTPATH 17 /// Root path\r
38#define DHCP4_TAG_EXTEND_PATH 18 /// Extensions Path\r
39#define DHCP4_TAG_IPFORWARD 19 /// IP Forwarding Enable/Disable\r
40#define DHCP4_TAG_NONLOCAL_SRR 20 /// on-Local Source Routing Enable/Disable\r
41#define DHCP4_TAG_POLICY_SRR 21 /// Policy Filter\r
42#define DHCP4_TAG_EMTU 22 /// Maximum Datagram Reassembly Size\r
43#define DHCP4_TAG_TTL 23 /// Default IP Time-to-live\r
44#define DHCP4_TAG_PATHMTU_AGE 24 /// Path MTU Aging Timeout\r
45#define DHCP4_TAG_PATHMTU_PLATEAU 25 /// Path MTU Plateau Table\r
46#define DHCP4_TAG_IFMTU 26 /// Interface MTU\r
47#define DHCP4_TAG_SUBNET_LOCAL 27 /// All Subnets are Local\r
48#define DHCP4_TAG_BROADCAST 28 /// Broadcast Address\r
49#define DHCP4_TAG_DISCOVER_MASK 29 /// Perform Mask Discovery\r
50#define DHCP4_TAG_SUPPLY_MASK 30 /// Mask Supplier\r
51#define DHCP4_TAG_DISCOVER_ROUTE 31 /// Perform Router Discovery\r
52#define DHCP4_TAG_ROUTER_SOLICIT 32 /// Router Solicitation Address\r
53#define DHCP4_TAG_STATIC_ROUTE 33 /// Static Route\r
54#define DHCP4_TAG_TRAILER 34 /// Trailer Encapsulation\r
55#define DHCP4_TAG_ARPAGE 35 /// ARP Cache Timeout\r
56#define DHCP4_TAG_ETHER_ENCAP 36 /// Ethernet Encapsulation\r
57#define DHCP4_TAG_TCP_TTL 37 /// TCP Default TTL\r
58#define DHCP4_TAG_KEEP_INTERVAL 38 /// TCP Keepalive Interval\r
59#define DHCP4_TAG_KEEP_GARBAGE 39 /// TCP Keepalive Garbage\r
60#define DHCP4_TAG_NIS_DOMAIN 40 /// Network Information Service Domain\r
61#define DHCP4_TAG_NIS_SERVER 41 /// Network Information Servers\r
62#define DHCP4_TAG_NTP_SERVER 42 /// Network Time Protocol Servers\r
63#define DHCP4_TAG_VENDOR 43 /// Vendor Specific Information\r
64#define DHCP4_TAG_NBNS 44 /// NetBIOS over TCP/IP Name Server\r
65#define DHCP4_TAG_NBDD 45 /// NetBIOS Datagram Distribution Server\r
66#define DHCP4_TAG_NBTYPE 46 /// NetBIOS over TCP/IP Node Type\r
67#define DHCP4_TAG_NBSCOPE 47 /// NetBIOS over TCP/IP Scope\r
68#define DHCP4_TAG_XFONT 48 /// X Window System Font Server\r
69#define DHCP4_TAG_XDM 49 /// X Window System Display Manager\r
70#define DHCP4_TAG_REQUEST_IP 50 /// Requested IP Address\r
71#define DHCP4_TAG_LEASE 51 /// IP Address Lease Time\r
72#define DHCP4_TAG_OVERLOAD 52 /// Option Overload\r
73#define DHCP4_TAG_MSG_TYPE 53 /// DHCP Message Type\r
74#define DHCP4_TAG_SERVER_ID 54 /// Server Identifier\r
75#define DHCP4_TAG_PARA_LIST 55 /// Parameter Request List\r
76#define DHCP4_TAG_MESSAGE 56 /// Message\r
77#define DHCP4_TAG_MAXMSG 57 /// Maximum DHCP Message Size\r
78#define DHCP4_TAG_T1 58 /// Renewal (T1) Time Value\r
79#define DHCP4_TAG_T2 59 /// Rebinding (T2) Time Value\r
80#define DHCP4_TAG_VENDOR_CLASS_ID 60 /// Vendor class identifier\r
81#define DHCP4_TAG_CLIENT_ID 61 /// Client-identifier\r
82#define DHCP4_TAG_NISPLUS 64 /// Network Information Service+ Domain\r
83#define DHCP4_TAG_NISPLUS_SERVER 65 /// Network Information Service+ Servers\r
84#define DHCP4_TAG_TFTP 66 /// TFTP server name\r
85#define DHCP4_TAG_BOOTFILE 67 /// Bootfile name\r
86#define DHCP4_TAG_MOBILEIP 68 /// Mobile IP Home Agent\r
87#define DHCP4_TAG_SMTP 69 /// Simple Mail Transport Protocol Server\r
88#define DHCP4_TAG_POP3 70 /// Post Office Protocol (POP3) Server\r
89#define DHCP4_TAG_NNTP 71 /// Network News Transport Protocol Server\r
90#define DHCP4_TAG_WWW 72 /// Default World Wide Web (WWW) Server\r
91#define DHCP4_TAG_FINGER 73 /// Default Finger Server\r
92#define DHCP4_TAG_IRC 74 /// Default Internet Relay Chat (IRC) Server\r
93#define DHCP4_TAG_STTALK 75 /// StreetTalk Server\r
94#define DHCP4_TAG_STDA 76 /// StreetTalk Directory Assistance Server\r
95#define DHCP4_TAG_USER_CLASS_ID 77 /// User class identifier\r
96#define DHCP4_TAG_ARCH 93 /// Client System Architecture Type, RFC 4578\r
97#define DHCP4_TAG_UNDI 94 /// Client Network Interface Identifier, RFC 4578\r
98#define DHCP4_TAG_UUID 97 /// Client Machine Identifier, RFC 4578\r
99#define DHCP4_TAG_CLASSLESS_ROUTE 121 /// Classless Route\r
8d648abc
ZL
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
106typedef enum {\r
2f88bd3a
MK
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
8d648abc
ZL
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
123typedef enum {\r
2f88bd3a
MK
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
8d648abc
ZL
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
148typedef enum {\r
2f88bd3a
MK
149 Dhcp6StsSuccess = 0,\r
150 Dhcp6StsUnspecFail = 1,\r
151 Dhcp6StsNoAddrsAvail = 2,\r
152 Dhcp6StsNoBinding = 3,\r
153 Dhcp6StsNotOnLink = 4,\r
154 Dhcp6StsUseMulticast = 5\r
8d648abc
ZL
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
160typedef enum {\r
2f88bd3a
MK
161 Dhcp6DuidTypeLlt = 1,\r
162 Dhcp6DuidTypeEn = 2,\r
163 Dhcp6DuidTypeLl = 3,\r
164 Dhcp6DuidTypeUuid = 4\r
8d648abc
ZL
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
2f88bd3a
MK
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
8d648abc
ZL
178///\r
179/// Transmit parameters of request message, refers to section-5.5 of rfc-3315.\r
180///\r
2f88bd3a
MK
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
8d648abc
ZL
185///\r
186/// Transmit parameters of confirm message, refers to section-5.5 of rfc-3315.\r
187///\r
2f88bd3a
MK
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
8d648abc
ZL
193///\r
194/// Transmit parameters of renew message, refers to section-5.5 of rfc-3315.\r
195///\r
2f88bd3a
MK
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
8d648abc
ZL
200///\r
201/// Transmit parameters of rebind message, refers to section-5.5 of rfc-3315.\r
202///\r
2f88bd3a
MK
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
8d648abc
ZL
207///\r
208/// Transmit parameters of information request message, refers to section-5.5 of rfc-3315.\r
209///\r
2f88bd3a
MK
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
8d648abc
ZL
215///\r
216/// Transmit parameters of release message, refers to section-5.5 of rfc-3315.\r
217///\r
2f88bd3a
MK
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
8d648abc
ZL
222///\r
223/// Transmit parameters of decline message, refers to section-5.5 of rfc-3315.\r
224///\r
2f88bd3a
MK
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
8d648abc
ZL
229\r
230////\r
231//// DHCPv6 Options, definitions from RFC 3315,RFC 5970 and RFC 3646.\r
232////\r
2f88bd3a
MK
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
8d648abc
ZL
257\r
258///\r
259/// Processor Architecture Types\r
d2c0d52e
CL
260/// These identifiers are defined by IANA:\r
261/// https://www.iana.org/assignments/dhcpv6-parameters/dhcpv6-parameters.xhtml\r
8d648abc 262///\r
d2c0d52e
CL
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
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
273#define PXE_CLIENT_ARCH_LOONGARCH32 0x0025 /// LoongArch uefi 32 for PXE\r
274#define PXE_CLIENT_ARCH_LOONGARCH64 0x0027 /// LoongArch uefi 64 for PXE\r
8d648abc 275\r
d2c0d52e
CL
276#define HTTP_CLIENT_ARCH_IA32 0x000F /// x86 uefi boot from http\r
277#define HTTP_CLIENT_ARCH_X64 0x0010 /// x64 uefi boot from http\r
278#define HTTP_CLIENT_ARCH_EBC 0x0011 /// EBC boot from http\r
279#define HTTP_CLIENT_ARCH_ARM 0x0012 /// Arm uefi 32 boot from http\r
280#define HTTP_CLIENT_ARCH_AARCH64 0x0013 /// Arm uefi 64 boot from http\r
281#define HTTP_CLIENT_ARCH_RISCV32 0x001A /// RISC-V uefi 32 boot from http\r
282#define HTTP_CLIENT_ARCH_RISCV64 0x001C /// RISC-V uefi 64 boot from http\r
283#define HTTP_CLIENT_ARCH_RISCV128 0x001E /// RISC-V uefi 128 boot from http\r
284#define HTTP_CLIENT_ARCH_LOONGARCH32 0x0026 /// LoongArch uefi 32 boot from http\r
285#define HTTP_CLIENT_ARCH_LOONGARCH64 0x0028 /// LoongArch uefi 64 boot from http\r
8d648abc
ZL
286\r
287#endif\r