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 * @(#)ext.h 8.2 (Berkeley) 12/15/93 34 */ 35 36 /* $Id$ */ 37 38 #ifndef __EXT_H__ 39 #define __EXT_H__ 40 41 /* 42 * Telnet server variable declarations 43 */ 44 extern char options[256]; 45 extern char do_dont_resp[256]; 46 extern char will_wont_resp[256]; 47 extern int flowmode; /* current flow control state */ 48 extern int restartany; /* restart output on any character state */ 49 #ifdef DIAGNOSTICS 50 extern int diagnostic; /* telnet diagnostic capabilities */ 51 #endif /* DIAGNOSTICS */ 52 extern int require_otp; 53 #ifdef AUTHENTICATION 54 extern int auth_level; 55 #endif 56 extern const char *new_login; 57 58 extern slcfun slctab[NSLC + 1]; /* slc mapping table */ 59 60 extern char terminaltype[41]; 61 62 /* 63 * I/O data buffers, pointers, and counters. 64 */ 65 extern char ptyobuf[BUFSIZ+NETSLOP], *pfrontp, *pbackp; 66 67 extern char netibuf[BUFSIZ], *netip; 68 69 extern char netobuf[BUFSIZ+NETSLOP], *nfrontp, *nbackp; 70 extern char *neturg; /* one past last bye of urgent data */ 71 72 extern int pcc, ncc; 73 74 extern int ourpty, net; 75 extern char *line; 76 extern int SYNCHing; /* we are in TELNET SYNCH mode */ 77 78 int telnet_net_write (unsigned char *str, int len); 79 void net_encrypt (void); 80 int telnet_spin (void); 81 char *telnet_getenv (const char *val); 82 char *telnet_gets (char *prompt, char *result, int length, int echo); 83 void get_slc_defaults (void); 84 void telrcv (void); 85 void send_do (int option, int init); 86 void willoption (int option); 87 void send_dont (int option, int init); 88 void wontoption (int option); 89 void send_will (int option, int init); 90 void dooption (int option); 91 void send_wont (int option, int init); 92 void dontoption (int option); 93 void suboption (void); 94 void doclientstat (void); 95 void send_status (void); 96 void init_termbuf (void); 97 void set_termbuf (void); 98 int spcset (int func, cc_t *valp, cc_t **valpp); 99 void set_utid (void); 100 int getpty (int *ptynum); 101 int tty_isecho (void); 102 int tty_flowmode (void); 103 int tty_restartany (void); 104 void tty_setecho (int on); 105 int tty_israw (void); 106 void tty_binaryin (int on); 107 void tty_binaryout (int on); 108 int tty_isbinaryin (void); 109 int tty_isbinaryout (void); 110 int tty_issofttab (void); 111 void tty_setsofttab (int on); 112 int tty_islitecho (void); 113 void tty_setlitecho (int on); 114 int tty_iscrnl (void); 115 void tty_tspeed (int val); 116 void tty_rspeed (int val); 117 void getptyslave (void); 118 int cleanopen (char *); 119 void startslave (const char *host, const char *, int autologin, char *autoname); 120 void init_env (void); 121 void start_login (const char *host, int autologin, char *name); 122 void cleanup (int sig); 123 int main (int argc, char **argv); 124 int getterminaltype (char *name, size_t); 125 void _gettermname (void); 126 int terminaltypeok (char *s); 127 void my_telnet (int f, int p, const char*, const char *, int, char*); 128 void interrupt (void); 129 void sendbrk (void); 130 void sendsusp (void); 131 void recv_ayt (void); 132 void doeof (void); 133 void flowstat (void); 134 void clientstat (int code, int parm1, int parm2); 135 int ttloop (void); 136 int stilloob (int s); 137 void ptyflush (void); 138 char *nextitem (char *current); 139 void netclear (void); 140 void netflush (void); 141 void writenet (const void *, size_t); 142 void fatal (int f, char *msg); 143 void fatalperror (int f, const char *msg); 144 void fatalperror_errno (int f, const char *msg, int error); 145 void edithost (char *pat, char *host); 146 void putstr (char *s); 147 void putchr (int cc); 148 void putf (char *cp, char *where); 149 void printoption (char *fmt, int option); 150 void printsub (int direction, unsigned char *pointer, size_t length); 151 void printdata (char *tag, char *ptr, size_t cnt); 152 int login_tty(int t); 153 154 #ifdef ENCRYPTION 155 extern void (*encrypt_output) (unsigned char *, int); 156 extern int (*decrypt_input) (int); 157 extern char *nclearto; 158 #endif 159 160 161 /* 162 * The following are some clocks used to decide how to interpret 163 * the relationship between various variables. 164 */ 165 166 struct clocks_t{ 167 int 168 system, /* what the current time is */ 169 echotoggle, /* last time user entered echo character */ 170 modenegotiated, /* last time operating mode negotiated */ 171 didnetreceive, /* last time we read data from network */ 172 ttypesubopt, /* ttype subopt is received */ 173 tspeedsubopt, /* tspeed subopt is received */ 174 environsubopt, /* environ subopt is received */ 175 oenvironsubopt, /* old environ subopt is received */ 176 xdisplocsubopt, /* xdisploc subopt is received */ 177 baseline, /* time started to do timed action */ 178 gotDM; /* when did we last see a data mark */ 179 }; 180 extern struct clocks_t clocks; 181 182 extern int log_unauth; 183 extern int no_warn; 184 185 extern int def_tspeed, def_rspeed; 186 #ifdef TIOCSWINSZ 187 extern int def_row, def_col; 188 #endif 189 190 #ifdef STREAMSPTY 191 extern int really_stream; 192 #endif 193 194 #ifndef USE_IM 195 # ifdef CRAY 196 # define USE_IM "Cray UNICOS (%h) (%t)" 197 # endif 198 # ifdef _AIX 199 # define USE_IM "%s %v.%r (%h) (%t)" 200 # endif 201 # ifndef USE_IM 202 # define USE_IM "%s %r (%h) (%t)" 203 # endif 204 #endif 205 206 #define DEFAULT_IM "\r\n\r\n" USE_IM "\r\n\r\n\r\n" 207 208 #endif /* __EXT_H__ */ 209