3 Copyright (c) 2006 - 2007, Intel Corporation
4 All rights reserved. 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
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.
18 UEFI Multicast Trivial File Tranfer Protocol Definition
22 #ifndef __EFI_MTFTP4_H__
23 #define __EFI_MTFTP4_H__
25 #include EFI_PROTOCOL_DEFINITION(ServiceBinding)
27 #define EFI_MTFTP4_SERVICE_BINDING_PROTOCOL_GUID \
28 { 0x2FE800BE, 0x8F01, 0x4aa6, 0x94, 0x6B, 0xD7, 0x13, 0x88, 0xE1, 0x83, 0x3F }
30 #define EFI_MTFTP4_PROTOCOL_GUID \
31 { 0x78247c57, 0x63db, 0x4708, 0x99, 0xc2, 0xa8, 0xb4, 0xa9, 0xa6, 0x1f, 0x6b }
33 EFI_FORWARD_DECLARATION (EFI_MTFTP4_PROTOCOL
);
34 EFI_FORWARD_DECLARATION (EFI_MTFTP4_TOKEN
);
36 extern EFI_GUID gEfiMtftp4ServiceBindingProtocolGuid
;
37 extern EFI_GUID gEfiMtftp4ProtocolGuid
;
41 //MTFTP4 packet opcode definition
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
54 //MTFTP4 error code definition
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
68 //MTFTP4 pacekt definition
75 } EFI_MTFTP4_REQ_HEADER
;
80 } EFI_MTFTP4_OACK_HEADER
;
86 } EFI_MTFTP4_DATA_HEADER
;
91 } EFI_MTFTP4_ACK_HEADER
;
97 } EFI_MTFTP4_DATA8_HEADER
;
102 } EFI_MTFTP4_ACK8_HEADER
;
107 UINT8 ErrorMessage
[1];
108 } EFI_MTFTP4_ERROR_HEADER
;
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
;
125 //MTFTP4 option definition
136 BOOLEAN UseDefaultSetting
;
137 EFI_IPv4_ADDRESS StationIp
;
138 EFI_IPv4_ADDRESS SubnetMask
;
140 EFI_IPv4_ADDRESS GatewayIp
;
141 EFI_IPv4_ADDRESS ServerIp
;
142 UINT16 InitialServerPort
;
145 } EFI_MTFTP4_CONFIG_DATA
;
151 EFI_MTFTP4_CONFIG_DATA ConfigData
;
152 UINT8 SupportedOptionCount
;
153 UINT8
**SupportedOptoins
;
154 UINT8 UnsupportedOptionCount
;
155 UINT8
**UnsupportedOptoins
;
156 } EFI_MTFTP4_MODE_DATA
;
160 //MTFTP4 override data
163 EFI_IPv4_ADDRESS GatewayIp
;
164 EFI_IPv4_ADDRESS ServerIp
;
168 } EFI_MTFTP4_OVERRIDE_DATA
;
172 //Packet checking function
176 (EFIAPI
*EFI_MTFTP4_CHECK_PACKET
)(
177 IN EFI_MTFTP4_PROTOCOL
*This
,
178 IN EFI_MTFTP4_TOKEN
*Token
,
180 IN EFI_MTFTP4_PACKET
*Paket
184 //Timeout callback funtion
188 (EFIAPI
*EFI_MTFTP4_TIMEOUT_CALLBACK
) (
189 IN EFI_MTFTP4_PROTOCOL
*This
,
190 IN EFI_MTFTP4_TOKEN
*Token
194 //Packet needed function
198 (EFIAPI
*EFI_MTFTP4_PACKET_NEEDED
) (
199 IN EFI_MTFTP4_PROTOCOL
*This
,
200 IN EFI_MTFTP4_TOKEN
*Token
,
201 IN OUT UINT16
*Length
,
208 (EFIAPI
*EFI_MTFTP4_GET_MODE_DATA
) (
209 IN EFI_MTFTP4_PROTOCOL
*This
,
210 OUT EFI_MTFTP4_MODE_DATA
*ModeData
216 (EFIAPI
*EFI_MTFTP4_CONFIGURE
) (
217 IN EFI_MTFTP4_PROTOCOL
*This
,
218 IN EFI_MTFTP4_CONFIG_DATA
*MtftpConfigData OPTIONAL
224 (EFIAPI
*EFI_MTFTP4_GET_INFO
) (
225 IN EFI_MTFTP4_PROTOCOL
*This
,
226 IN EFI_MTFTP4_OVERRIDE_DATA
*OverrideData OPTIONAL
,
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
238 (EFIAPI
*EFI_MTFTP4_PARSE_OPTIONS
) (
239 IN EFI_MTFTP4_PROTOCOL
*This
,
241 IN EFI_MTFTP4_PACKET
*Packet
,
242 OUT UINT32
*OptionCount
,
243 OUT EFI_MTFTP4_OPTION
**OptionList OPTIONAL
249 (EFIAPI
*EFI_MTFTP4_READ_FILE
) (
250 IN EFI_MTFTP4_PROTOCOL
*This
,
251 IN EFI_MTFTP4_TOKEN
*Token
257 (EFIAPI
*EFI_MTFTP4_WRITE_FILE
) (
258 IN EFI_MTFTP4_PROTOCOL
*This
,
259 IN EFI_MTFTP4_TOKEN
*Token
265 (EFIAPI
*EFI_MTFTP4_READ_DIRECTORY
) (
266 IN EFI_MTFTP4_PROTOCOL
*This
,
267 IN EFI_MTFTP4_TOKEN
*Token
272 (EFIAPI
*EFI_MTFTP4_POLL
) (
273 IN EFI_MTFTP4_PROTOCOL
*This
277 typedef 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 } EFI_MTFTP4_PROTOCOL
;
291 typedef struct _EFI_MTFTP4_TOKEN
{
292 IN OUT EFI_STATUS Status
;
294 IN EFI_MTFTP4_OVERRIDE_DATA
*OverrideData
;
297 IN UINT32 OptionCount
;
298 IN EFI_MTFTP4_OPTION
*OptionList
;
299 IN OUT UINT64 BufferSize
;
302 IN EFI_MTFTP4_CHECK_PACKET CheckPacket
;
303 IN EFI_MTFTP4_TIMEOUT_CALLBACK TimeoutCallback
;
304 IN EFI_MTFTP4_PACKET_NEEDED PacketNeeded
;