1/*
2 * CDDL HEADER START
3 *
4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License, Version 1.0 only
6 * (the "License").  You may not use this file except in compliance
7 * with the License.
8 *
9 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10 * or http://www.opensolaris.org/os/licensing.
11 * See the License for the specific language governing permissions
12 * and limitations under the License.
13 *
14 * When distributing Covered Code, include this CDDL HEADER in each
15 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16 * If applicable, add the following below this CDDL HEADER, with the
17 * fields enclosed by brackets "[]" replaced with your own identifying
18 * information: Portions Copyright [yyyy] [name of copyright owner]
19 *
20 * CDDL HEADER END
21 */
22/*
23 * Copyright 2001-2002 Sun Microsystems, Inc.  All rights reserved.
24 * Use is subject to license terms.
25 */
26
27#ifndef _TFTPCOMMON_H
28#define	_TFTPCOMMON_H
29
30#pragma ident	"%Z%%M%	%I%	%E% SMI"
31
32/*
33 * Defines and function declarations common to tftp and in.tftpd.
34 */
35
36#ifdef __cplusplus
37extern "C" {
38#endif
39
40#include <arpa/tftp.h>
41
42#define	MIN_BLKSIZE	8			/* RFC 2348 */
43#define	MAX_BLKSIZE	65464			/* RFC 2348 */
44#define	MIN_TIMEOUT	1			/* RFC 2349 */
45#define	MAX_TIMEOUT	255			/* RFC 2349 */
46#define	PKTSIZE		(MAX_BLKSIZE + 4)	/* DATA packet max size */
47#define	MAX_OPTVAL_LEN	32			/* Option value max length */
48
49/* Format when printing an off_t */
50#if _FILE_OFFSET_BITS == 64
51#define	OFF_T_FMT	"%lld"
52#else
53#define	OFF_T_FMT	"%ld"
54#endif
55
56typedef union {
57	struct tftphdr	tb_hdr;
58	char		tb_data[PKTSIZE];
59} tftpbuf;
60
61struct errmsg {
62	int	e_code;
63	char	*e_msg;
64};
65extern struct errmsg	errmsgs[];
66
67/* Declarations for shared functions in tftpsubs.c */
68extern struct tftphdr	*w_init(void);
69extern struct tftphdr	*r_init(void);
70extern int		readit(FILE *, struct tftphdr **, int);
71extern void		read_ahead(FILE *, int);
72extern int		writeit(FILE *, struct tftphdr **, int, int);
73extern int		write_behind(FILE *, int);
74extern int		synchnet(int);
75extern char		*next_field(const char *, const char *);
76extern void		print_options(FILE *, char *, int);
77extern void		cancel_alarm(void);
78
79#ifdef __cplusplus
80}
81#endif
82
83#endif /* _TFTPCOMMON_H */
84