1*53ee8cc1Swenshuai.xi /* 2*53ee8cc1Swenshuai.xi * Copyright (c) 1983, 1993 3*53ee8cc1Swenshuai.xi * The Regents of the University of California. All rights reserved. 4*53ee8cc1Swenshuai.xi * 5*53ee8cc1Swenshuai.xi * Redistribution and use in source and binary forms, with or without 6*53ee8cc1Swenshuai.xi * modification, are permitted provided that the following conditions 7*53ee8cc1Swenshuai.xi * are met: 8*53ee8cc1Swenshuai.xi * 1. Redistributions of source code must retain the above copyright 9*53ee8cc1Swenshuai.xi * notice, this list of conditions and the following disclaimer. 10*53ee8cc1Swenshuai.xi * 2. Redistributions in binary form must reproduce the above copyright 11*53ee8cc1Swenshuai.xi * notice, this list of conditions and the following disclaimer in the 12*53ee8cc1Swenshuai.xi * documentation and/or other materials provided with the distribution. 13*53ee8cc1Swenshuai.xi * 4. Neither the name of the University nor the names of its contributors 14*53ee8cc1Swenshuai.xi * may be used to endorse or promote products derived from this software 15*53ee8cc1Swenshuai.xi * without specific prior written permission. 16*53ee8cc1Swenshuai.xi * 17*53ee8cc1Swenshuai.xi * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 18*53ee8cc1Swenshuai.xi * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19*53ee8cc1Swenshuai.xi * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20*53ee8cc1Swenshuai.xi * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 21*53ee8cc1Swenshuai.xi * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 22*53ee8cc1Swenshuai.xi * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 23*53ee8cc1Swenshuai.xi * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 24*53ee8cc1Swenshuai.xi * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 25*53ee8cc1Swenshuai.xi * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 26*53ee8cc1Swenshuai.xi * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 27*53ee8cc1Swenshuai.xi * SUCH DAMAGE. 28*53ee8cc1Swenshuai.xi * 29*53ee8cc1Swenshuai.xi * @(#)telnet.h 8.2 (Berkeley) 12/15/93 30*53ee8cc1Swenshuai.xi */ 31*53ee8cc1Swenshuai.xi 32*53ee8cc1Swenshuai.xi #ifndef _ARPA_TELNET_H 33*53ee8cc1Swenshuai.xi #define _ARPA_TELNET_H 1 34*53ee8cc1Swenshuai.xi 35*53ee8cc1Swenshuai.xi /* 36*53ee8cc1Swenshuai.xi * Definitions for the TELNET protocol. 37*53ee8cc1Swenshuai.xi */ 38*53ee8cc1Swenshuai.xi #define IAC 255 /* interpret as command: */ 39*53ee8cc1Swenshuai.xi #define DONT 254 /* you are not to use option */ 40*53ee8cc1Swenshuai.xi #define DO 253 /* please, you use option */ 41*53ee8cc1Swenshuai.xi #define WONT 252 /* I won't use option */ 42*53ee8cc1Swenshuai.xi #define WILL 251 /* I will use option */ 43*53ee8cc1Swenshuai.xi #define SB 250 /* interpret as subnegotiation */ 44*53ee8cc1Swenshuai.xi #define GA 249 /* you may reverse the line */ 45*53ee8cc1Swenshuai.xi #define EL 248 /* erase the current line */ 46*53ee8cc1Swenshuai.xi #define EC 247 /* erase the current character */ 47*53ee8cc1Swenshuai.xi #define AYT 246 /* are you there */ 48*53ee8cc1Swenshuai.xi #define AO 245 /* abort output--but let prog finish */ 49*53ee8cc1Swenshuai.xi #define IP 244 /* interrupt process--permanently */ 50*53ee8cc1Swenshuai.xi #define BREAK 243 /* break */ 51*53ee8cc1Swenshuai.xi #define DM 242 /* data mark--for connect. cleaning */ 52*53ee8cc1Swenshuai.xi #define NOP 241 /* nop */ 53*53ee8cc1Swenshuai.xi #define SE 240 /* end sub negotiation */ 54*53ee8cc1Swenshuai.xi #define EOR 239 /* end of record (transparent mode) */ 55*53ee8cc1Swenshuai.xi #define ABORT 238 /* Abort process */ 56*53ee8cc1Swenshuai.xi #define SUSP 237 /* Suspend process */ 57*53ee8cc1Swenshuai.xi #define xEOF 236 /* End of file: EOF is already used... */ 58*53ee8cc1Swenshuai.xi 59*53ee8cc1Swenshuai.xi #define SYNCH 242 /* for telfunc calls */ 60*53ee8cc1Swenshuai.xi 61*53ee8cc1Swenshuai.xi #ifdef TELCMDS 62*53ee8cc1Swenshuai.xi char *telcmds[] = { 63*53ee8cc1Swenshuai.xi "EOF", "SUSP", "ABORT", "EOR", 64*53ee8cc1Swenshuai.xi "SE", "NOP", "DMARK", "BRK", "IP", "AO", "AYT", "EC", 65*53ee8cc1Swenshuai.xi "EL", "GA", "SB", "WILL", "WONT", "DO", "DONT", "IAC", 0, 66*53ee8cc1Swenshuai.xi }; 67*53ee8cc1Swenshuai.xi #else 68*53ee8cc1Swenshuai.xi extern char *telcmds[]; 69*53ee8cc1Swenshuai.xi #endif 70*53ee8cc1Swenshuai.xi 71*53ee8cc1Swenshuai.xi #define TELCMD_FIRST xEOF 72*53ee8cc1Swenshuai.xi #define TELCMD_LAST IAC 73*53ee8cc1Swenshuai.xi #define TELCMD_OK(x) ((unsigned int)(x) <= TELCMD_LAST && \ 74*53ee8cc1Swenshuai.xi (unsigned int)(x) >= TELCMD_FIRST) 75*53ee8cc1Swenshuai.xi #define TELCMD(x) telcmds[(x)-TELCMD_FIRST] 76*53ee8cc1Swenshuai.xi 77*53ee8cc1Swenshuai.xi /* telnet options */ 78*53ee8cc1Swenshuai.xi #define TELOPT_BINARY 0 /* 8-bit data path */ 79*53ee8cc1Swenshuai.xi #define TELOPT_ECHO 1 /* echo */ 80*53ee8cc1Swenshuai.xi #define TELOPT_RCP 2 /* prepare to reconnect */ 81*53ee8cc1Swenshuai.xi #define TELOPT_SGA 3 /* suppress go ahead */ 82*53ee8cc1Swenshuai.xi #define TELOPT_NAMS 4 /* approximate message size */ 83*53ee8cc1Swenshuai.xi #define TELOPT_STATUS 5 /* give status */ 84*53ee8cc1Swenshuai.xi #define TELOPT_TM 6 /* timing mark */ 85*53ee8cc1Swenshuai.xi #define TELOPT_RCTE 7 /* remote controlled transmission and echo */ 86*53ee8cc1Swenshuai.xi #define TELOPT_NAOL 8 /* negotiate about output line width */ 87*53ee8cc1Swenshuai.xi #define TELOPT_NAOP 9 /* negotiate about output page size */ 88*53ee8cc1Swenshuai.xi #define TELOPT_NAOCRD 10 /* negotiate about CR disposition */ 89*53ee8cc1Swenshuai.xi #define TELOPT_NAOHTS 11 /* negotiate about horizontal tabstops */ 90*53ee8cc1Swenshuai.xi #define TELOPT_NAOHTD 12 /* negotiate about horizontal tab disposition */ 91*53ee8cc1Swenshuai.xi #define TELOPT_NAOFFD 13 /* negotiate about formfeed disposition */ 92*53ee8cc1Swenshuai.xi #define TELOPT_NAOVTS 14 /* negotiate about vertical tab stops */ 93*53ee8cc1Swenshuai.xi #define TELOPT_NAOVTD 15 /* negotiate about vertical tab disposition */ 94*53ee8cc1Swenshuai.xi #define TELOPT_NAOLFD 16 /* negotiate about output LF disposition */ 95*53ee8cc1Swenshuai.xi #define TELOPT_XASCII 17 /* extended ascii character set */ 96*53ee8cc1Swenshuai.xi #define TELOPT_LOGOUT 18 /* force logout */ 97*53ee8cc1Swenshuai.xi #define TELOPT_BM 19 /* byte macro */ 98*53ee8cc1Swenshuai.xi #define TELOPT_DET 20 /* data entry terminal */ 99*53ee8cc1Swenshuai.xi #define TELOPT_SUPDUP 21 /* supdup protocol */ 100*53ee8cc1Swenshuai.xi #define TELOPT_SUPDUPOUTPUT 22 /* supdup output */ 101*53ee8cc1Swenshuai.xi #define TELOPT_SNDLOC 23 /* send location */ 102*53ee8cc1Swenshuai.xi #define TELOPT_TTYPE 24 /* terminal type */ 103*53ee8cc1Swenshuai.xi #define TELOPT_EOR 25 /* end or record */ 104*53ee8cc1Swenshuai.xi #define TELOPT_TUID 26 /* TACACS user identification */ 105*53ee8cc1Swenshuai.xi #define TELOPT_OUTMRK 27 /* output marking */ 106*53ee8cc1Swenshuai.xi #define TELOPT_TTYLOC 28 /* terminal location number */ 107*53ee8cc1Swenshuai.xi #define TELOPT_3270REGIME 29 /* 3270 regime */ 108*53ee8cc1Swenshuai.xi #define TELOPT_X3PAD 30 /* X.3 PAD */ 109*53ee8cc1Swenshuai.xi #define TELOPT_NAWS 31 /* window size */ 110*53ee8cc1Swenshuai.xi #define TELOPT_TSPEED 32 /* terminal speed */ 111*53ee8cc1Swenshuai.xi #define TELOPT_LFLOW 33 /* remote flow control */ 112*53ee8cc1Swenshuai.xi #define TELOPT_LINEMODE 34 /* Linemode option */ 113*53ee8cc1Swenshuai.xi #define TELOPT_XDISPLOC 35 /* X Display Location */ 114*53ee8cc1Swenshuai.xi #define TELOPT_OLD_ENVIRON 36 /* Old - Environment variables */ 115*53ee8cc1Swenshuai.xi #define TELOPT_AUTHENTICATION 37/* Authenticate */ 116*53ee8cc1Swenshuai.xi #define TELOPT_ENCRYPT 38 /* Encryption option */ 117*53ee8cc1Swenshuai.xi #define TELOPT_NEW_ENVIRON 39 /* New - Environment variables */ 118*53ee8cc1Swenshuai.xi #define TELOPT_EXOPL 255 /* extended-options-list */ 119*53ee8cc1Swenshuai.xi 120*53ee8cc1Swenshuai.xi 121*53ee8cc1Swenshuai.xi #define NTELOPTS (1+TELOPT_NEW_ENVIRON) 122*53ee8cc1Swenshuai.xi #ifdef TELOPTS 123*53ee8cc1Swenshuai.xi char *telopts[NTELOPTS+1] = { 124*53ee8cc1Swenshuai.xi "BINARY", "ECHO", "RCP", "SUPPRESS GO AHEAD", "NAME", 125*53ee8cc1Swenshuai.xi "STATUS", "TIMING MARK", "RCTE", "NAOL", "NAOP", 126*53ee8cc1Swenshuai.xi "NAOCRD", "NAOHTS", "NAOHTD", "NAOFFD", "NAOVTS", 127*53ee8cc1Swenshuai.xi "NAOVTD", "NAOLFD", "EXTEND ASCII", "LOGOUT", "BYTE MACRO", 128*53ee8cc1Swenshuai.xi "DATA ENTRY TERMINAL", "SUPDUP", "SUPDUP OUTPUT", 129*53ee8cc1Swenshuai.xi "SEND LOCATION", "TERMINAL TYPE", "END OF RECORD", 130*53ee8cc1Swenshuai.xi "TACACS UID", "OUTPUT MARKING", "TTYLOC", 131*53ee8cc1Swenshuai.xi "3270 REGIME", "X.3 PAD", "NAWS", "TSPEED", "LFLOW", 132*53ee8cc1Swenshuai.xi "LINEMODE", "XDISPLOC", "OLD-ENVIRON", "AUTHENTICATION", 133*53ee8cc1Swenshuai.xi "ENCRYPT", "NEW-ENVIRON", 134*53ee8cc1Swenshuai.xi 0, 135*53ee8cc1Swenshuai.xi }; 136*53ee8cc1Swenshuai.xi #define TELOPT_FIRST TELOPT_BINARY 137*53ee8cc1Swenshuai.xi #define TELOPT_LAST TELOPT_NEW_ENVIRON 138*53ee8cc1Swenshuai.xi #define TELOPT_OK(x) ((unsigned int)(x) <= TELOPT_LAST) 139*53ee8cc1Swenshuai.xi #define TELOPT(x) telopts[(x)-TELOPT_FIRST] 140*53ee8cc1Swenshuai.xi #endif 141*53ee8cc1Swenshuai.xi 142*53ee8cc1Swenshuai.xi /* sub-option qualifiers */ 143*53ee8cc1Swenshuai.xi #define TELQUAL_IS 0 /* option is... */ 144*53ee8cc1Swenshuai.xi #define TELQUAL_SEND 1 /* send option */ 145*53ee8cc1Swenshuai.xi #define TELQUAL_INFO 2 /* ENVIRON: informational version of IS */ 146*53ee8cc1Swenshuai.xi #define TELQUAL_REPLY 2 /* AUTHENTICATION: client version of IS */ 147*53ee8cc1Swenshuai.xi #define TELQUAL_NAME 3 /* AUTHENTICATION: client version of IS */ 148*53ee8cc1Swenshuai.xi 149*53ee8cc1Swenshuai.xi #define LFLOW_OFF 0 /* Disable remote flow control */ 150*53ee8cc1Swenshuai.xi #define LFLOW_ON 1 /* Enable remote flow control */ 151*53ee8cc1Swenshuai.xi #define LFLOW_RESTART_ANY 2 /* Restart output on any char */ 152*53ee8cc1Swenshuai.xi #define LFLOW_RESTART_XON 3 /* Restart output only on XON */ 153*53ee8cc1Swenshuai.xi 154*53ee8cc1Swenshuai.xi /* 155*53ee8cc1Swenshuai.xi * LINEMODE suboptions 156*53ee8cc1Swenshuai.xi */ 157*53ee8cc1Swenshuai.xi 158*53ee8cc1Swenshuai.xi #define LM_MODE 1 159*53ee8cc1Swenshuai.xi #define LM_FORWARDMASK 2 160*53ee8cc1Swenshuai.xi #define LM_SLC 3 161*53ee8cc1Swenshuai.xi 162*53ee8cc1Swenshuai.xi #define MODE_EDIT 0x01 163*53ee8cc1Swenshuai.xi #define MODE_TRAPSIG 0x02 164*53ee8cc1Swenshuai.xi #define MODE_ACK 0x04 165*53ee8cc1Swenshuai.xi #define MODE_SOFT_TAB 0x08 166*53ee8cc1Swenshuai.xi #define MODE_LIT_ECHO 0x10 167*53ee8cc1Swenshuai.xi 168*53ee8cc1Swenshuai.xi #define MODE_MASK 0x1f 169*53ee8cc1Swenshuai.xi 170*53ee8cc1Swenshuai.xi /* Not part of protocol, but needed to simplify things... */ 171*53ee8cc1Swenshuai.xi #define MODE_FLOW 0x0100 172*53ee8cc1Swenshuai.xi #define MODE_ECHO 0x0200 173*53ee8cc1Swenshuai.xi #define MODE_INBIN 0x0400 174*53ee8cc1Swenshuai.xi #define MODE_OUTBIN 0x0800 175*53ee8cc1Swenshuai.xi #define MODE_FORCE 0x1000 176*53ee8cc1Swenshuai.xi 177*53ee8cc1Swenshuai.xi #define SLC_SYNCH 1 178*53ee8cc1Swenshuai.xi #define SLC_BRK 2 179*53ee8cc1Swenshuai.xi #define SLC_IP 3 180*53ee8cc1Swenshuai.xi #define SLC_AO 4 181*53ee8cc1Swenshuai.xi #define SLC_AYT 5 182*53ee8cc1Swenshuai.xi #define SLC_EOR 6 183*53ee8cc1Swenshuai.xi #define SLC_ABORT 7 184*53ee8cc1Swenshuai.xi #define SLC_EOF 8 185*53ee8cc1Swenshuai.xi #define SLC_SUSP 9 186*53ee8cc1Swenshuai.xi #define SLC_EC 10 187*53ee8cc1Swenshuai.xi #define SLC_EL 11 188*53ee8cc1Swenshuai.xi #define SLC_EW 12 189*53ee8cc1Swenshuai.xi #define SLC_RP 13 190*53ee8cc1Swenshuai.xi #define SLC_LNEXT 14 191*53ee8cc1Swenshuai.xi #define SLC_XON 15 192*53ee8cc1Swenshuai.xi #define SLC_XOFF 16 193*53ee8cc1Swenshuai.xi #define SLC_FORW1 17 194*53ee8cc1Swenshuai.xi #define SLC_FORW2 18 195*53ee8cc1Swenshuai.xi 196*53ee8cc1Swenshuai.xi #define NSLC 18 197*53ee8cc1Swenshuai.xi 198*53ee8cc1Swenshuai.xi /* 199*53ee8cc1Swenshuai.xi * For backwards compatibility, we define SLC_NAMES to be the 200*53ee8cc1Swenshuai.xi * list of names if SLC_NAMES is not defined. 201*53ee8cc1Swenshuai.xi */ 202*53ee8cc1Swenshuai.xi #define SLC_NAMELIST "0", "SYNCH", "BRK", "IP", "AO", "AYT", "EOR", \ 203*53ee8cc1Swenshuai.xi "ABORT", "EOF", "SUSP", "EC", "EL", "EW", "RP", \ 204*53ee8cc1Swenshuai.xi "LNEXT", "XON", "XOFF", "FORW1", "FORW2", 0, 205*53ee8cc1Swenshuai.xi #ifdef SLC_NAMES 206*53ee8cc1Swenshuai.xi char *slc_names[] = { 207*53ee8cc1Swenshuai.xi SLC_NAMELIST 208*53ee8cc1Swenshuai.xi }; 209*53ee8cc1Swenshuai.xi #else 210*53ee8cc1Swenshuai.xi extern char *slc_names[]; 211*53ee8cc1Swenshuai.xi #define SLC_NAMES SLC_NAMELIST 212*53ee8cc1Swenshuai.xi #endif 213*53ee8cc1Swenshuai.xi 214*53ee8cc1Swenshuai.xi #define SLC_NAME_OK(x) ((unsigned int)(x) <= NSLC) 215*53ee8cc1Swenshuai.xi #define SLC_NAME(x) slc_names[x] 216*53ee8cc1Swenshuai.xi 217*53ee8cc1Swenshuai.xi #define SLC_NOSUPPORT 0 218*53ee8cc1Swenshuai.xi #define SLC_CANTCHANGE 1 219*53ee8cc1Swenshuai.xi #define SLC_VARIABLE 2 220*53ee8cc1Swenshuai.xi #define SLC_DEFAULT 3 221*53ee8cc1Swenshuai.xi #define SLC_LEVELBITS 0x03 222*53ee8cc1Swenshuai.xi 223*53ee8cc1Swenshuai.xi #define SLC_FUNC 0 224*53ee8cc1Swenshuai.xi #define SLC_FLAGS 1 225*53ee8cc1Swenshuai.xi #define SLC_VALUE 2 226*53ee8cc1Swenshuai.xi 227*53ee8cc1Swenshuai.xi #define SLC_ACK 0x80 228*53ee8cc1Swenshuai.xi #define SLC_FLUSHIN 0x40 229*53ee8cc1Swenshuai.xi #define SLC_FLUSHOUT 0x20 230*53ee8cc1Swenshuai.xi 231*53ee8cc1Swenshuai.xi #define OLD_ENV_VAR 1 232*53ee8cc1Swenshuai.xi #define OLD_ENV_VALUE 0 233*53ee8cc1Swenshuai.xi #define NEW_ENV_VAR 0 234*53ee8cc1Swenshuai.xi #define NEW_ENV_VALUE 1 235*53ee8cc1Swenshuai.xi #define ENV_ESC 2 236*53ee8cc1Swenshuai.xi #define ENV_USERVAR 3 237*53ee8cc1Swenshuai.xi 238*53ee8cc1Swenshuai.xi /* 239*53ee8cc1Swenshuai.xi * AUTHENTICATION suboptions 240*53ee8cc1Swenshuai.xi */ 241*53ee8cc1Swenshuai.xi 242*53ee8cc1Swenshuai.xi /* 243*53ee8cc1Swenshuai.xi * Who is authenticating who ... 244*53ee8cc1Swenshuai.xi */ 245*53ee8cc1Swenshuai.xi #define AUTH_WHO_CLIENT 0 /* Client authenticating server */ 246*53ee8cc1Swenshuai.xi #define AUTH_WHO_SERVER 1 /* Server authenticating client */ 247*53ee8cc1Swenshuai.xi #define AUTH_WHO_MASK 1 248*53ee8cc1Swenshuai.xi 249*53ee8cc1Swenshuai.xi /* 250*53ee8cc1Swenshuai.xi * amount of authentication done 251*53ee8cc1Swenshuai.xi */ 252*53ee8cc1Swenshuai.xi #define AUTH_HOW_ONE_WAY 0 253*53ee8cc1Swenshuai.xi #define AUTH_HOW_MUTUAL 2 254*53ee8cc1Swenshuai.xi #define AUTH_HOW_MASK 2 255*53ee8cc1Swenshuai.xi 256*53ee8cc1Swenshuai.xi #define AUTHTYPE_NULL 0 257*53ee8cc1Swenshuai.xi #define AUTHTYPE_KERBEROS_V4 1 258*53ee8cc1Swenshuai.xi #define AUTHTYPE_KERBEROS_V5 2 259*53ee8cc1Swenshuai.xi #define AUTHTYPE_SPX 3 260*53ee8cc1Swenshuai.xi #define AUTHTYPE_MINK 4 261*53ee8cc1Swenshuai.xi #define AUTHTYPE_CNT 5 262*53ee8cc1Swenshuai.xi 263*53ee8cc1Swenshuai.xi #define AUTHTYPE_TEST 99 264*53ee8cc1Swenshuai.xi 265*53ee8cc1Swenshuai.xi #ifdef AUTH_NAMES 266*53ee8cc1Swenshuai.xi char *authtype_names[] = { 267*53ee8cc1Swenshuai.xi "NULL", "KERBEROS_V4", "KERBEROS_V5", "SPX", "MINK", 0, 268*53ee8cc1Swenshuai.xi }; 269*53ee8cc1Swenshuai.xi #else 270*53ee8cc1Swenshuai.xi extern char *authtype_names[]; 271*53ee8cc1Swenshuai.xi #endif 272*53ee8cc1Swenshuai.xi 273*53ee8cc1Swenshuai.xi #define AUTHTYPE_NAME_OK(x) ((unsigned int)(x) < AUTHTYPE_CNT) 274*53ee8cc1Swenshuai.xi #define AUTHTYPE_NAME(x) authtype_names[x] 275*53ee8cc1Swenshuai.xi 276*53ee8cc1Swenshuai.xi /* 277*53ee8cc1Swenshuai.xi * ENCRYPTion suboptions 278*53ee8cc1Swenshuai.xi */ 279*53ee8cc1Swenshuai.xi #define ENCRYPT_IS 0 /* I pick encryption type ... */ 280*53ee8cc1Swenshuai.xi #define ENCRYPT_SUPPORT 1 /* I support encryption types ... */ 281*53ee8cc1Swenshuai.xi #define ENCRYPT_REPLY 2 /* Initial setup response */ 282*53ee8cc1Swenshuai.xi #define ENCRYPT_START 3 /* Am starting to send encrypted */ 283*53ee8cc1Swenshuai.xi #define ENCRYPT_END 4 /* Am ending encrypted */ 284*53ee8cc1Swenshuai.xi #define ENCRYPT_REQSTART 5 /* Request you start encrypting */ 285*53ee8cc1Swenshuai.xi #define ENCRYPT_REQEND 6 /* Request you send encrypting */ 286*53ee8cc1Swenshuai.xi #define ENCRYPT_ENC_KEYID 7 287*53ee8cc1Swenshuai.xi #define ENCRYPT_DEC_KEYID 8 288*53ee8cc1Swenshuai.xi #define ENCRYPT_CNT 9 289*53ee8cc1Swenshuai.xi 290*53ee8cc1Swenshuai.xi #define ENCTYPE_ANY 0 291*53ee8cc1Swenshuai.xi #define ENCTYPE_DES_CFB64 1 292*53ee8cc1Swenshuai.xi #define ENCTYPE_DES_OFB64 2 293*53ee8cc1Swenshuai.xi #define ENCTYPE_CNT 3 294*53ee8cc1Swenshuai.xi 295*53ee8cc1Swenshuai.xi #ifdef ENCRYPT_NAMES 296*53ee8cc1Swenshuai.xi char *encrypt_names[] = { 297*53ee8cc1Swenshuai.xi "IS", "SUPPORT", "REPLY", "START", "END", 298*53ee8cc1Swenshuai.xi "REQUEST-START", "REQUEST-END", "ENC-KEYID", "DEC-KEYID", 299*53ee8cc1Swenshuai.xi 0, 300*53ee8cc1Swenshuai.xi }; 301*53ee8cc1Swenshuai.xi char *enctype_names[] = { 302*53ee8cc1Swenshuai.xi "ANY", "DES_CFB64", "DES_OFB64", 0, 303*53ee8cc1Swenshuai.xi }; 304*53ee8cc1Swenshuai.xi #else 305*53ee8cc1Swenshuai.xi extern char *encrypt_names[]; 306*53ee8cc1Swenshuai.xi extern char *enctype_names[]; 307*53ee8cc1Swenshuai.xi #endif 308*53ee8cc1Swenshuai.xi 309*53ee8cc1Swenshuai.xi 310*53ee8cc1Swenshuai.xi #define ENCRYPT_NAME_OK(x) ((unsigned int)(x) < ENCRYPT_CNT) 311*53ee8cc1Swenshuai.xi #define ENCRYPT_NAME(x) encrypt_names[x] 312*53ee8cc1Swenshuai.xi 313*53ee8cc1Swenshuai.xi #define ENCTYPE_NAME_OK(x) ((unsigned int)(x) < ENCTYPE_CNT) 314*53ee8cc1Swenshuai.xi #define ENCTYPE_NAME(x) enctype_names[x] 315*53ee8cc1Swenshuai.xi 316*53ee8cc1Swenshuai.xi #endif /* arpa/telnet.h */ 317