]> git.proxmox.com Git - mirror_edk2.git/blame - EdkCompatibilityPkg/Foundation/Efi/Protocol/Mtftp4/Mtftp4.h
Update the copyright notice format
[mirror_edk2.git] / EdkCompatibilityPkg / Foundation / Efi / Protocol / Mtftp4 / Mtftp4.h
CommitLineData
3eb9473e 1/*++\r
2\r
f57387d5
HT
3Copyright (c) 2006 - 2007, 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 Mtftp4.h\r
15\r
16Abstract:\r
17\r
18 UEFI Multicast Trivial File Tranfer Protocol Definition\r
19 \r
20--*/\r
21\r
22#ifndef __EFI_MTFTP4_H__\r
23#define __EFI_MTFTP4_H__\r
24\r
25#include EFI_PROTOCOL_DEFINITION(ServiceBinding)\r
26\r
27#define EFI_MTFTP4_SERVICE_BINDING_PROTOCOL_GUID \\r
7ccf38a3 28 { 0x2FE800BE, 0x8F01, 0x4aa6, {0x94, 0x6B, 0xD7, 0x13, 0x88, 0xE1, 0x83, 0x3F} }\r
3eb9473e 29\r
30#define EFI_MTFTP4_PROTOCOL_GUID \\r
7ccf38a3 31 { 0x78247c57, 0x63db, 0x4708, {0x99, 0xc2, 0xa8, 0xb4, 0xa9, 0xa6, 0x1f, 0x6b} }\r
3eb9473e 32\r
33EFI_FORWARD_DECLARATION (EFI_MTFTP4_PROTOCOL);\r
34EFI_FORWARD_DECLARATION (EFI_MTFTP4_TOKEN);\r
35\r
36extern EFI_GUID gEfiMtftp4ServiceBindingProtocolGuid;\r
37extern EFI_GUID gEfiMtftp4ProtocolGuid;\r
38\r
39\r
40//\r
41//MTFTP4 packet opcode definition\r
42//\r
43#define EFI_MTFTP4_OPCODE_RRQ 1\r
44#define EFI_MTFTP4_OPCODE_WRQ 2\r
45#define EFI_MTFTP4_OPCODE_DATA 3\r
46#define EFI_MTFTP4_OPCODE_ACK 4\r
47#define EFI_MTFTP4_OPCODE_ERROR 5\r
48#define EFI_MTFTP4_OPCODE_OACK 6\r
49#define EFI_MTFTP4_OPCODE_DIR 7\r
50#define EFI_MTFTP4_OPCODE_DATA8 8\r
51#define EFI_MTFTP4_OPCODE_ACK8 9\r
52\r
53//\r
54//MTFTP4 error code definition\r
55//\r
56#define EFI_MTFTP4_ERRORCODE_NOT_DEFINED 0\r
57#define EFI_MTFTP4_ERRORCODE_FILE_NOT_FOUND 1\r
58#define EFI_MTFTP4_ERRORCODE_ACCESS_VIOLATION 2\r
59#define EFI_MTFTP4_ERRORCODE_DISK_FULL 3\r
60#define EFI_MTFTP4_ERRORCODE_ILLEGAL_OPERATION 4\r
61#define EFI_MTFTP4_ERRORCODE_UNKNOWN_TRANSFER_ID 5\r
62#define EFI_MTFTP4_ERRORCODE_FILE_ALREADY_EXISTS 6\r
63#define EFI_MTFTP4_ERRORCODE_NO_SUCH_USER 7\r
64#define EFI_MTFTP4_ERRORCODE_REQUEST_DENIED 8\r
65\r
66\r
67//\r
68//MTFTP4 pacekt definition\r
69//\r
70#pragma pack(1)\r
71\r
72typedef struct {\r
73 UINT16 OpCode;\r
74 UINT8 Filename[1];\r
75} EFI_MTFTP4_REQ_HEADER;\r
76\r
77typedef struct {\r
78 UINT16 OpCode;\r
79 UINT8 Data[1];\r
80} EFI_MTFTP4_OACK_HEADER;\r
81\r
82typedef struct {\r
83 UINT16 OpCode;\r
84 UINT16 Block;\r
85 UINT8 Data[1];\r
86} EFI_MTFTP4_DATA_HEADER;\r
87\r
88typedef struct {\r
89 UINT16 OpCode;\r
90 UINT16 Block[1];\r
91} EFI_MTFTP4_ACK_HEADER;\r
92\r
93typedef struct {\r
94 UINT16 OpCode;\r
95 UINT64 Block;\r
96 UINT8 Data[1];\r
97} EFI_MTFTP4_DATA8_HEADER;\r
98\r
99typedef struct {\r
100 UINT16 OpCode;\r
101 UINT64 Block[1];\r
102} EFI_MTFTP4_ACK8_HEADER;\r
103\r
104typedef struct {\r
105 UINT16 OpCode;\r
106 UINT16 ErrorCode;\r
107 UINT8 ErrorMessage[1];\r
108} EFI_MTFTP4_ERROR_HEADER;\r
109\r
110typedef union {\r
111 UINT16 OpCode;\r
112 EFI_MTFTP4_REQ_HEADER Rrq;\r
113 EFI_MTFTP4_REQ_HEADER Wrq;\r
114 EFI_MTFTP4_OACK_HEADER Oack;\r
115 EFI_MTFTP4_DATA_HEADER Data;\r
116 EFI_MTFTP4_ACK_HEADER Ack;\r
117 EFI_MTFTP4_DATA8_HEADER Data8;\r
118 EFI_MTFTP4_ACK8_HEADER Ack8;\r
119 EFI_MTFTP4_ERROR_HEADER Error;\r
120} EFI_MTFTP4_PACKET;\r
121\r
122#pragma pack()\r
123\r
124//\r
125//MTFTP4 option definition\r
126//\r
127typedef struct {\r
128 UINT8 *OptionStr;\r
129 UINT8 *ValueStr;\r
130} EFI_MTFTP4_OPTION;\r
131\r
132//\r
133//MTFTP4 config data\r
134//\r
135typedef struct {\r
136 BOOLEAN UseDefaultSetting;\r
137 EFI_IPv4_ADDRESS StationIp;\r
138 EFI_IPv4_ADDRESS SubnetMask;\r
139 UINT16 LocalPort;\r
140 EFI_IPv4_ADDRESS GatewayIp;\r
141 EFI_IPv4_ADDRESS ServerIp;\r
142 UINT16 InitialServerPort;\r
143 UINT16 TryCount;\r
144 UINT16 TimeoutValue;\r
145} EFI_MTFTP4_CONFIG_DATA;\r
146\r
147//\r
148//MTFTP4 Mode data\r
149//\r
150typedef struct {\r
151 EFI_MTFTP4_CONFIG_DATA ConfigData;\r
152 UINT8 SupportedOptionCount; \r
153 UINT8 **SupportedOptoins;\r
154 UINT8 UnsupportedOptionCount; \r
155 UINT8 **UnsupportedOptoins;\r
156} EFI_MTFTP4_MODE_DATA;\r
157\r
158\r
159//\r
160//MTFTP4 override data\r
161//\r
162typedef struct {\r
163 EFI_IPv4_ADDRESS GatewayIp;\r
164 EFI_IPv4_ADDRESS ServerIp;\r
165 UINT16 ServerPort;\r
166 UINT16 TryCount;\r
167 UINT16 TimeoutValue;\r
168} EFI_MTFTP4_OVERRIDE_DATA;\r
169\r
170\r
171//\r
172//Packet checking function\r
173//\r
174typedef \r
175EFI_STATUS \r
176(EFIAPI *EFI_MTFTP4_CHECK_PACKET)( \r
177 IN EFI_MTFTP4_PROTOCOL *This,\r
178 IN EFI_MTFTP4_TOKEN *Token,\r
179 IN UINT16 PacketLen,\r
180 IN EFI_MTFTP4_PACKET *Paket\r
181 );\r
182\r
183//\r
184//Timeout callback funtion\r
185//\r
186typedef \r
187EFI_STATUS \r
188(EFIAPI *EFI_MTFTP4_TIMEOUT_CALLBACK) ( \r
189 IN EFI_MTFTP4_PROTOCOL *This,\r
190 IN EFI_MTFTP4_TOKEN *Token\r
191 );\r
192\r
193//\r
194//Packet needed function\r
195//\r
196typedef \r
197EFI_STATUS \r
198(EFIAPI *EFI_MTFTP4_PACKET_NEEDED) ( \r
199 IN EFI_MTFTP4_PROTOCOL *This,\r
200 IN EFI_MTFTP4_TOKEN *Token,\r
201 IN OUT UINT16 *Length,\r
202 OUT VOID **Buffer\r
203 );\r
204\r
205\r
206typedef \r
207EFI_STATUS \r
208(EFIAPI *EFI_MTFTP4_GET_MODE_DATA) (\r
209 IN EFI_MTFTP4_PROTOCOL *This,\r
210 OUT EFI_MTFTP4_MODE_DATA *ModeData\r
211 );\r
212\r
213\r
214typedef \r
215EFI_STATUS \r
216(EFIAPI *EFI_MTFTP4_CONFIGURE) (\r
217 IN EFI_MTFTP4_PROTOCOL *This,\r
218 IN EFI_MTFTP4_CONFIG_DATA *MtftpConfigData OPTIONAL\r
219 );\r
220\r
221\r
222typedef \r
223EFI_STATUS \r
224(EFIAPI *EFI_MTFTP4_GET_INFO) (\r
225 IN EFI_MTFTP4_PROTOCOL *This,\r
226 IN EFI_MTFTP4_OVERRIDE_DATA *OverrideData OPTIONAL,\r
227 IN UINT8 *Filename,\r
228 IN UINT8 *ModeStr OPTIONAL,\r
229 IN UINT8 OptionCount,\r
230 IN EFI_MTFTP4_OPTION *OptionList,\r
231 OUT UINT32 *PacketLength,\r
232 OUT EFI_MTFTP4_PACKET **Packet OPTIONAL\r
233 );\r
234\r
235\r
236typedef \r
237EFI_STATUS \r
238(EFIAPI *EFI_MTFTP4_PARSE_OPTIONS) (\r
239 IN EFI_MTFTP4_PROTOCOL *This,\r
240 IN UINT32 PacketLen,\r
241 IN EFI_MTFTP4_PACKET *Packet,\r
242 OUT UINT32 *OptionCount,\r
243 OUT EFI_MTFTP4_OPTION **OptionList OPTIONAL\r
244 );\r
245\r
246\r
247typedef \r
248EFI_STATUS \r
249(EFIAPI *EFI_MTFTP4_READ_FILE) (\r
250 IN EFI_MTFTP4_PROTOCOL *This,\r
251 IN EFI_MTFTP4_TOKEN *Token\r
252 );\r
253\r
254\r
255typedef \r
256EFI_STATUS \r
257(EFIAPI *EFI_MTFTP4_WRITE_FILE) (\r
258 IN EFI_MTFTP4_PROTOCOL *This,\r
259 IN EFI_MTFTP4_TOKEN *Token\r
260 );\r
261\r
262\r
263typedef \r
264EFI_STATUS \r
265(EFIAPI *EFI_MTFTP4_READ_DIRECTORY) (\r
266 IN EFI_MTFTP4_PROTOCOL *This,\r
267 IN EFI_MTFTP4_TOKEN *Token\r
268 );\r
269\r
270typedef\r
271EFI_STATUS\r
272(EFIAPI *EFI_MTFTP4_POLL) (\r
273 IN EFI_MTFTP4_PROTOCOL *This\r
274);\r
275\r
276\r
e5bce275 277struct _EFI_MTFTP4_PROTOCOL {\r
3eb9473e 278 EFI_MTFTP4_GET_MODE_DATA GetModeData;\r
279 EFI_MTFTP4_CONFIGURE Configure;\r
280 EFI_MTFTP4_GET_INFO GetInfo;\r
281 EFI_MTFTP4_PARSE_OPTIONS ParseOptions;\r
282 EFI_MTFTP4_READ_FILE ReadFile;\r
283 EFI_MTFTP4_WRITE_FILE WriteFile;\r
284 EFI_MTFTP4_READ_DIRECTORY ReadDirectory;\r
285 EFI_MTFTP4_POLL Poll;\r
e5bce275 286};\r
3eb9473e 287\r
288//\r
289//MTFTP4 token data\r
290//\r
e5bce275 291struct _EFI_MTFTP4_TOKEN{\r
3eb9473e 292 IN OUT EFI_STATUS Status;\r
293 IN EFI_EVENT Event;\r
294 IN EFI_MTFTP4_OVERRIDE_DATA *OverrideData;\r
295 IN UINT8 *Filename;\r
296 IN UINT8 *ModeStr;\r
297 IN UINT32 OptionCount;\r
298 IN EFI_MTFTP4_OPTION *OptionList;\r
299 IN OUT UINT64 BufferSize;\r
300 IN OUT VOID *Buffer;\r
301 IN VOID *Context;\r
302 IN EFI_MTFTP4_CHECK_PACKET CheckPacket;\r
303 IN EFI_MTFTP4_TIMEOUT_CALLBACK TimeoutCallback;\r
304 IN EFI_MTFTP4_PACKET_NEEDED PacketNeeded;\r
e5bce275 305};\r
3eb9473e 306\r
307#endif\r
308\r