]> git.proxmox.com Git - mirror_edk2.git/blame - EdkCompatibilityPkg/Foundation/Efi/Protocol/Dhcp4/Dhcp4.h
Add in the 1st version of ECP.
[mirror_edk2.git] / EdkCompatibilityPkg / Foundation / Efi / Protocol / Dhcp4 / Dhcp4.h
CommitLineData
3eb9473e 1/*++\r
2\r
3Copyright (c) 2006, Intel Corporation \r
4All rights reserved. This program and the accompanying materials \r
5are licensed and made available under the terms and conditions of the BSD License \r
6which accompanies this distribution. The full text of the license may be found at \r
7http://opensource.org/licenses/bsd-license.php \r
8 \r
9THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
10WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
11\r
12Module Name:\r
13\r
14 Dhcp4.h\r
15\r
16Abstract:\r
17\r
18 UEFI Dynamic Host Configuration Protocol 4 Definition\r
19\r
20--*/\r
21\r
22#ifndef _DHCP4_H_\r
23#define _DHCP4_H_\r
24\r
25#include EFI_PROTOCOL_DEFINITION (ServiceBinding)\r
26#include EFI_PROTOCOL_DEFINITION (Udp4)\r
27\r
28//GUID definitions\r
29#define EFI_DHCP4_PROTOCOL_GUID \\r
30 {0x8a219718, 0x4ef5, 0x4761, 0x91, 0xc8, 0xc0, 0xf0, 0x4b, 0xda, 0x9e, 0x56}\r
31\r
32#define EFI_DHCP4_SERVICE_BINDING_PROTOCOL_GUID \\r
33 {0x9d9a39d8, 0xbd42, 0x4a73, 0xa4, 0xd5, 0x8e, 0xe9, 0x4b, 0xe1, 0x13, 0x80}\r
34 \r
35extern EFI_GUID gEfiDhcp4ProtocolGuid;\r
36extern EFI_GUID gEfiDhcp4ServiceBindingProtocolGuid;\r
37\r
38EFI_FORWARD_DECLARATION (EFI_DHCP4_PROTOCOL);\r
39\r
40#pragma pack(1)\r
41typedef struct {\r
42 UINT8 OpCode;\r
43 UINT8 Length;\r
44 UINT8 Data[1];\r
45} EFI_DHCP4_PACKET_OPTION;\r
46\r
47typedef struct{\r
48 UINT8 OpCode;\r
49 UINT8 HwType;\r
50 UINT8 HwAddrLen;\r
51 UINT8 Hops;\r
52 UINT32 Xid;\r
53 UINT16 Seconds;\r
54 UINT16 Reserved;\r
55 EFI_IPv4_ADDRESS ClientAddr; \r
56 EFI_IPv4_ADDRESS YourAddr; \r
57 EFI_IPv4_ADDRESS ServerAddr; \r
58 EFI_IPv4_ADDRESS GwAddr; \r
59 UINT8 ClientHwAddr[16]; \r
60 CHAR8 ServerName[64]; \r
61 CHAR8 BootFileName[128];\r
62}EFI_DHCP4_HEADER;\r
63\r
64typedef struct {\r
65 UINT32 Size;\r
66 UINT32 Length;\r
67 struct {\r
68 EFI_DHCP4_HEADER Header;\r
69 UINT32 Magik;\r
70 UINT8 Option[1];\r
71 } Dhcp4;\r
72} EFI_DHCP4_PACKET;\r
73#pragma pack()\r
74\r
75typedef enum {\r
76 Dhcp4Stopped = 0x0,\r
77 Dhcp4Init = 0x1,\r
78 Dhcp4Selecting = 0x2,\r
79 Dhcp4Requesting = 0x3,\r
80 Dhcp4Bound = 0x4,\r
81 Dhcp4Renewing = 0x5,\r
82 Dhcp4Rebinding = 0x6,\r
83 Dhcp4InitReboot = 0x7,\r
84 Dhcp4Rebooting = 0x8\r
85} EFI_DHCP4_STATE;\r
86\r
87typedef enum{\r
88 Dhcp4SendDiscover = 0x01,\r
89 Dhcp4RcvdOffer = 0x02,\r
90 Dhcp4SelectOffer = 0x03,\r
91 Dhcp4SendRequest = 0x05,\r
92 Dhcp4RcvdAck = 0x06,\r
93 Dhcp4RcvdNak = 0x07,\r
94 Dhcp4SendDecline = 0x08,\r
95 Dhcp4BoundCompleted = 0x09,\r
96 Dhcp4EnterRenewing = 0x0a,\r
97 Dhcp4EnterRebinding = 0x0b,\r
98 Dhcp4AddressLost = 0x0c,\r
99 Dhcp4Fail = 0x0d\r
100} EFI_DHCP4_EVENT;\r
101\r
102typedef EFI_STATUS (*EFI_DHCP4_CALLBACK)(\r
103 IN EFI_DHCP4_PROTOCOL *This,\r
104 IN VOID *Context,\r
105 IN EFI_DHCP4_STATE CurrentState,\r
106 IN EFI_DHCP4_EVENT Dhcp4Event,\r
107 IN EFI_DHCP4_PACKET *Packet OPTIONAL, \r
108 OUT EFI_DHCP4_PACKET **NewPacket OPTIONAL\r
109);\r
110\r
111typedef struct {\r
112 UINT32 DiscoverTryCount;\r
113 UINT32 *DiscoverTimeout;\r
114 UINT32 RequestTryCount;\r
115 UINT32 *RequestTimeout;\r
116 EFI_IPv4_ADDRESS ClientAddress;\r
117 EFI_DHCP4_CALLBACK Dhcp4Callback;\r
118 VOID *CallbackContext;\r
119 UINT32 OptionCount;\r
120 EFI_DHCP4_PACKET_OPTION **OptionList;\r
121}EFI_DHCP4_CONFIG_DATA;\r
122\r
123typedef struct {\r
124 EFI_DHCP4_STATE State;\r
125 EFI_DHCP4_CONFIG_DATA ConfigData;\r
126 EFI_IPv4_ADDRESS ClientAddress;\r
127 EFI_MAC_ADDRESS ClientMacAddress;\r
128 EFI_IPv4_ADDRESS ServerAddress;\r
129 EFI_IPv4_ADDRESS RouterAddress;\r
130 EFI_IPv4_ADDRESS SubnetMask;\r
131 UINT32 LeaseTime;\r
132 EFI_DHCP4_PACKET *ReplyPacket;\r
133 } EFI_DHCP4_MODE_DATA;\r
134\r
135typedef struct {\r
136 EFI_IPv4_ADDRESS ListenAddress;\r
137 EFI_IPv4_ADDRESS SubnetMask;\r
138 UINT16 ListenPort;\r
139} EFI_DHCP4_LISTEN_POINT;\r
140\r
141typedef struct {\r
142 OUT EFI_STATUS Status;\r
143 IN EFI_EVENT CompletionEvent;\r
144 IN EFI_IPv4_ADDRESS RemoteAddress;\r
145 IN UINT16 RemotePort;\r
146 IN EFI_IPv4_ADDRESS GatewayAddress;\r
147 IN UINT32 ListenPointCount;\r
148 IN EFI_DHCP4_LISTEN_POINT *ListenPoints;\r
149 IN UINT32 TimeoutValue;\r
150 IN EFI_DHCP4_PACKET *Packet;\r
151 OUT UINT32 ResponseCount;\r
152 OUT EFI_DHCP4_PACKET *ResponseList; \r
153}EFI_DHCP4_TRANSMIT_RECEIVE_TOKEN;\r
154\r
155\r
156typedef \r
157EFI_STATUS \r
158(EFIAPI *EFI_DHCP4_GET_MODE_DATA)(\r
159 IN EFI_DHCP4_PROTOCOL *This,\r
160 OUT EFI_DHCP4_MODE_DATA *Dhcp4ModeData\r
161);\r
162\r
163typedef \r
164EFI_STATUS\r
165(EFIAPI *EFI_DHCP4_CONFIGURE) (\r
166 IN EFI_DHCP4_PROTOCOL *This,\r
167 IN EFI_DHCP4_CONFIG_DATA *Dhcp4CfgData OPTIONAL\r
168);\r
169\r
170\r
171typedef EFI_STATUS\r
172(EFIAPI *EFI_DHCP4_START) (\r
173 IN EFI_DHCP4_PROTOCOL *This,\r
174 IN EFI_EVENT CompletionEvent OPTIONAL\r
175);\r
176\r
177typedef\r
178EFI_STATUS\r
179(EFIAPI *EFI_DHCP4_RENEW) (\r
180 IN EFI_DHCP4_PROTOCOL *This,\r
181 IN BOOLEAN RebindRequest,\r
182 IN EFI_EVENT CompletionEvent OPTIONAL\r
183);\r
184\r
185typedef \r
186EFI_STATUS\r
187(EFIAPI *EFI_DHCP4_RELEASE) (\r
188 IN EFI_DHCP4_PROTOCOL *This\r
189);\r
190\r
191typedef EFI_STATUS\r
192(EFIAPI *EFI_DHCP4_STOP) (\r
193 IN EFI_DHCP4_PROTOCOL *This\r
194);\r
195\r
196typedef\r
197EFI_STATUS\r
198(EFIAPI *EFI_DHCP4_BUILD) (\r
199 IN EFI_DHCP4_PROTOCOL *This,\r
200 IN EFI_DHCP4_PACKET *SeedPacket,\r
201 IN UINT32 DeleteCount,\r
202 IN UINT8 *DeleteList OPTIONAL,\r
203 IN UINT32 AppendCount,\r
204 IN EFI_DHCP4_PACKET_OPTION *AppendList[] OPTIONAL,\r
205 OUT EFI_DHCP4_PACKET **NewPacket\r
206);\r
207\r
208typedef \r
209EFI_STATUS\r
210(EFIAPI *EFI_DHCP4_TRANSMIT_RECEIVE) (\r
211 IN EFI_DHCP4_PROTOCOL *This,\r
212 IN EFI_DHCP4_TRANSMIT_RECEIVE_TOKEN *Token\r
213);\r
214\r
215\r
216typedef\r
217EFI_STATUS\r
218(EFIAPI *EFI_DHCP4_PARSE) (\r
219 IN EFI_DHCP4_PROTOCOL *This,\r
220 IN EFI_DHCP4_PACKET *Packet,\r
221 IN OUT UINT32 *OptionCount,\r
222 OUT EFI_DHCP4_PACKET_OPTION *PacketOptionList[] OPTIONAL\r
223);\r
224\r
225typedef struct _EFI_DHCP4_PROTOCOL {\r
226 EFI_DHCP4_GET_MODE_DATA GetModeData;\r
227 EFI_DHCP4_CONFIGURE Configure;\r
228 EFI_DHCP4_START Start;\r
229 EFI_DHCP4_RENEW RenewRebind;\r
230 EFI_DHCP4_RELEASE Release;\r
231 EFI_DHCP4_STOP Stop;\r
232 EFI_DHCP4_BUILD Build;\r
233 EFI_DHCP4_TRANSMIT_RECEIVE TransmitReceive;\r
234 EFI_DHCP4_PARSE Parse;\r
235} EFI_DHCP4_PROTOCOL;\r
236\r
237#endif\r