Remove unused headers.
[people/xl0/gpxe.git] / src / include / gpxe / tftp.h
1 #ifndef _GPXE_TFTP_H
2 #define _GPXE_TFTP_H
3
4 /** @file
5  *
6  * TFTP protocol
7  *
8  */
9
10 #include <stdint.h>
11
12 #define TFTP_PORT              69 /**< Default TFTP server port */
13 #define TFTP_DEFAULT_BLKSIZE  512 /**< Default TFTP data block size */
14 #define TFTP_MAX_BLKSIZE     1432
15
16 #define TFTP_RRQ                1 /**< Read request opcode */
17 #define TFTP_WRQ                2 /**< Write request opcode */
18 #define TFTP_DATA               3 /**< Data block opcode */
19 #define TFTP_ACK                4 /**< Data block acknowledgement opcode */
20 #define TFTP_ERROR              5 /**< Error opcode */
21 #define TFTP_OACK               6 /**< Options acknowledgement opcode */
22
23 #define TFTP_ERR_FILE_NOT_FOUND 1 /**< File not found */
24 #define TFTP_ERR_ACCESS_DENIED  2 /**< Access violation */
25 #define TFTP_ERR_DISK_FULL      3 /**< Disk full or allocation exceeded */
26 #define TFTP_ERR_ILLEGAL_OP     4 /**< Illegal TFTP operation */
27 #define TFTP_ERR_UNKNOWN_TID    5 /**< Unknown transfer ID */
28 #define TFTP_ERR_FILE_EXISTS    6 /**< File already exists */
29 #define TFTP_ERR_UNKNOWN_USER   7 /**< No such user */
30 #define TFTP_ERR_BAD_OPTS       8 /**< Option negotiation failed */
31
32 /** A TFTP read request (RRQ) packet */
33 struct tftp_rrq {
34         uint16_t opcode;
35         char data[0];
36 } __attribute__ (( packed ));
37
38 /** A TFTP data (DATA) packet */
39 struct tftp_data {
40         uint16_t opcode;
41         uint16_t block;
42         uint8_t data[0];
43 } __attribute__ (( packed ));
44  
45 /** A TFTP acknowledgement (ACK) packet */
46 struct tftp_ack {
47         uint16_t opcode;
48         uint16_t block;
49 } __attribute__ (( packed ));
50
51 /** A TFTP error (ERROR) packet */
52 struct tftp_error {
53         uint16_t opcode;
54         uint16_t errcode;
55         char errmsg[0];
56 } __attribute__ (( packed ));
57
58 /** A TFTP options acknowledgement (OACK) packet */
59 struct tftp_oack {
60         uint16_t opcode;
61         char data[0];
62 } __attribute__ (( packed ));
63
64 /** The common header of all TFTP packets */
65 struct tftp_common {
66         uint16_t opcode;
67 } __attribute__ (( packed ));
68
69 /** A union encapsulating all TFTP packet types */
70 union tftp_any {
71         struct tftp_common      common;
72         struct tftp_rrq         rrq;
73         struct tftp_data        data;
74         struct tftp_ack         ack;
75         struct tftp_error       error;
76         struct tftp_oack        oack;
77 };
78
79 extern void tftp_set_request_blksize ( unsigned int blksize );
80
81 #endif /* _GPXE_TFTP_H */