xref: /minix3/usr.bin/telnet/externs.h (revision 7348b5c52b47a1c199a1754a40bbfa360b536de2)
1*7348b5c5SDavid van Moolenbroek /*	$NetBSD: externs.h,v 1.37 2012/01/10 23:39:11 joerg Exp $	*/
2*7348b5c5SDavid van Moolenbroek 
3*7348b5c5SDavid van Moolenbroek /*
4*7348b5c5SDavid van Moolenbroek  * Copyright (c) 1988, 1990, 1993
5*7348b5c5SDavid van Moolenbroek  *	The Regents of the University of California.  All rights reserved.
6*7348b5c5SDavid van Moolenbroek  *
7*7348b5c5SDavid van Moolenbroek  * Redistribution and use in source and binary forms, with or without
8*7348b5c5SDavid van Moolenbroek  * modification, are permitted provided that the following conditions
9*7348b5c5SDavid van Moolenbroek  * are met:
10*7348b5c5SDavid van Moolenbroek  * 1. Redistributions of source code must retain the above copyright
11*7348b5c5SDavid van Moolenbroek  *    notice, this list of conditions and the following disclaimer.
12*7348b5c5SDavid van Moolenbroek  * 2. Redistributions in binary form must reproduce the above copyright
13*7348b5c5SDavid van Moolenbroek  *    notice, this list of conditions and the following disclaimer in the
14*7348b5c5SDavid van Moolenbroek  *    documentation and/or other materials provided with the distribution.
15*7348b5c5SDavid van Moolenbroek  * 3. Neither the name of the University nor the names of its contributors
16*7348b5c5SDavid van Moolenbroek  *    may be used to endorse or promote products derived from this software
17*7348b5c5SDavid van Moolenbroek  *    without specific prior written permission.
18*7348b5c5SDavid van Moolenbroek  *
19*7348b5c5SDavid van Moolenbroek  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
20*7348b5c5SDavid van Moolenbroek  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21*7348b5c5SDavid van Moolenbroek  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22*7348b5c5SDavid van Moolenbroek  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
23*7348b5c5SDavid van Moolenbroek  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
24*7348b5c5SDavid van Moolenbroek  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
25*7348b5c5SDavid van Moolenbroek  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
26*7348b5c5SDavid van Moolenbroek  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
27*7348b5c5SDavid van Moolenbroek  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
28*7348b5c5SDavid van Moolenbroek  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
29*7348b5c5SDavid van Moolenbroek  * SUCH DAMAGE.
30*7348b5c5SDavid van Moolenbroek  *
31*7348b5c5SDavid van Moolenbroek  *	from: @(#)externs.h	8.3 (Berkeley) 5/30/95
32*7348b5c5SDavid van Moolenbroek  */
33*7348b5c5SDavid van Moolenbroek 
34*7348b5c5SDavid van Moolenbroek #include <stdio.h>
35*7348b5c5SDavid van Moolenbroek #include <stdlib.h>
36*7348b5c5SDavid van Moolenbroek #include <setjmp.h>
37*7348b5c5SDavid van Moolenbroek #include <sys/ioctl.h>
38*7348b5c5SDavid van Moolenbroek #include <errno.h>
39*7348b5c5SDavid van Moolenbroek #include <sys/termios.h>
40*7348b5c5SDavid van Moolenbroek 
41*7348b5c5SDavid van Moolenbroek #include <string.h>
42*7348b5c5SDavid van Moolenbroek 
43*7348b5c5SDavid van Moolenbroek #if defined(IPSEC)
44*7348b5c5SDavid van Moolenbroek #include <netipsec/ipsec.h>
45*7348b5c5SDavid van Moolenbroek #if defined(IPSEC_POLICY_IPSEC)
46*7348b5c5SDavid van Moolenbroek extern char *ipsec_policy_in;
47*7348b5c5SDavid van Moolenbroek extern char *ipsec_policy_out;
48*7348b5c5SDavid van Moolenbroek #endif
49*7348b5c5SDavid van Moolenbroek #endif
50*7348b5c5SDavid van Moolenbroek 
51*7348b5c5SDavid van Moolenbroek #ifndef	_POSIX_VDISABLE
52*7348b5c5SDavid van Moolenbroek # ifdef sun
53*7348b5c5SDavid van Moolenbroek #  include <sys/param.h>	/* pick up VDISABLE definition, mayby */
54*7348b5c5SDavid van Moolenbroek # endif
55*7348b5c5SDavid van Moolenbroek # ifdef VDISABLE
56*7348b5c5SDavid van Moolenbroek #  define _POSIX_VDISABLE VDISABLE
57*7348b5c5SDavid van Moolenbroek # else
58*7348b5c5SDavid van Moolenbroek #  define _POSIX_VDISABLE ((cc_t)'\377')
59*7348b5c5SDavid van Moolenbroek # endif
60*7348b5c5SDavid van Moolenbroek #endif
61*7348b5c5SDavid van Moolenbroek 
62*7348b5c5SDavid van Moolenbroek #define	SUBBUFSIZE	256
63*7348b5c5SDavid van Moolenbroek 
64*7348b5c5SDavid van Moolenbroek #include <sys/cdefs.h>
65*7348b5c5SDavid van Moolenbroek 
66*7348b5c5SDavid van Moolenbroek extern int
67*7348b5c5SDavid van Moolenbroek     autologin,		/* Autologin enabled */
68*7348b5c5SDavid van Moolenbroek     skiprc,		/* Don't process the ~/.telnetrc file */
69*7348b5c5SDavid van Moolenbroek     eight,		/* use eight bit mode (binary in and/or out */
70*7348b5c5SDavid van Moolenbroek     family,		/* address family of peer */
71*7348b5c5SDavid van Moolenbroek     flushout,		/* flush output */
72*7348b5c5SDavid van Moolenbroek     connected,		/* Are we connected to the other side? */
73*7348b5c5SDavid van Moolenbroek     globalmode,		/* Mode tty should be in */
74*7348b5c5SDavid van Moolenbroek     In3270,		/* Are we in 3270 mode? */
75*7348b5c5SDavid van Moolenbroek     telnetport,		/* Are we connected to the telnet port? */
76*7348b5c5SDavid van Moolenbroek     localflow,		/* Flow control handled locally */
77*7348b5c5SDavid van Moolenbroek     restartany,		/* If flow control, restart output on any character */
78*7348b5c5SDavid van Moolenbroek     localchars,		/* we recognize interrupt/quit */
79*7348b5c5SDavid van Moolenbroek     donelclchars,	/* the user has set "localchars" */
80*7348b5c5SDavid van Moolenbroek     showoptions,
81*7348b5c5SDavid van Moolenbroek     net,		/* Network file descriptor */
82*7348b5c5SDavid van Moolenbroek     tin,		/* Terminal input file descriptor */
83*7348b5c5SDavid van Moolenbroek     tout,		/* Terminal output file descriptor */
84*7348b5c5SDavid van Moolenbroek     crlf,		/* Should '\r' be mapped to <CR><LF> (or <CR><NUL>)? */
85*7348b5c5SDavid van Moolenbroek     autoflush,		/* flush output when interrupting? */
86*7348b5c5SDavid van Moolenbroek     autosynch,		/* send interrupt characters with SYNCH? */
87*7348b5c5SDavid van Moolenbroek     SYNCHing,		/* Is the stream in telnet SYNCH mode? */
88*7348b5c5SDavid van Moolenbroek     donebinarytoggle,	/* the user has put us in binary */
89*7348b5c5SDavid van Moolenbroek     dontlecho,		/* do we suppress local echoing right now? */
90*7348b5c5SDavid van Moolenbroek     crmod,
91*7348b5c5SDavid van Moolenbroek     netdata,		/* Print out network data flow */
92*7348b5c5SDavid van Moolenbroek     prettydump,		/* Print "netdata" output in user readable format */
93*7348b5c5SDavid van Moolenbroek #ifdef TN3270
94*7348b5c5SDavid van Moolenbroek     cursesdata,		/* Print out curses data flow */
95*7348b5c5SDavid van Moolenbroek     apitrace,		/* Trace API transactions */
96*7348b5c5SDavid van Moolenbroek #endif	/* defined(TN3270) */
97*7348b5c5SDavid van Moolenbroek     termdata,		/* Print out terminal data flow */
98*7348b5c5SDavid van Moolenbroek     telnet_debug,	/* Debug level */
99*7348b5c5SDavid van Moolenbroek     doaddrlookup,	/* do a reverse address lookup? */
100*7348b5c5SDavid van Moolenbroek     clienteof;		/* Client received EOF */
101*7348b5c5SDavid van Moolenbroek 
102*7348b5c5SDavid van Moolenbroek extern cc_t escape;	/* Escape to command mode */
103*7348b5c5SDavid van Moolenbroek extern cc_t rlogin;	/* Rlogin mode escape character */
104*7348b5c5SDavid van Moolenbroek #ifdef	KLUDGELINEMODE
105*7348b5c5SDavid van Moolenbroek extern cc_t echoc;	/* Toggle local echoing */
106*7348b5c5SDavid van Moolenbroek #endif
107*7348b5c5SDavid van Moolenbroek 
108*7348b5c5SDavid van Moolenbroek extern char
109*7348b5c5SDavid van Moolenbroek     *prompt;		/* Prompt for command. */
110*7348b5c5SDavid van Moolenbroek 
111*7348b5c5SDavid van Moolenbroek extern char
112*7348b5c5SDavid van Moolenbroek     doopt[],
113*7348b5c5SDavid van Moolenbroek     dont[],
114*7348b5c5SDavid van Moolenbroek     will[],
115*7348b5c5SDavid van Moolenbroek     wont[],
116*7348b5c5SDavid van Moolenbroek     options[],		/* All the little options */
117*7348b5c5SDavid van Moolenbroek     *hostname;		/* Who are we connected to? */
118*7348b5c5SDavid van Moolenbroek 
119*7348b5c5SDavid van Moolenbroek #ifdef	ENCRYPTION
120*7348b5c5SDavid van Moolenbroek extern void (*encrypt_output)(unsigned char *, int);
121*7348b5c5SDavid van Moolenbroek extern int (*decrypt_input)(int);
122*7348b5c5SDavid van Moolenbroek #endif	/* ENCRYPTION */
123*7348b5c5SDavid van Moolenbroek 
124*7348b5c5SDavid van Moolenbroek /*
125*7348b5c5SDavid van Moolenbroek  * We keep track of each side of the option negotiation.
126*7348b5c5SDavid van Moolenbroek  */
127*7348b5c5SDavid van Moolenbroek 
128*7348b5c5SDavid van Moolenbroek #define	MY_STATE_WILL		0x01
129*7348b5c5SDavid van Moolenbroek #define	MY_WANT_STATE_WILL	0x02
130*7348b5c5SDavid van Moolenbroek #define	MY_STATE_DO		0x04
131*7348b5c5SDavid van Moolenbroek #define	MY_WANT_STATE_DO	0x08
132*7348b5c5SDavid van Moolenbroek 
133*7348b5c5SDavid van Moolenbroek /*
134*7348b5c5SDavid van Moolenbroek  * Macros to check the current state of things
135*7348b5c5SDavid van Moolenbroek  */
136*7348b5c5SDavid van Moolenbroek 
137*7348b5c5SDavid van Moolenbroek #define	my_state_is_do(opt)		(options[opt]&MY_STATE_DO)
138*7348b5c5SDavid van Moolenbroek #define	my_state_is_will(opt)		(options[opt]&MY_STATE_WILL)
139*7348b5c5SDavid van Moolenbroek #define my_want_state_is_do(opt)	(options[opt]&MY_WANT_STATE_DO)
140*7348b5c5SDavid van Moolenbroek #define my_want_state_is_will(opt)	(options[opt]&MY_WANT_STATE_WILL)
141*7348b5c5SDavid van Moolenbroek 
142*7348b5c5SDavid van Moolenbroek #define	my_state_is_dont(opt)		(!my_state_is_do(opt))
143*7348b5c5SDavid van Moolenbroek #define	my_state_is_wont(opt)		(!my_state_is_will(opt))
144*7348b5c5SDavid van Moolenbroek #define my_want_state_is_dont(opt)	(!my_want_state_is_do(opt))
145*7348b5c5SDavid van Moolenbroek #define my_want_state_is_wont(opt)	(!my_want_state_is_will(opt))
146*7348b5c5SDavid van Moolenbroek 
147*7348b5c5SDavid van Moolenbroek #define	set_my_state_do(opt)		{options[opt] |= MY_STATE_DO;}
148*7348b5c5SDavid van Moolenbroek #define	set_my_state_will(opt)		{options[opt] |= MY_STATE_WILL;}
149*7348b5c5SDavid van Moolenbroek #define	set_my_want_state_do(opt)	{options[opt] |= MY_WANT_STATE_DO;}
150*7348b5c5SDavid van Moolenbroek #define	set_my_want_state_will(opt)	{options[opt] |= MY_WANT_STATE_WILL;}
151*7348b5c5SDavid van Moolenbroek 
152*7348b5c5SDavid van Moolenbroek #define	set_my_state_dont(opt)		{options[opt] &= ~MY_STATE_DO;}
153*7348b5c5SDavid van Moolenbroek #define	set_my_state_wont(opt)		{options[opt] &= ~MY_STATE_WILL;}
154*7348b5c5SDavid van Moolenbroek #define	set_my_want_state_dont(opt)	{options[opt] &= ~MY_WANT_STATE_DO;}
155*7348b5c5SDavid van Moolenbroek #define	set_my_want_state_wont(opt)	{options[opt] &= ~MY_WANT_STATE_WILL;}
156*7348b5c5SDavid van Moolenbroek 
157*7348b5c5SDavid van Moolenbroek /*
158*7348b5c5SDavid van Moolenbroek  * Make everything symmetrical
159*7348b5c5SDavid van Moolenbroek  */
160*7348b5c5SDavid van Moolenbroek 
161*7348b5c5SDavid van Moolenbroek #define	HIS_STATE_WILL			MY_STATE_DO
162*7348b5c5SDavid van Moolenbroek #define	HIS_WANT_STATE_WILL		MY_WANT_STATE_DO
163*7348b5c5SDavid van Moolenbroek #define HIS_STATE_DO			MY_STATE_WILL
164*7348b5c5SDavid van Moolenbroek #define HIS_WANT_STATE_DO		MY_WANT_STATE_WILL
165*7348b5c5SDavid van Moolenbroek 
166*7348b5c5SDavid van Moolenbroek #define	his_state_is_do			my_state_is_will
167*7348b5c5SDavid van Moolenbroek #define	his_state_is_will		my_state_is_do
168*7348b5c5SDavid van Moolenbroek #define his_want_state_is_do		my_want_state_is_will
169*7348b5c5SDavid van Moolenbroek #define his_want_state_is_will		my_want_state_is_do
170*7348b5c5SDavid van Moolenbroek 
171*7348b5c5SDavid van Moolenbroek #define	his_state_is_dont		my_state_is_wont
172*7348b5c5SDavid van Moolenbroek #define	his_state_is_wont		my_state_is_dont
173*7348b5c5SDavid van Moolenbroek #define his_want_state_is_dont		my_want_state_is_wont
174*7348b5c5SDavid van Moolenbroek #define his_want_state_is_wont		my_want_state_is_dont
175*7348b5c5SDavid van Moolenbroek 
176*7348b5c5SDavid van Moolenbroek #define	set_his_state_do		set_my_state_will
177*7348b5c5SDavid van Moolenbroek #define	set_his_state_will		set_my_state_do
178*7348b5c5SDavid van Moolenbroek #define	set_his_want_state_do		set_my_want_state_will
179*7348b5c5SDavid van Moolenbroek #define	set_his_want_state_will		set_my_want_state_do
180*7348b5c5SDavid van Moolenbroek 
181*7348b5c5SDavid van Moolenbroek #define	set_his_state_dont		set_my_state_wont
182*7348b5c5SDavid van Moolenbroek #define	set_his_state_wont		set_my_state_dont
183*7348b5c5SDavid van Moolenbroek #define	set_his_want_state_dont		set_my_want_state_wont
184*7348b5c5SDavid van Moolenbroek #define	set_his_want_state_wont		set_my_want_state_dont
185*7348b5c5SDavid van Moolenbroek 
186*7348b5c5SDavid van Moolenbroek 
187*7348b5c5SDavid van Moolenbroek extern FILE
188*7348b5c5SDavid van Moolenbroek     *NetTrace;		/* Where debugging output goes */
189*7348b5c5SDavid van Moolenbroek extern char
190*7348b5c5SDavid van Moolenbroek     NetTraceFile[];	/* Name of file where debugging output goes */
191*7348b5c5SDavid van Moolenbroek 
192*7348b5c5SDavid van Moolenbroek extern jmp_buf
193*7348b5c5SDavid van Moolenbroek     toplevel;		/* For error conditions. */
194*7348b5c5SDavid van Moolenbroek 
195*7348b5c5SDavid van Moolenbroek 
196*7348b5c5SDavid van Moolenbroek /* authenc.c */
197*7348b5c5SDavid van Moolenbroek int telnet_net_write(unsigned char *, int);
198*7348b5c5SDavid van Moolenbroek void net_encrypt(void);
199*7348b5c5SDavid van Moolenbroek int telnet_spin(void);
200*7348b5c5SDavid van Moolenbroek char *telnet_getenv(char *);
201*7348b5c5SDavid van Moolenbroek char *telnet_gets(char *, char *, int, int);
202*7348b5c5SDavid van Moolenbroek 
203*7348b5c5SDavid van Moolenbroek /* commands.c */
204*7348b5c5SDavid van Moolenbroek int send_tncmd(void (*)(int, int), const char *, char *);
205*7348b5c5SDavid van Moolenbroek void _setlist_init(void);
206*7348b5c5SDavid van Moolenbroek void set_escape_char(char *);
207*7348b5c5SDavid van Moolenbroek int set_mode(int);
208*7348b5c5SDavid van Moolenbroek int clear_mode(int);
209*7348b5c5SDavid van Moolenbroek int modehelp(int);
210*7348b5c5SDavid van Moolenbroek int suspend(int, char *[]);
211*7348b5c5SDavid van Moolenbroek int shell(int, char *[]);
212*7348b5c5SDavid van Moolenbroek int quit(int, char *[]);
213*7348b5c5SDavid van Moolenbroek int logout(int, char *[]);
214*7348b5c5SDavid van Moolenbroek int env_cmd(int, char *[]);
215*7348b5c5SDavid van Moolenbroek struct env_lst *env_find(const unsigned char *);
216*7348b5c5SDavid van Moolenbroek void env_init(void);
217*7348b5c5SDavid van Moolenbroek struct env_lst *env_define(const unsigned char *, unsigned char *);
218*7348b5c5SDavid van Moolenbroek struct env_lst *env_undefine(const unsigned char *, unsigned char *);
219*7348b5c5SDavid van Moolenbroek struct env_lst *env_export(const unsigned char *, unsigned char *);
220*7348b5c5SDavid van Moolenbroek struct env_lst *env_unexport(const unsigned char *, unsigned char *);
221*7348b5c5SDavid van Moolenbroek struct env_lst *env_send(const unsigned char *, unsigned char *);
222*7348b5c5SDavid van Moolenbroek struct env_lst *env_list(const unsigned char *, unsigned char *);
223*7348b5c5SDavid van Moolenbroek unsigned char *env_default(int, int );
224*7348b5c5SDavid van Moolenbroek unsigned char *env_getvalue(const unsigned char *);
225*7348b5c5SDavid van Moolenbroek void env_varval(const unsigned char *);
226*7348b5c5SDavid van Moolenbroek int auth_cmd(int, char *[]);
227*7348b5c5SDavid van Moolenbroek int ayt_status(void);
228*7348b5c5SDavid van Moolenbroek int encrypt_cmd(int, char *[]);
229*7348b5c5SDavid van Moolenbroek int tn(int, char *[]);
230*7348b5c5SDavid van Moolenbroek void command(int, const char *, int);
231*7348b5c5SDavid van Moolenbroek void cmdrc(const char *, const char *);
232*7348b5c5SDavid van Moolenbroek struct addrinfo;
233*7348b5c5SDavid van Moolenbroek int sourceroute(struct addrinfo *, char *, char **, int *, int*);
234*7348b5c5SDavid van Moolenbroek 
235*7348b5c5SDavid van Moolenbroek /* main.c */
236*7348b5c5SDavid van Moolenbroek void tninit(void);
237*7348b5c5SDavid van Moolenbroek void usage(void) __dead;
238*7348b5c5SDavid van Moolenbroek 
239*7348b5c5SDavid van Moolenbroek /* network.c */
240*7348b5c5SDavid van Moolenbroek void init_network(void);
241*7348b5c5SDavid van Moolenbroek int stilloob(void);
242*7348b5c5SDavid van Moolenbroek void setneturg(void);
243*7348b5c5SDavid van Moolenbroek int netflush(void);
244*7348b5c5SDavid van Moolenbroek 
245*7348b5c5SDavid van Moolenbroek /* sys_bsd.c */
246*7348b5c5SDavid van Moolenbroek void init_sys(void);
247*7348b5c5SDavid van Moolenbroek int TerminalWrite(char *, int);
248*7348b5c5SDavid van Moolenbroek int TerminalRead(unsigned char *, int);
249*7348b5c5SDavid van Moolenbroek int TerminalAutoFlush(void);
250*7348b5c5SDavid van Moolenbroek int TerminalSpecialChars(int);
251*7348b5c5SDavid van Moolenbroek void TerminalFlushOutput(void);
252*7348b5c5SDavid van Moolenbroek void TerminalSaveState(void);
253*7348b5c5SDavid van Moolenbroek cc_t *tcval(int);
254*7348b5c5SDavid van Moolenbroek void TerminalDefaultChars(void);
255*7348b5c5SDavid van Moolenbroek void TerminalRestoreState(void);
256*7348b5c5SDavid van Moolenbroek void TerminalNewMode(int);
257*7348b5c5SDavid van Moolenbroek void TerminalSpeeds(long *, long *);
258*7348b5c5SDavid van Moolenbroek int TerminalWindowSize(long *, long *);
259*7348b5c5SDavid van Moolenbroek int NetClose(int);
260*7348b5c5SDavid van Moolenbroek void NetNonblockingIO(int, int);
261*7348b5c5SDavid van Moolenbroek void NetSigIO(int, int);
262*7348b5c5SDavid van Moolenbroek void NetSetPgrp(int);
263*7348b5c5SDavid van Moolenbroek void sys_telnet_init(void);
264*7348b5c5SDavid van Moolenbroek int process_rings(int , int , int , int , int , int);
265*7348b5c5SDavid van Moolenbroek 
266*7348b5c5SDavid van Moolenbroek /* telnet.c */
267*7348b5c5SDavid van Moolenbroek void init_telnet(void);
268*7348b5c5SDavid van Moolenbroek void send_do(int, int );
269*7348b5c5SDavid van Moolenbroek void send_dont(int, int );
270*7348b5c5SDavid van Moolenbroek void send_will(int, int );
271*7348b5c5SDavid van Moolenbroek void send_wont(int, int );
272*7348b5c5SDavid van Moolenbroek void willoption(int);
273*7348b5c5SDavid van Moolenbroek void wontoption(int);
274*7348b5c5SDavid van Moolenbroek char **mklist(char *, char *);
275*7348b5c5SDavid van Moolenbroek int is_unique(char *, char **, char **);
276*7348b5c5SDavid van Moolenbroek int setup_term(char *, int, int *);
277*7348b5c5SDavid van Moolenbroek char *gettermname(void);
278*7348b5c5SDavid van Moolenbroek void lm_will(unsigned char *, int);
279*7348b5c5SDavid van Moolenbroek void lm_wont(unsigned char *, int);
280*7348b5c5SDavid van Moolenbroek void lm_do(unsigned char *, int);
281*7348b5c5SDavid van Moolenbroek void lm_dont(unsigned char *, int);
282*7348b5c5SDavid van Moolenbroek void lm_mode(unsigned char *, int, int );
283*7348b5c5SDavid van Moolenbroek void slc_init(void);
284*7348b5c5SDavid van Moolenbroek void slcstate(void);
285*7348b5c5SDavid van Moolenbroek void slc_mode_export(int);
286*7348b5c5SDavid van Moolenbroek void slc_mode_import(int);
287*7348b5c5SDavid van Moolenbroek void slc_import(int);
288*7348b5c5SDavid van Moolenbroek void slc_export(void);
289*7348b5c5SDavid van Moolenbroek void slc(unsigned char *, int);
290*7348b5c5SDavid van Moolenbroek void slc_check(void);
291*7348b5c5SDavid van Moolenbroek void slc_start_reply(void);
292*7348b5c5SDavid van Moolenbroek void slc_add_reply(unsigned int, unsigned int, cc_t);
293*7348b5c5SDavid van Moolenbroek void slc_end_reply(void);
294*7348b5c5SDavid van Moolenbroek int slc_update(void);
295*7348b5c5SDavid van Moolenbroek void env_opt(unsigned char *, int);
296*7348b5c5SDavid van Moolenbroek void env_opt_start(void);
297*7348b5c5SDavid van Moolenbroek void env_opt_start_info(void);
298*7348b5c5SDavid van Moolenbroek void env_opt_add(unsigned char *);
299*7348b5c5SDavid van Moolenbroek int opt_welldefined(const char *);
300*7348b5c5SDavid van Moolenbroek void env_opt_end(int);
301*7348b5c5SDavid van Moolenbroek int telrcv(void);
302*7348b5c5SDavid van Moolenbroek int rlogin_susp(void);
303*7348b5c5SDavid van Moolenbroek int Scheduler(int);
304*7348b5c5SDavid van Moolenbroek void telnet(const char *);
305*7348b5c5SDavid van Moolenbroek void xmitAO(void);
306*7348b5c5SDavid van Moolenbroek void xmitEL(void);
307*7348b5c5SDavid van Moolenbroek void xmitEC(void);
308*7348b5c5SDavid van Moolenbroek int dosynch(char *);
309*7348b5c5SDavid van Moolenbroek int get_status(char *);
310*7348b5c5SDavid van Moolenbroek void intp(void);
311*7348b5c5SDavid van Moolenbroek void sendbrk(void);
312*7348b5c5SDavid van Moolenbroek void sendabort(void);
313*7348b5c5SDavid van Moolenbroek void sendsusp(void);
314*7348b5c5SDavid van Moolenbroek void sendeof(void);
315*7348b5c5SDavid van Moolenbroek void sendayt(void);
316*7348b5c5SDavid van Moolenbroek void sendnaws(void);
317*7348b5c5SDavid van Moolenbroek void tel_enter_binary(int);
318*7348b5c5SDavid van Moolenbroek void tel_leave_binary(int);
319*7348b5c5SDavid van Moolenbroek 
320*7348b5c5SDavid van Moolenbroek /* terminal.c */
321*7348b5c5SDavid van Moolenbroek void init_terminal(void);
322*7348b5c5SDavid van Moolenbroek int ttyflush(int);
323*7348b5c5SDavid van Moolenbroek int getconnmode(void);
324*7348b5c5SDavid van Moolenbroek void setconnmode(int);
325*7348b5c5SDavid van Moolenbroek void setcommandmode(void);
326*7348b5c5SDavid van Moolenbroek 
327*7348b5c5SDavid van Moolenbroek /* utilities.c */
328*7348b5c5SDavid van Moolenbroek void upcase(char *);
329*7348b5c5SDavid van Moolenbroek int SetSockOpt(int, int, int, int);
330*7348b5c5SDavid van Moolenbroek void SetNetTrace(char *);
331*7348b5c5SDavid van Moolenbroek void Dump(int, unsigned char *, int);
332*7348b5c5SDavid van Moolenbroek void printoption(const char *, int, int );
333*7348b5c5SDavid van Moolenbroek void optionstatus(void);
334*7348b5c5SDavid van Moolenbroek void printsub(int, unsigned char *, int);
335*7348b5c5SDavid van Moolenbroek void EmptyTerminal(void);
336*7348b5c5SDavid van Moolenbroek void SetForExit(void);
337*7348b5c5SDavid van Moolenbroek void Exit(int) __attribute__((__noreturn__));
338*7348b5c5SDavid van Moolenbroek void ExitString(const char *, int) __attribute__((__noreturn__));
339*7348b5c5SDavid van Moolenbroek 
340*7348b5c5SDavid van Moolenbroek 
341*7348b5c5SDavid van Moolenbroek extern struct	termios new_tc;
342*7348b5c5SDavid van Moolenbroek 
343*7348b5c5SDavid van Moolenbroek # define termEofChar		new_tc.c_cc[VEOF]
344*7348b5c5SDavid van Moolenbroek # define termEraseChar		new_tc.c_cc[VERASE]
345*7348b5c5SDavid van Moolenbroek # define termIntChar		new_tc.c_cc[VINTR]
346*7348b5c5SDavid van Moolenbroek # define termKillChar		new_tc.c_cc[VKILL]
347*7348b5c5SDavid van Moolenbroek # define termQuitChar		new_tc.c_cc[VQUIT]
348*7348b5c5SDavid van Moolenbroek 
349*7348b5c5SDavid van Moolenbroek #  define termSuspChar		new_tc.c_cc[VSUSP]
350*7348b5c5SDavid van Moolenbroek #  define termFlushChar		new_tc.c_cc[VDISCARD]
351*7348b5c5SDavid van Moolenbroek #  define termWerasChar		new_tc.c_cc[VWERASE]
352*7348b5c5SDavid van Moolenbroek #  define termRprntChar		new_tc.c_cc[VREPRINT]
353*7348b5c5SDavid van Moolenbroek #  define termLiteralNextChar	new_tc.c_cc[VLNEXT]
354*7348b5c5SDavid van Moolenbroek #  define termStartChar		new_tc.c_cc[VSTART]
355*7348b5c5SDavid van Moolenbroek #  define termStopChar		new_tc.c_cc[VSTOP]
356*7348b5c5SDavid van Moolenbroek #  define termForw1Char		new_tc.c_cc[VEOL]
357*7348b5c5SDavid van Moolenbroek #  define termForw2Char		new_tc.c_cc[VEOL]
358*7348b5c5SDavid van Moolenbroek #  define termAytChar		new_tc.c_cc[VSTATUS]
359*7348b5c5SDavid van Moolenbroek 
360*7348b5c5SDavid van Moolenbroek # define termEofCharp		&termEofChar
361*7348b5c5SDavid van Moolenbroek # define termEraseCharp		&termEraseChar
362*7348b5c5SDavid van Moolenbroek # define termIntCharp		&termIntChar
363*7348b5c5SDavid van Moolenbroek # define termKillCharp		&termKillChar
364*7348b5c5SDavid van Moolenbroek # define termQuitCharp		&termQuitChar
365*7348b5c5SDavid van Moolenbroek # define termSuspCharp		&termSuspChar
366*7348b5c5SDavid van Moolenbroek # define termFlushCharp		&termFlushChar
367*7348b5c5SDavid van Moolenbroek # define termWerasCharp		&termWerasChar
368*7348b5c5SDavid van Moolenbroek # define termRprntCharp		&termRprntChar
369*7348b5c5SDavid van Moolenbroek # define termLiteralNextCharp	&termLiteralNextChar
370*7348b5c5SDavid van Moolenbroek # define termStartCharp		&termStartChar
371*7348b5c5SDavid van Moolenbroek # define termStopCharp		&termStopChar
372*7348b5c5SDavid van Moolenbroek # define termForw1Charp		&termForw1Char
373*7348b5c5SDavid van Moolenbroek # define termForw2Charp		&termForw2Char
374*7348b5c5SDavid van Moolenbroek # define termAytCharp		&termAytChar
375*7348b5c5SDavid van Moolenbroek 
376*7348b5c5SDavid van Moolenbroek 
377*7348b5c5SDavid van Moolenbroek /* Tn3270 section */
378*7348b5c5SDavid van Moolenbroek #if	defined(TN3270)
379*7348b5c5SDavid van Moolenbroek 
380*7348b5c5SDavid van Moolenbroek extern int
381*7348b5c5SDavid van Moolenbroek     HaveInput,		/* Whether an asynchronous I/O indication came in */
382*7348b5c5SDavid van Moolenbroek     noasynchtty,	/* Don't do signals on I/O (SIGURG, SIGIO) */
383*7348b5c5SDavid van Moolenbroek     noasynchnet,	/* Don't do signals on I/O (SIGURG, SIGIO) */
384*7348b5c5SDavid van Moolenbroek     sigiocount,		/* Count of SIGIO receptions */
385*7348b5c5SDavid van Moolenbroek     shell_active;	/* Subshell is active */
386*7348b5c5SDavid van Moolenbroek 
387*7348b5c5SDavid van Moolenbroek extern char
388*7348b5c5SDavid van Moolenbroek     *Ibackp,		/* Oldest byte of 3270 data */
389*7348b5c5SDavid van Moolenbroek     Ibuf[],		/* 3270 buffer */
390*7348b5c5SDavid van Moolenbroek     *Ifrontp,		/* Where next 3270 byte goes */
391*7348b5c5SDavid van Moolenbroek     tline[200],
392*7348b5c5SDavid van Moolenbroek     *transcom;		/* Transparent command */
393*7348b5c5SDavid van Moolenbroek 
394*7348b5c5SDavid van Moolenbroek /* tn3270.c */
395*7348b5c5SDavid van Moolenbroek void init_3270(void);
396*7348b5c5SDavid van Moolenbroek int DataToNetwork(char *, int, int);
397*7348b5c5SDavid van Moolenbroek void inputAvailable(int);
398*7348b5c5SDavid van Moolenbroek void outputPurge(void);
399*7348b5c5SDavid van Moolenbroek int DataToTerminal(char *, int);
400*7348b5c5SDavid van Moolenbroek int Push3270(void);
401*7348b5c5SDavid van Moolenbroek void Finish3270(void);
402*7348b5c5SDavid van Moolenbroek void StringToTerminal(char *);
403*7348b5c5SDavid van Moolenbroek int _putchar(int);
404*7348b5c5SDavid van Moolenbroek void SetIn3270(void);
405*7348b5c5SDavid van Moolenbroek int tn3270_ttype(void);
406*7348b5c5SDavid van Moolenbroek int settranscom(int, char *[]);
407*7348b5c5SDavid van Moolenbroek int shell_continue(void);
408*7348b5c5SDavid van Moolenbroek int DataFromTerminal(char *, int);
409*7348b5c5SDavid van Moolenbroek int DataFromNetwork(char *, int, int);
410*7348b5c5SDavid van Moolenbroek void ConnectScreen(void);
411*7348b5c5SDavid van Moolenbroek int DoTerminalOutput(void);
412*7348b5c5SDavid van Moolenbroek 
413*7348b5c5SDavid van Moolenbroek #endif	/* defined(TN3270) */
414