12949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/* @(#) $Header: /tcpdump/master/tcpdump/tftp.h,v 1.1.2.1 2007/09/14 01:03:12 guy Exp $ (LBL) */
22949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/*
32949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * Copyright (c) 1983, 1993
42949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *	The Regents of the University of California.  All rights reserved.
52949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *
62949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * Redistribution and use in source and binary forms, with or without
72949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * modification, are permitted provided that the following conditions
82949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * are met:
92949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * 1. Redistributions of source code must retain the above copyright
102949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *    notice, this list of conditions and the following disclaimer.
112949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * 2. Redistributions in binary form must reproduce the above copyright
122949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *    notice, this list of conditions and the following disclaimer in the
132949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *    documentation and/or other materials provided with the distribution.
142949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * 3. All advertising materials mentioning features or use of this software
152949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *    must display the following acknowledgement:
162949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *	This product includes software developed by the University of
172949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *	California, Berkeley and its contributors.
182949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * 4. Neither the name of the University nor the names of its contributors
192949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *    may be used to endorse or promote products derived from this software
202949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *    without specific prior written permission.
212949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *
222949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
232949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
242949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
252949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
262949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
272949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
282949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
292949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
302949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
312949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
322949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * SUCH DAMAGE.
332949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *
342949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *	@(#)tftp.h	8.1 (Berkeley) 6/2/93
352949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project */
362949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
372949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#ifndef _TFTP_H_
382949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	_TFTP_H_
392949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
402949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/*
412949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * Trivial File Transfer Protocol (IEN-133)
422949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project */
432949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	SEGSIZE		512		/* data segment size */
442949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
452949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/*
462949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * Packet types.
472949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project */
482949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	RRQ	01			/* read request */
492949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	WRQ	02			/* write request */
502949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	DATA	03			/* data packet */
512949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	ACK	04			/* acknowledgement */
522949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	ERROR	05			/* error code */
532949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define OACK	06			/* option acknowledgement */
542949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
552949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstruct	tftphdr {
562949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	unsigned short	th_opcode;		/* packet type */
572949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	union {
582949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		unsigned short	tu_block;	/* block # */
592949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		unsigned short	tu_code;	/* error code */
602949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		char	tu_stuff[1];	/* request packet stuff */
612949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	} th_u;
622949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	char	th_data[1];		/* data or error string */
632949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project};
642949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
652949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	th_block	th_u.tu_block
662949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	th_code		th_u.tu_code
672949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	th_stuff	th_u.tu_stuff
682949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	th_msg		th_data
692949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
702949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/*
712949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * Error codes.
722949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project */
732949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	EUNDEF		0		/* not defined */
742949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	ENOTFOUND	1		/* file not found */
752949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	EACCESS		2		/* access violation */
762949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	ENOSPACE	3		/* disk full or allocation exceeded */
772949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	EBADOP		4		/* illegal TFTP operation */
782949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	EBADID		5		/* unknown transfer ID */
792949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	EEXISTS		6		/* file already exists */
802949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	ENOUSER		7		/* no such user */
812949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
822949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#endif /* !_TFTP_H_ */
83