]> git.proxmox.com Git - mirror_edk2.git/blame - EdkCompatibilityPkg/Foundation/Efi/Protocol/Dhcp4/Dhcp4.h
Maintainers.txt: Remove EdkCompatibilityPkg information
[mirror_edk2.git] / EdkCompatibilityPkg / Foundation / Efi / Protocol / Dhcp4 / Dhcp4.h
CommitLineData
3eb9473e 1/*++\r
2\r
f57387d5
HT
3Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
4This program and the accompanying materials \r
3eb9473e 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
7ccf38a3 30 {0x8a219718, 0x4ef5, 0x4761, {0x91, 0xc8, 0xc0, 0xf0, 0x4b, 0xda, 0x9e, 0x56}}\r
3eb9473e 31\r
32#define EFI_DHCP4_SERVICE_BINDING_PROTOCOL_GUID \\r
7ccf38a3 33 {0x9d9a39d8, 0xbd42, 0x4a73, {0xa4, 0xd5, 0x8e, 0xe9, 0x4b, 0xe1, 0x13, 0x80}}\r
3eb9473e 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
2c40a813 91 Dhcp4SendRequest = 0x04,\r
92 Dhcp4RcvdAck = 0x05,\r
93 Dhcp4RcvdNak = 0x06,\r
94 Dhcp4SendDecline = 0x07,\r
95 Dhcp4BoundCompleted = 0x08,\r
96 Dhcp4EnterRenewing = 0x09,\r
97 Dhcp4EnterRebinding = 0x0a,\r
98 Dhcp4AddressLost = 0x0b,\r
99 Dhcp4Fail = 0x0c\r
3eb9473e 100} EFI_DHCP4_EVENT;\r
101\r
2c40a813 102typedef EFI_STATUS (*EFI_DHCP4_CALLBACK) (\r
3eb9473e 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
2c40a813 142 EFI_STATUS Status;\r
143 EFI_EVENT CompletionEvent;\r
144 EFI_IPv4_ADDRESS RemoteAddress;\r
145 UINT16 RemotePort;\r
146 EFI_IPv4_ADDRESS GatewayAddress;\r
147 UINT32 ListenPointCount;\r
148 EFI_DHCP4_LISTEN_POINT *ListenPoints;\r
149 UINT32 TimeoutValue;\r
150 EFI_DHCP4_PACKET *Packet;\r
151 UINT32 ResponseCount;\r
152 EFI_DHCP4_PACKET *ResponseList;\r
153} EFI_DHCP4_TRANSMIT_RECEIVE_TOKEN;\r
3eb9473e 154\r
155typedef \r
156EFI_STATUS \r
2c40a813 157(EFIAPI *EFI_DHCP4_GET_MODE_DATA) (\r
3eb9473e 158 IN EFI_DHCP4_PROTOCOL *This,\r
159 OUT EFI_DHCP4_MODE_DATA *Dhcp4ModeData\r
160);\r
161\r
162typedef \r
163EFI_STATUS\r
164(EFIAPI *EFI_DHCP4_CONFIGURE) (\r
165 IN EFI_DHCP4_PROTOCOL *This,\r
166 IN EFI_DHCP4_CONFIG_DATA *Dhcp4CfgData OPTIONAL\r
167);\r
168\r
169\r
170typedef EFI_STATUS\r
171(EFIAPI *EFI_DHCP4_START) (\r
172 IN EFI_DHCP4_PROTOCOL *This,\r
173 IN EFI_EVENT CompletionEvent OPTIONAL\r
174);\r
175\r
176typedef\r
177EFI_STATUS\r
2c40a813 178(EFIAPI *EFI_DHCP4_RENEW_REBIND) (\r
179 IN EFI_DHCP4_PROTOCOL *This,\r
3eb9473e 180 IN BOOLEAN RebindRequest,\r
181 IN EFI_EVENT CompletionEvent OPTIONAL\r
182);\r
183\r
184typedef \r
185EFI_STATUS\r
186(EFIAPI *EFI_DHCP4_RELEASE) (\r
187 IN EFI_DHCP4_PROTOCOL *This\r
188);\r
189\r
190typedef EFI_STATUS\r
191(EFIAPI *EFI_DHCP4_STOP) (\r
192 IN EFI_DHCP4_PROTOCOL *This\r
193);\r
194\r
195typedef\r
196EFI_STATUS\r
197(EFIAPI *EFI_DHCP4_BUILD) (\r
198 IN EFI_DHCP4_PROTOCOL *This,\r
199 IN EFI_DHCP4_PACKET *SeedPacket,\r
200 IN UINT32 DeleteCount,\r
201 IN UINT8 *DeleteList OPTIONAL,\r
202 IN UINT32 AppendCount,\r
2c40a813 203 IN EFI_DHCP4_PACKET_OPTION *AppendList[] OPTIONAL,\r
3eb9473e 204 OUT EFI_DHCP4_PACKET **NewPacket\r
205);\r
206\r
207typedef \r
208EFI_STATUS\r
209(EFIAPI *EFI_DHCP4_TRANSMIT_RECEIVE) (\r
210 IN EFI_DHCP4_PROTOCOL *This,\r
211 IN EFI_DHCP4_TRANSMIT_RECEIVE_TOKEN *Token\r
212);\r
213\r
3eb9473e 214typedef\r
215EFI_STATUS\r
216(EFIAPI *EFI_DHCP4_PARSE) (\r
217 IN EFI_DHCP4_PROTOCOL *This,\r
218 IN EFI_DHCP4_PACKET *Packet,\r
219 IN OUT UINT32 *OptionCount,\r
220 OUT EFI_DHCP4_PACKET_OPTION *PacketOptionList[] OPTIONAL\r
221);\r
222\r
e5bce275 223struct _EFI_DHCP4_PROTOCOL {\r
3eb9473e 224 EFI_DHCP4_GET_MODE_DATA GetModeData;\r
225 EFI_DHCP4_CONFIGURE Configure;\r
226 EFI_DHCP4_START Start;\r
2c40a813 227 EFI_DHCP4_RENEW_REBIND RenewRebind;\r
3eb9473e 228 EFI_DHCP4_RELEASE Release;\r
229 EFI_DHCP4_STOP Stop;\r
230 EFI_DHCP4_BUILD Build;\r
231 EFI_DHCP4_TRANSMIT_RECEIVE TransmitReceive;\r
232 EFI_DHCP4_PARSE Parse;\r
e5bce275 233};\r
3eb9473e 234\r
235#endif\r