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