1/*
2 * Copyright (c) 1989, 1993
3 *	The Regents of the University of California.  All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright
9 *    notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright
11 *    notice, this list of conditions and the following disclaimer in the
12 *    documentation and/or other materials provided with the distribution.
13 * 3. All advertising materials mentioning features or use of this software
14 *    must display the following acknowledgement:
15 *	This product includes software developed by the University of
16 *	California, Berkeley and its contributors.
17 * 4. Neither the name of the University nor the names of its contributors
18 *    may be used to endorse or promote products derived from this software
19 *    without specific prior written permission.
20 *
21 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
22 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
25 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
27 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
30 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31 * SUCH DAMAGE.
32 *
33 *	@(#)telnetd.h	8.1 (Berkeley) 6/4/93
34 */
35
36
37#include <config.h>
38
39#include <stdio.h>
40#include <stdarg.h>
41#include <stdlib.h>
42#include <string.h>
43
44#ifdef HAVE_SYS_TYPES_H
45#include <sys/types.h>
46#endif
47#ifdef HAVE_SYS_PARAM_H
48#include <sys/param.h>
49#endif
50
51#ifdef HAVE_SYS_SOCKET_H
52#include <sys/socket.h>
53#endif
54#ifdef TIME_WITH_SYS_TIME
55#include <sys/time.h>
56#include <time.h>
57#elif defined(HAVE_SYS_TIME_H)
58#include <sys/time.h>
59#else
60#include <time.h>
61#endif
62
63#ifdef HAVE_SYS_RESOURCE_H
64#include <sys/resource.h>
65#endif /* HAVE_SYS_RESOURCE_H */
66
67#ifdef HAVE_SYS_WAIT_H
68#include <sys/wait.h>
69#endif
70
71#ifdef HAVE_FCNTL_H
72#include <fcntl.h>
73#endif
74#ifdef HAVE_SYS_FILE_H
75#include <sys/file.h>
76#endif
77#ifdef HAVE_SYS_STAT_H
78#include <sys/stat.h>
79#endif
80
81/* including both <sys/ioctl.h> and <termios.h> in SunOS 4 generates a
82   lot of warnings */
83
84#if defined(HAVE_SYS_IOCTL_H) && SunOS != 40
85#include <sys/ioctl.h>
86#endif
87#ifdef HAVE_SYS_FILIO_H
88#include <sys/filio.h>
89#endif
90
91#ifdef HAVE_NETINET_IN_H
92#include <netinet/in.h>
93#endif
94#ifdef HAVE_NETINET_IN6_H
95#include <netinet/in6.h>
96#endif
97#ifdef HAVE_NETINET6_IN6_H
98#include <netinet6/in6.h>
99#endif
100
101#ifdef HAVE_ARPA_INET_H
102#include <arpa/inet.h>
103#endif
104
105#include <signal.h>
106#include <errno.h>
107#ifdef HAVE_NETDB_H
108#include <netdb.h>
109#endif
110#ifdef HAVE_SYSLOG_H
111#include <syslog.h>
112#endif
113#include <ctype.h>
114
115#ifdef HAVE_UNISTD_H
116#include <unistd.h>
117#endif
118
119#include <termios.h>
120
121#ifdef HAVE_PTY_H
122#include <pty.h>
123#endif
124
125#ifdef	STREAMSPTY
126#ifdef HAVE_SAC_H
127#include <sac.h>
128#endif
129#ifdef HAVE_SYS_STROPTS_H
130#include <sys/stropts.h>
131#endif
132
133# include <stropts.h>
134
135#ifdef  HAVE_SYS_UIO_H
136#include <sys/uio.h>
137#ifdef __hpux
138#undef SE
139#endif
140#endif
141#ifdef	HAVE_SYS_STREAM_H
142#include <sys/stream.h>
143#endif
144
145#endif /* STREAMSPTY */
146
147#undef NOERROR
148
149#include "defs.h"
150
151#ifndef _POSIX_VDISABLE
152# ifdef VDISABLE
153#  define _POSIX_VDISABLE VDISABLE
154# else
155#  define _POSIX_VDISABLE ((unsigned char)'\377')
156# endif
157#endif
158
159
160#ifdef HAVE_SYS_PTY_H
161#include <sys/pty.h>
162#endif
163#ifdef HAVE_SYS_SELECT_H
164#include <sys/select.h>
165#endif
166
167#ifdef HAVE_SYS_PTYIO_H
168#include <sys/ptyio.h>
169#endif
170
171#ifdef HAVE_SYS_UTSNAME_H
172#include <sys/utsname.h>
173#endif
174
175#ifdef HAVE_PATHS_H
176#include <paths.h>
177#endif
178
179#ifdef HAVE_ARPA_TELNET_H
180#include <arpa/telnet.h>
181#endif
182
183#include "ext.h"
184
185#ifdef SOCKS
186#include <socks.h>
187/* This doesn't belong here. */
188struct tm *localtime(const time_t *);
189struct hostent  *gethostbyname(const char *);
190#endif
191
192#ifdef AUTHENTICATION
193#include <libtelnet/auth.h>
194#include <libtelnet/misc.h>
195#ifdef ENCRYPTION
196#include <libtelnet/encrypt.h>
197#endif
198#endif
199
200#ifdef HAVE_LIBUTIL_H
201#include <libutil.h>
202#endif
203
204#include <roken.h>
205
206/* Don't use the system login, use our version instead */
207
208/* BINDIR should be defined somewhere else... */
209
210#ifndef BINDIR
211#define BINDIR "/usr/athena/bin"
212#endif
213
214#undef _PATH_LOGIN
215#define _PATH_LOGIN	BINDIR "/login"
216
217/* fallbacks */
218
219#ifndef _PATH_DEV
220#define _PATH_DEV "/dev/"
221#endif
222
223#ifndef _PATH_TTY
224#define _PATH_TTY "/dev/tty"
225#endif /* _PATH_TTY */
226
227#ifdef	DIAGNOSTICS
228#define	DIAG(a,b)	if (diagnostic & (a)) b
229#else
230#define	DIAG(a,b)
231#endif
232
233/* other external variables */
234extern	char **environ;
235
236/* prototypes */
237
238/* appends data to nfrontp and advances */
239int output_data (const char *format, ...)
240#ifdef __GNUC__
241__attribute__ ((format (printf, 1, 2)))
242#endif
243;
244
245#ifdef ENCRYPTION
246extern int require_encryption;
247#endif
248