ext.h revision 72445
1210284Sjmallett/*
2232812Sjmallett * Copyright (c) 1989, 1993
3215990Sjmallett *	The Regents of the University of California.  All rights reserved.
4210284Sjmallett *
5210284Sjmallett * Redistribution and use in source and binary forms, with or without
6215990Sjmallett * modification, are permitted provided that the following conditions
7215990Sjmallett * are met:
8215990Sjmallett * 1. Redistributions of source code must retain the above copyright
9210284Sjmallett *    notice, this list of conditions and the following disclaimer.
10215990Sjmallett * 2. Redistributions in binary form must reproduce the above copyright
11215990Sjmallett *    notice, this list of conditions and the following disclaimer in the
12210284Sjmallett *    documentation and/or other materials provided with the distribution.
13215990Sjmallett * 3. All advertising materials mentioning features or use of this software
14215990Sjmallett *    must display the following acknowledgement:
15215990Sjmallett *	This product includes software developed by the University of
16215990Sjmallett *	California, Berkeley and its contributors.
17215990Sjmallett * 4. Neither the name of the University nor the names of its contributors
18232812Sjmallett *    may be used to endorse or promote products derived from this software
19215990Sjmallett *    without specific prior written permission.
20215990Sjmallett *
21215990Sjmallett * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
22215990Sjmallett * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23215990Sjmallett * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24215990Sjmallett * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
25215990Sjmallett * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26215990Sjmallett * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
27215990Sjmallett * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28215990Sjmallett * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29232812Sjmallett * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
30215990Sjmallett * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31215990Sjmallett * SUCH DAMAGE.
32215990Sjmallett *
33215990Sjmallett *	@(#)ext.h	8.2 (Berkeley) 12/15/93
34215990Sjmallett */
35215990Sjmallett
36215990Sjmallett/* $Id: ext.h,v 1.20 2000/11/15 23:03:38 assar Exp $ */
37215990Sjmallett
38210284Sjmallett#ifndef __EXT_H__
39210284Sjmallett#define __EXT_H__
40210284Sjmallett
41210284Sjmallett/*
42210284Sjmallett * Telnet server variable declarations
43210284Sjmallett */
44210284Sjmallettextern char	options[256];
45215990Sjmallettextern char	do_dont_resp[256];
46210284Sjmallettextern char	will_wont_resp[256];
47210284Sjmallettextern int	flowmode;	/* current flow control state */
48210284Sjmallettextern int	restartany;	/* restart output on any character state */
49210284Sjmallett#ifdef DIAGNOSTICS
50210284Sjmallettextern int	diagnostic;	/* telnet diagnostic capabilities */
51232812Sjmallett#endif /* DIAGNOSTICS */
52210284Sjmallettextern int	require_otp;
53210284Sjmallett#ifdef AUTHENTICATION
54210284Sjmallettextern int	auth_level;
55210284Sjmallett#endif
56210284Sjmallettextern const char *new_login;
57232812Sjmallett
58232812Sjmallettextern slcfun	slctab[NSLC + 1];	/* slc mapping table */
59232812Sjmallett
60232812Sjmallettextern char	*terminaltype;
61210284Sjmallett
62210284Sjmallett/*
63210284Sjmallett * I/O data buffers, pointers, and counters.
64210284Sjmallett */
65210284Sjmallettextern char	ptyobuf[BUFSIZ+NETSLOP], *pfrontp, *pbackp;
66210284Sjmallett
67210284Sjmallettextern char	netibuf[BUFSIZ], *netip;
68210284Sjmallett
69210284Sjmallettextern char	netobuf[BUFSIZ+NETSLOP], *nfrontp, *nbackp;
70210284Sjmallettextern char	*neturg;		/* one past last bye of urgent data */
71210284Sjmallett
72210284Sjmallettextern int	pcc, ncc;
73210284Sjmallett
74210284Sjmallettextern int	ourpty, net;
75210284Sjmallettextern char	*line;
76210284Sjmallettextern int	SYNCHing;		/* we are in TELNET SYNCH mode */
77210284Sjmallett
78210284Sjmallettint telnet_net_write (unsigned char *str, int len);
79210284Sjmallettvoid net_encrypt (void);
80210284Sjmallettint telnet_spin (void);
81210284Sjmallettchar *telnet_getenv (const char *val);
82210284Sjmallettchar *telnet_gets (char *prompt, char *result, int length, int echo);
83210284Sjmallettvoid get_slc_defaults (void);
84210284Sjmallettvoid telrcv (void);
85210284Sjmallettvoid send_do (int option, int init);
86210284Sjmallettvoid willoption (int option);
87210284Sjmallettvoid send_dont (int option, int init);
88210284Sjmallettvoid wontoption (int option);
89210284Sjmallettvoid send_will (int option, int init);
90210284Sjmallettvoid dooption (int option);
91210284Sjmallettvoid send_wont (int option, int init);
92210284Sjmallettvoid dontoption (int option);
93210284Sjmallettvoid suboption (void);
94210284Sjmallettvoid doclientstat (void);
95210284Sjmallettvoid send_status (void);
96210284Sjmallettvoid init_termbuf (void);
97210284Sjmallettvoid set_termbuf (void);
98210284Sjmallettint spcset (int func, cc_t *valp, cc_t **valpp);
99210284Sjmallettvoid set_utid (void);
100210284Sjmallettint getpty (int *ptynum);
101210284Sjmallettint tty_isecho (void);
102210284Sjmallettint tty_flowmode (void);
103210284Sjmallettint tty_restartany (void);
104210284Sjmallettvoid tty_setecho (int on);
105210284Sjmallettint tty_israw (void);
106210284Sjmallettvoid tty_binaryin (int on);
107210284Sjmallettvoid tty_binaryout (int on);
108210284Sjmallettint tty_isbinaryin (void);
109210284Sjmallettint tty_isbinaryout (void);
110210284Sjmallettint tty_issofttab (void);
111210284Sjmallettvoid tty_setsofttab (int on);
112210284Sjmallettint tty_islitecho (void);
113210284Sjmallettvoid tty_setlitecho (int on);
114210284Sjmallettint tty_iscrnl (void);
115210284Sjmallettvoid tty_tspeed (int val);
116210284Sjmallettvoid tty_rspeed (int val);
117210284Sjmallettvoid getptyslave (void);
118210284Sjmallettint cleanopen (char *line);
119210284Sjmallettvoid startslave (char *host, int autologin, char *autoname);
120210284Sjmallettvoid init_env (void);
121210284Sjmallettvoid start_login (char *host, int autologin, char *name);
122210284Sjmallettvoid cleanup (int sig);
123210284Sjmallettint main (int argc, char **argv);
124210284Sjmallettint getterminaltype (char *name, size_t);
125210284Sjmallettvoid _gettermname (void);
126210284Sjmallettint terminaltypeok (char *s);
127210284Sjmallettvoid my_telnet (int f, int p, char*, int, char*);
128210284Sjmallettvoid interrupt (void);
129210284Sjmallettvoid sendbrk (void);
130210284Sjmallettvoid sendsusp (void);
131210284Sjmallettvoid recv_ayt (void);
132210284Sjmallettvoid doeof (void);
133210284Sjmallettvoid flowstat (void);
134210284Sjmallettvoid clientstat (int code, int parm1, int parm2);
135210284Sjmallettint ttloop (void);
136210284Sjmallettint stilloob (int s);
137210284Sjmallettvoid ptyflush (void);
138210284Sjmallettchar *nextitem (char *current);
139210284Sjmallettvoid netclear (void);
140210284Sjmallettvoid netflush (void);
141210284Sjmallettvoid writenet (unsigned char *ptr, int len);
142210284Sjmallettvoid fatal (int f, char *msg);
143210284Sjmallettvoid fatalperror (int f, const char *msg);
144210284Sjmallettvoid edithost (char *pat, char *host);
145210284Sjmallettvoid putstr (char *s);
146210284Sjmallettvoid putchr (int cc);
147210284Sjmallettvoid putf (char *cp, char *where);
148210284Sjmallettvoid printoption (char *fmt, int option);
149210284Sjmallettvoid printsub (int direction, unsigned char *pointer, int length);
150210284Sjmallettvoid printdata (char *tag, char *ptr, int cnt);
151210284Sjmallettint login_tty(int t);
152210284Sjmallett
153210284Sjmallett#ifdef ENCRYPTION
154210284Sjmallettextern void	(*encrypt_output) (unsigned char *, int);
155210284Sjmallettextern int	(*decrypt_input) (int);
156210284Sjmallettextern char	*nclearto;
157210284Sjmallett#endif
158210284Sjmallett
159210284Sjmallett
160210284Sjmallett/*
161210284Sjmallett * The following are some clocks used to decide how to interpret
162210284Sjmallett * the relationship between various variables.
163210284Sjmallett */
164210284Sjmallett
165210284Sjmallettstruct clocks_t{
166210284Sjmallett    int
167210284Sjmallett	system,			/* what the current time is */
168210284Sjmallett	echotoggle,		/* last time user entered echo character */
169210284Sjmallett	modenegotiated,		/* last time operating mode negotiated */
170210284Sjmallett	didnetreceive,		/* last time we read data from network */
171210284Sjmallett	ttypesubopt,		/* ttype subopt is received */
172210284Sjmallett	tspeedsubopt,		/* tspeed subopt is received */
173210284Sjmallett	environsubopt,		/* environ subopt is received */
174210284Sjmallett	oenvironsubopt,		/* old environ subopt is received */
175210284Sjmallett	xdisplocsubopt,		/* xdisploc subopt is received */
176210284Sjmallett	baseline,		/* time started to do timed action */
177210284Sjmallett	gotDM;			/* when did we last see a data mark */
178210284Sjmallett};
179210284Sjmallettextern struct clocks_t clocks;
180210284Sjmallett
181210284Sjmallettextern int log_unauth;
182210284Sjmallettextern int no_warn;
183210284Sjmallett
184210284Sjmallett#ifdef STREAMSPTY
185210284Sjmallettextern int really_stream;
186210284Sjmallett#endif
187210284Sjmallett
188210284Sjmallett#ifndef USE_IM
189210284Sjmallett# ifdef CRAY
190210284Sjmallett#  define USE_IM "Cray UNICOS (%h) (%t)"
191210284Sjmallett# endif
192210284Sjmallett# ifdef _AIX
193210284Sjmallett#  define USE_IM "%s %v.%r (%h) (%t)"
194210284Sjmallett# endif
195210284Sjmallett# ifndef USE_IM
196210284Sjmallett#  define USE_IM "%s %r (%h) (%t)"
197210284Sjmallett# endif
198210284Sjmallett#endif
199210284Sjmallett
200210284Sjmallett#define DEFAULT_IM "\r\n\r\n" USE_IM "\r\n\r\n\r\n"
201210284Sjmallett
202210284Sjmallett#endif /* __EXT_H__ */
203210284Sjmallett