1*e044bafaSDavid van Moolenbroek /* $NetBSD: ext.h,v 1.22 2012/01/10 23:39:11 joerg Exp $ */ 2*e044bafaSDavid van Moolenbroek 3*e044bafaSDavid van Moolenbroek /* 4*e044bafaSDavid van Moolenbroek * Copyright (c) 1989, 1993 5*e044bafaSDavid van Moolenbroek * The Regents of the University of California. All rights reserved. 6*e044bafaSDavid van Moolenbroek * 7*e044bafaSDavid van Moolenbroek * Redistribution and use in source and binary forms, with or without 8*e044bafaSDavid van Moolenbroek * modification, are permitted provided that the following conditions 9*e044bafaSDavid van Moolenbroek * are met: 10*e044bafaSDavid van Moolenbroek * 1. Redistributions of source code must retain the above copyright 11*e044bafaSDavid van Moolenbroek * notice, this list of conditions and the following disclaimer. 12*e044bafaSDavid van Moolenbroek * 2. Redistributions in binary form must reproduce the above copyright 13*e044bafaSDavid van Moolenbroek * notice, this list of conditions and the following disclaimer in the 14*e044bafaSDavid van Moolenbroek * documentation and/or other materials provided with the distribution. 15*e044bafaSDavid van Moolenbroek * 3. Neither the name of the University nor the names of its contributors 16*e044bafaSDavid van Moolenbroek * may be used to endorse or promote products derived from this software 17*e044bafaSDavid van Moolenbroek * without specific prior written permission. 18*e044bafaSDavid van Moolenbroek * 19*e044bafaSDavid van Moolenbroek * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 20*e044bafaSDavid van Moolenbroek * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 21*e044bafaSDavid van Moolenbroek * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 22*e044bafaSDavid van Moolenbroek * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 23*e044bafaSDavid van Moolenbroek * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 24*e044bafaSDavid van Moolenbroek * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 25*e044bafaSDavid van Moolenbroek * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 26*e044bafaSDavid van Moolenbroek * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 27*e044bafaSDavid van Moolenbroek * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 28*e044bafaSDavid van Moolenbroek * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 29*e044bafaSDavid van Moolenbroek * SUCH DAMAGE. 30*e044bafaSDavid van Moolenbroek * 31*e044bafaSDavid van Moolenbroek * from: @(#)ext.h 8.2 (Berkeley) 12/15/93 32*e044bafaSDavid van Moolenbroek */ 33*e044bafaSDavid van Moolenbroek 34*e044bafaSDavid van Moolenbroek /* 35*e044bafaSDavid van Moolenbroek * Telnet server variable declarations 36*e044bafaSDavid van Moolenbroek */ 37*e044bafaSDavid van Moolenbroek extern char options[256]; 38*e044bafaSDavid van Moolenbroek extern char do_dont_resp[256]; 39*e044bafaSDavid van Moolenbroek extern char will_wont_resp[256]; 40*e044bafaSDavid van Moolenbroek extern int linemode; /* linemode on/off */ 41*e044bafaSDavid van Moolenbroek #ifdef LINEMODE 42*e044bafaSDavid van Moolenbroek extern int uselinemode; /* what linemode to use (on/off) */ 43*e044bafaSDavid van Moolenbroek extern int editmode; /* edit modes in use */ 44*e044bafaSDavid van Moolenbroek extern int useeditmode; /* edit modes to use */ 45*e044bafaSDavid van Moolenbroek extern int alwayslinemode; /* command line option */ 46*e044bafaSDavid van Moolenbroek # ifdef KLUDGELINEMODE 47*e044bafaSDavid van Moolenbroek extern int lmodetype; /* Client support for linemode */ 48*e044bafaSDavid van Moolenbroek # endif /* KLUDGELINEMODE */ 49*e044bafaSDavid van Moolenbroek #endif /* LINEMODE */ 50*e044bafaSDavid van Moolenbroek extern int flowmode; /* current flow control state */ 51*e044bafaSDavid van Moolenbroek extern int restartany; /* restart output on any character state */ 52*e044bafaSDavid van Moolenbroek #ifdef DIAGNOSTICS 53*e044bafaSDavid van Moolenbroek extern int diagnostic; /* telnet diagnostic capabilities */ 54*e044bafaSDavid van Moolenbroek #endif /* DIAGNOSTICS */ 55*e044bafaSDavid van Moolenbroek #ifdef SECURELOGIN 56*e044bafaSDavid van Moolenbroek extern int require_secure_login; 57*e044bafaSDavid van Moolenbroek #endif 58*e044bafaSDavid van Moolenbroek #ifdef AUTHENTICATION 59*e044bafaSDavid van Moolenbroek extern int auth_level; 60*e044bafaSDavid van Moolenbroek #endif 61*e044bafaSDavid van Moolenbroek 62*e044bafaSDavid van Moolenbroek extern slcfun slctab[NSLC + 1]; /* slc mapping table */ 63*e044bafaSDavid van Moolenbroek extern char terminaltype[41]; 64*e044bafaSDavid van Moolenbroek 65*e044bafaSDavid van Moolenbroek /* 66*e044bafaSDavid van Moolenbroek * I/O data buffers, pointers, and counters. 67*e044bafaSDavid van Moolenbroek */ 68*e044bafaSDavid van Moolenbroek extern char ptyobuf[BUFSIZ+NETSLOP], *pfrontp, *pbackp; 69*e044bafaSDavid van Moolenbroek extern char netibuf[BUFSIZ], *netip; 70*e044bafaSDavid van Moolenbroek extern char netobuf[BUFSIZ+NETSLOP], *nfrontp, *nbackp; 71*e044bafaSDavid van Moolenbroek extern char *neturg; /* one past last bye of urgent data */ 72*e044bafaSDavid van Moolenbroek extern int pcc, ncc; 73*e044bafaSDavid van Moolenbroek extern int pty, net; 74*e044bafaSDavid van Moolenbroek extern char *line; 75*e044bafaSDavid van Moolenbroek extern int SYNCHing; /* we are in TELNET SYNCH mode */ 76*e044bafaSDavid van Moolenbroek 77*e044bafaSDavid van Moolenbroek #include <sys/cdefs.h> 78*e044bafaSDavid van Moolenbroek 79*e044bafaSDavid van Moolenbroek extern void 80*e044bafaSDavid van Moolenbroek _termstat(void), 81*e044bafaSDavid van Moolenbroek add_slc(char, char, cc_t), 82*e044bafaSDavid van Moolenbroek check_slc(void), 83*e044bafaSDavid van Moolenbroek change_slc(int, int, cc_t), 84*e044bafaSDavid van Moolenbroek cleanup(int) __dead, 85*e044bafaSDavid van Moolenbroek clientstat(int, int, int), 86*e044bafaSDavid van Moolenbroek copy_termbuf(char *, int), 87*e044bafaSDavid van Moolenbroek deferslc(void), 88*e044bafaSDavid van Moolenbroek defer_terminit(void), 89*e044bafaSDavid van Moolenbroek do_opt_slc(unsigned char *, int), 90*e044bafaSDavid van Moolenbroek doeof(void), 91*e044bafaSDavid van Moolenbroek dooption(int), 92*e044bafaSDavid van Moolenbroek dontoption(int), 93*e044bafaSDavid van Moolenbroek edithost(const char *, const char *), 94*e044bafaSDavid van Moolenbroek fatal(int, const char *) __dead, 95*e044bafaSDavid van Moolenbroek fatalperror(int, const char *) __dead, 96*e044bafaSDavid van Moolenbroek get_slc_defaults(void), 97*e044bafaSDavid van Moolenbroek init_env(void), 98*e044bafaSDavid van Moolenbroek init_termbuf(void), 99*e044bafaSDavid van Moolenbroek interrupt(void), 100*e044bafaSDavid van Moolenbroek localstat(void), 101*e044bafaSDavid van Moolenbroek flowstat(void), 102*e044bafaSDavid van Moolenbroek netclear(void), 103*e044bafaSDavid van Moolenbroek netflush(void), 104*e044bafaSDavid van Moolenbroek #ifdef DIAGNOSTICS 105*e044bafaSDavid van Moolenbroek printoption(const char *, int), 106*e044bafaSDavid van Moolenbroek printdata(const char *, char *, int), 107*e044bafaSDavid van Moolenbroek #ifndef ENCRYPTION 108*e044bafaSDavid van Moolenbroek printsub(int, unsigned char *, int), 109*e044bafaSDavid van Moolenbroek #endif 110*e044bafaSDavid van Moolenbroek #endif 111*e044bafaSDavid van Moolenbroek ptyflush(void), 112*e044bafaSDavid van Moolenbroek putchr(int), 113*e044bafaSDavid van Moolenbroek recv_ayt(void), 114*e044bafaSDavid van Moolenbroek send_do(int, int), 115*e044bafaSDavid van Moolenbroek send_dont(int, int), 116*e044bafaSDavid van Moolenbroek send_slc(void), 117*e044bafaSDavid van Moolenbroek send_status(void), 118*e044bafaSDavid van Moolenbroek send_will(int, int), 119*e044bafaSDavid van Moolenbroek send_wont(int, int), 120*e044bafaSDavid van Moolenbroek sendbrk(void), 121*e044bafaSDavid van Moolenbroek sendsusp(void), 122*e044bafaSDavid van Moolenbroek set_termbuf(void), 123*e044bafaSDavid van Moolenbroek start_login(char *, int, char *) __dead, 124*e044bafaSDavid van Moolenbroek start_slc(int), 125*e044bafaSDavid van Moolenbroek startslave(char *, int, char *), 126*e044bafaSDavid van Moolenbroek suboption(void), 127*e044bafaSDavid van Moolenbroek telrcv(void), 128*e044bafaSDavid van Moolenbroek ttloop(void), 129*e044bafaSDavid van Moolenbroek tty_binaryin(int), 130*e044bafaSDavid van Moolenbroek tty_binaryout(int); 131*e044bafaSDavid van Moolenbroek 132*e044bafaSDavid van Moolenbroek extern char * 133*e044bafaSDavid van Moolenbroek putf(const char *, char *); 134*e044bafaSDavid van Moolenbroek 135*e044bafaSDavid van Moolenbroek extern int 136*e044bafaSDavid van Moolenbroek end_slc(unsigned char **), 137*e044bafaSDavid van Moolenbroek getnpty(void), 138*e044bafaSDavid van Moolenbroek getpty(int *), 139*e044bafaSDavid van Moolenbroek spcset(int, cc_t *, cc_t **), 140*e044bafaSDavid van Moolenbroek stilloob(int), 141*e044bafaSDavid van Moolenbroek terminit(void), 142*e044bafaSDavid van Moolenbroek termstat(void), 143*e044bafaSDavid van Moolenbroek tty_flowmode(void), 144*e044bafaSDavid van Moolenbroek tty_restartany(void), 145*e044bafaSDavid van Moolenbroek tty_isbinaryin(void), 146*e044bafaSDavid van Moolenbroek tty_isbinaryout(void), 147*e044bafaSDavid van Moolenbroek tty_iscrnl(void), 148*e044bafaSDavid van Moolenbroek tty_isecho(void), 149*e044bafaSDavid van Moolenbroek tty_isediting(void), 150*e044bafaSDavid van Moolenbroek tty_islitecho(void), 151*e044bafaSDavid van Moolenbroek tty_isnewmap(void), 152*e044bafaSDavid van Moolenbroek tty_israw(void), 153*e044bafaSDavid van Moolenbroek tty_issofttab(void), 154*e044bafaSDavid van Moolenbroek tty_istrapsig(void), 155*e044bafaSDavid van Moolenbroek tty_linemode(void); 156*e044bafaSDavid van Moolenbroek 157*e044bafaSDavid van Moolenbroek extern void 158*e044bafaSDavid van Moolenbroek tty_rspeed(int), 159*e044bafaSDavid van Moolenbroek tty_setecho(int), 160*e044bafaSDavid van Moolenbroek tty_setedit(int), 161*e044bafaSDavid van Moolenbroek tty_setlinemode(int), 162*e044bafaSDavid van Moolenbroek tty_setlitecho(int), 163*e044bafaSDavid van Moolenbroek tty_setsig(int), 164*e044bafaSDavid van Moolenbroek tty_setsofttab(int), 165*e044bafaSDavid van Moolenbroek tty_tspeed(int), 166*e044bafaSDavid van Moolenbroek willoption(int), 167*e044bafaSDavid van Moolenbroek wontoption(int), 168*e044bafaSDavid van Moolenbroek writenet(unsigned char *, int); 169*e044bafaSDavid van Moolenbroek 170*e044bafaSDavid van Moolenbroek extern int output_data(const char *, ...) 171*e044bafaSDavid van Moolenbroek __attribute__((__format__(__printf__, 1, 2))); 172*e044bafaSDavid van Moolenbroek extern int output_datalen(const char *, size_t); 173*e044bafaSDavid van Moolenbroek 174*e044bafaSDavid van Moolenbroek #ifdef ENCRYPTION 175*e044bafaSDavid van Moolenbroek extern char *nclearto; 176*e044bafaSDavid van Moolenbroek #endif /* ENCRYPTION */ 177*e044bafaSDavid van Moolenbroek 178*e044bafaSDavid van Moolenbroek /* 179*e044bafaSDavid van Moolenbroek * The following are some clocks used to decide how to interpret 180*e044bafaSDavid van Moolenbroek * the relationship between various variables. 181*e044bafaSDavid van Moolenbroek */ 182*e044bafaSDavid van Moolenbroek extern struct { 183*e044bafaSDavid van Moolenbroek int 184*e044bafaSDavid van Moolenbroek system, /* what the current time is */ 185*e044bafaSDavid van Moolenbroek echotoggle, /* last time user entered echo character */ 186*e044bafaSDavid van Moolenbroek modenegotiated, /* last time operating mode negotiated */ 187*e044bafaSDavid van Moolenbroek didnetreceive, /* last time we read data from network */ 188*e044bafaSDavid van Moolenbroek ttypesubopt, /* ttype subopt is received */ 189*e044bafaSDavid van Moolenbroek tspeedsubopt, /* tspeed subopt is received */ 190*e044bafaSDavid van Moolenbroek environsubopt, /* environ subopt is received */ 191*e044bafaSDavid van Moolenbroek oenvironsubopt, /* old environ subopt is received */ 192*e044bafaSDavid van Moolenbroek xdisplocsubopt, /* xdisploc subopt is received */ 193*e044bafaSDavid van Moolenbroek baseline, /* time started to do timed action */ 194*e044bafaSDavid van Moolenbroek gotDM; /* when did we last see a data mark */ 195*e044bafaSDavid van Moolenbroek } clocks; 196*e044bafaSDavid van Moolenbroek 197*e044bafaSDavid van Moolenbroek #ifndef DEFAULT_IM 198*e044bafaSDavid van Moolenbroek # define DEFAULT_IM "\r\n\r\n4.4 BSD UNIX (%h) (%t)\r\n\r\r\n\r" 199*e044bafaSDavid van Moolenbroek #endif 200*e044bafaSDavid van Moolenbroek 201*e044bafaSDavid van Moolenbroek #ifdef AUTHENTICATION 202*e044bafaSDavid van Moolenbroek #include <libtelnet/auth.h> 203*e044bafaSDavid van Moolenbroek #endif 204*e044bafaSDavid van Moolenbroek 205*e044bafaSDavid van Moolenbroek #ifdef ENCRYPTION 206*e044bafaSDavid van Moolenbroek #include <libtelnet/encrypt.h> 207*e044bafaSDavid van Moolenbroek #endif 208