+++ /dev/null
-/*++ \r
-\r
-Copyright (c) 2006, Intel Corporation \r
-All rights reserved. This program and the accompanying materials \r
-are licensed and made available under the terms and conditions of the BSD License \r
-which accompanies this distribution. The full text of the license may be found at \r
-http://opensource.org/licenses/bsd-license.php \r
- \r
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
-\r
-Module Name:\r
- tftp.h\r
-\r
-Abstract:\r
-\r
---*/\r
-\r
-#ifndef __TFTP_H__\r
-#define __TFTP_H__\r
-\r
-//\r
-// Definitions for trivial file transfer protocol functionality with IP v4\r
-// Per RFC 1350, July 1992 and RFC 2347, 8, and 9, May 1998\r
-//\r
-#pragma pack(1)\r
-//\r
-// max and min packet sizes\r
-// (all data packets in transmission except last)\r
-//\r
-#define MAX_TFTP_PKT_SIZE (BUFFER_ALLOCATE_SIZE - 512)\r
-#define MIN_TFTP_PKT_SIZE 512\r
-\r
-//\r
-// TFTPv4 OpCodes\r
-//\r
-#define TFTP_RRQ 1 // read request\r
-#define TFTP_WRQ 2 // write request\r
-#define TFTP_DATA 3 // data\r
-#define TFTP_ACK 4 // acknowledgement\r
-#define TFTP_ERROR 5 // error packet\r
-#define TFTP_OACK 6 // option acknowledge\r
-#define TFTP_DIR 7 // read directory request\r
-#define TFTP_DATA8 8\r
-#define TFTP_ACK8 9\r
-\r
-//\r
-// request packet (read or write)\r
-// Fields shown (except file name) are not to be referenced directly,\r
-// since their placement is variable within a request packet.\r
-// All are null terminated case insensitive ascii strings.\r
-//\r
-struct Tftpv4Req {\r
- UINT16 OpCode; // TFTP Op code\r
- UINT8 FileName[2]; // file name\r
- UINT8 Mode[2]; // "netascii" or "octet"\r
- struct { // optionally, one or more option requests\r
- UINT8 Option[2]; // option name\r
- UINT8 Value[2]; // value requested\r
- } OpReq[1];\r
-};\r
-\r
-//\r
-// modes\r
-//\r
-#define MODE_ASCII "netascii"\r
-#define MODE_BINARY "octet"\r
-\r
-//\r
-// option strings\r
-//\r
-#define OP_BLKSIZE "blksize" // block size option\r
-#define OP_TIMEOUT "timeout" // time to wait before retransmitting\r
-#define OP_TFRSIZE "tsize" // total transfer size option\r
-#define OP_OVERWRITE "overwrite" // overwrite file option\r
-#define OP_BIGBLKNUM "bigblk#" // big block number\r
-// See RFC 2347, 8, and 9 for more information on TFTP options\r
-// option acknowledge packet (optional)\r
-// options not acknowledged are rejected\r
-//\r
-struct Tftpv4Oack {\r
- UINT16 OpCode; // TFTP Op code\r
- struct { // optionally, one or more option acknowledgements\r
- UINT8 Option[2]; // option name (of those requested)\r
- UINT8 Value[2]; // value acknowledged\r
- } OpAck[1];\r
-};\r
-\r
-//\r
-// acknowledge packet\r
-//\r
-struct Tftpv4Ack {\r
- UINT16 OpCode; // TFTP Op code\r
- UINT16 BlockNum;\r
-};\r
-\r
-//\r
-// data packet\r
-//\r
-struct Tftpv4Data {\r
- struct Tftpv4Ack Header;\r
- UINT8 Data[512];\r
-};\r
-\r
-//\r
-// big block number ack packet\r
-//\r
-struct Tftpv4Ack8 {\r
- UINT16 OpCode;\r
- UINT64 BlockNum;\r
-};\r
-\r
-//\r
-// big block number data packet\r
-//\r
-struct Tftpv4Data8 {\r
- struct Tftpv4Ack8 Header;\r
- UINT8 Data[506];\r
-};\r
-\r
-//\r
-// error packet\r
-//\r
-struct Tftpv4Error {\r
- UINT16 OpCode; // TFTP Op code\r
- UINT16 ErrCode; // error code\r
- UINT8 ErrMsg[1]; // error message (nul terminated)\r
-};\r
-\r
-#pragma pack()\r
-//\r
-// error codes\r
-//\r
-#define TFTP_ERR_UNDEF 0 // Not defined, see error message (if any).\r
-#define TFTP_ERR_NOT_FOUND 1 // File not found.\r
-#define TFTP_ERR_ACCESS 2 // Access violation.\r
-#define TFTP_ERR_FULL 3 // Disk full or allocation exceeded.\r
-#define TFTP_ERR_ILLEGAL 4 // Illegal TFTP operation.\r
-#define TFTP_ERR_BAD_ID 5 // Unknown transfer ID.\r
-#define TFTP_ERR_EXISTS 6 // File already exists.\r
-#define TFTP_ERR_NO_USER 7 // No such user.\r
-#define TFTP_ERR_OPTION 8 // Option negotiation termination\r
-//\r
-// some defines\r
-//\r
-#define REQ_RESP_TIMEOUT 5 // Wait five seconds for request response.\r
-#define ACK_TIMEOUT 4 // Wait four seconds for ack response.\r
-#define NUM_ACK_RETRIES 3\r
-#define NUM_MTFTP_OPEN_RETRIES 3\r
-\r
-#endif /* __TFTP_H__ */\r
-\r
-/* EOF - tftp.h */\r