xref: /openbsd/include/arpa/tftp.h (revision a19ae363)
1*a19ae363Sderaadt /*	$OpenBSD: tftp.h,v 1.8 2006/07/26 16:43:30 deraadt Exp $	*/
2df930be7Sderaadt /*	$NetBSD: tftp.h,v 1.3 1994/10/26 00:56:48 cgd Exp $	*/
3df930be7Sderaadt 
4df930be7Sderaadt /*
5df930be7Sderaadt  * Copyright (c) 1983 Regents of the University of California.
6df930be7Sderaadt  * All rights reserved.
7df930be7Sderaadt  *
8df930be7Sderaadt  * Redistribution and use in source and binary forms, with or without
9df930be7Sderaadt  * modification, are permitted provided that the following conditions
10df930be7Sderaadt  * are met:
11df930be7Sderaadt  * 1. Redistributions of source code must retain the above copyright
12df930be7Sderaadt  *    notice, this list of conditions and the following disclaimer.
13df930be7Sderaadt  * 2. Redistributions in binary form must reproduce the above copyright
14df930be7Sderaadt  *    notice, this list of conditions and the following disclaimer in the
15df930be7Sderaadt  *    documentation and/or other materials provided with the distribution.
16e33d3bd3Smillert  * 3. Neither the name of the University nor the names of its contributors
17df930be7Sderaadt  *    may be used to endorse or promote products derived from this software
18df930be7Sderaadt  *    without specific prior written permission.
19df930be7Sderaadt  *
20df930be7Sderaadt  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
21df930be7Sderaadt  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22df930be7Sderaadt  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23df930be7Sderaadt  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
24df930be7Sderaadt  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25df930be7Sderaadt  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
26df930be7Sderaadt  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
27df930be7Sderaadt  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28df930be7Sderaadt  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
29df930be7Sderaadt  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
30df930be7Sderaadt  * SUCH DAMAGE.
31df930be7Sderaadt  *
32df930be7Sderaadt  *	@(#)tftp.h	5.4 (Berkeley) 4/3/91
33df930be7Sderaadt  */
34df930be7Sderaadt 
35df930be7Sderaadt #ifndef _TFTP_H_
36df930be7Sderaadt #define	_TFTP_H_
37df930be7Sderaadt 
38df930be7Sderaadt /*
39df930be7Sderaadt  * Trivial File Transfer Protocol (IEN-133)
40df930be7Sderaadt  */
41df930be7Sderaadt #define	SEGSIZE		512		/* data segment size */
423e7729ddSmglocker #define SEGSIZE_MIN	8		/* minimal data segment size */
433e7729ddSmglocker #define SEGSIZE_MAX	65464		/* maximal data segment size */
44df930be7Sderaadt 
45df930be7Sderaadt /*
46df930be7Sderaadt  * Packet types.
47df930be7Sderaadt  */
48df930be7Sderaadt #define	RRQ	01			/* read request */
49df930be7Sderaadt #define	WRQ	02			/* write request */
50df930be7Sderaadt #define	DATA	03			/* data packet */
51df930be7Sderaadt #define	ACK	04			/* acknowledgement */
52df930be7Sderaadt #define	ERROR	05			/* error code */
53c5a6a5b3Sderaadt #define	OACK	06			/* option acknowledgement */
54df930be7Sderaadt 
55df930be7Sderaadt struct	tftphdr {
56d698e0d3Smillert 	u_int16_t th_opcode;		/* packet type */
57df930be7Sderaadt 	union {
58d698e0d3Smillert 		u_int16_t tu_block;	/* block # */
59d698e0d3Smillert 		u_int16_t tu_code;	/* error code */
60df930be7Sderaadt 		char	tu_stuff[1];	/* request packet stuff */
61df930be7Sderaadt 	} th_u;
62df930be7Sderaadt 	char	th_data[1];		/* data or error string */
63df930be7Sderaadt };
64df930be7Sderaadt 
65df930be7Sderaadt #define	th_block	th_u.tu_block
66df930be7Sderaadt #define	th_code		th_u.tu_code
67df930be7Sderaadt #define	th_stuff	th_u.tu_stuff
68df930be7Sderaadt #define	th_msg		th_data
69df930be7Sderaadt 
70df930be7Sderaadt /*
71df930be7Sderaadt  * Error codes.
72df930be7Sderaadt  */
73df930be7Sderaadt #define	EUNDEF		0		/* not defined */
74df930be7Sderaadt #define	ENOTFOUND	1		/* file not found */
75df930be7Sderaadt #define	EACCESS		2		/* access violation */
76df930be7Sderaadt #define	ENOSPACE	3		/* disk full or allocation exceeded */
77df930be7Sderaadt #define	EBADOP		4		/* illegal TFTP operation */
78df930be7Sderaadt #define	EBADID		5		/* unknown transfer ID */
79df930be7Sderaadt #define	EEXISTS		6		/* file already exists */
80df930be7Sderaadt #define	ENOUSER		7		/* no such user */
81c5a6a5b3Sderaadt #define	EOPTNEG		8		/* option negotiation failed */
82df930be7Sderaadt 
83df930be7Sderaadt #endif /* !_TFTP_H_ */
84