/* ************************************************************************** * * Boot-ROM-Code to load an operating system across a TCP/IP network. * * Module: tftp.h * Purpose: Definitions for implementing the TFTP protocol * Entries: none * ************************************************************************** * * Copyright (C) 1995-2003 Gero Kuhlmann * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * * $Id: tftp.h,v 1.5 2003/01/25 23:29:41 gkminix Exp $ */ #ifndef _KERNEL_ARPA_TFTP_H #define _KERNEL_ARPA_TFTP_H #ifndef _USE_ASSEMBLER /* ************************************************************************** * * TFTP packet types: */ #define TFTP_RRQ 1 /* read request */ #define TFTP_WRQ 2 /* write request */ #define TFTP_DATA 3 /* data packet */ #define TFTP_ACK 4 /* acknowledgement */ #define TFTP_ERROR 5 /* error code */ #define TFTP_OACK 6 /* option acknowledgement */ /* ************************************************************************** * * Error codes: */ #define EUNDEF 0 /* not defined */ #define ENOTFOUND 1 /* file not found */ #define EACCESS 2 /* access violation */ #define ENOSPACE 3 /* disk full */ #define EBADOP 4 /* illegal TFTP operation */ #define EBADID 5 /* unknown transfer ID */ #define EEXISTS 6 /* file already exists */ #define ENOUSER 7 /* no such user */ #define EBADOPT 8 /* invalid option */ /* ************************************************************************** * * TFTP UDP port numbers: */ #define TFTP_S_PORT 69 /* TFTP server port */ #define TFTP_C_PORT 1024 /* TFTP client port */ /* ************************************************************************** * * TFTP header layout */ struct tftphdr { unsigned short th_op; /* TFTP op code */ unsigned short th_block; /* block number */ unsigned char th_data[1]; /* data block */ }; #define th_error th_block /* error code */ /* ************************************************************************** * * TFTP buffer sizes */ #define DEFSEGSIZE 512 /* default TFTP segment size */ #define MAXSEGSIZE 1432 /* buffer size for ethernet MTU */ #define INPBUFSIZE (sizeof(struct tftphdr) + MAXSEGSIZE) #define ACKBUFSIZE (sizeof(struct tftphdr) + 2) /* ************************************************************************** * * Option strings */ #define OCTET_STR "octet" /* define name of data format */ #define BLKSIZE_STR "blksize" /* block size option */ #define TSIZE_STR "tsize" /* transfer file size */ #define TOUT_STR "timeout" /* TFTP read timeout */ /* ************************************************************************** * * Various definitions: */ #define TFTP_RETRY 10 /* Maximum number of retries */ #define TFTP_TIMEOUT 15 /* 15 seconds timeout */ #endif /* _USE_ASSEMBLER */ #endif /* _KERNEL_ARPA_TFTP_H */