xref: /freebsd/contrib/telnet/arpa/telnet.h (revision 83129c0b650734f4ca6c6f9c214aa3110d2f129d)
181cb6ddcSMark Murray /*
281cb6ddcSMark Murray  * Copyright (c) 1983, 1993
381cb6ddcSMark Murray  *	The Regents of the University of California.  All rights reserved.
481cb6ddcSMark Murray  *
581cb6ddcSMark Murray  * Redistribution and use in source and binary forms, with or without
681cb6ddcSMark Murray  * modification, are permitted provided that the following conditions
781cb6ddcSMark Murray  * are met:
881cb6ddcSMark Murray  * 1. Redistributions of source code must retain the above copyright
981cb6ddcSMark Murray  *    notice, this list of conditions and the following disclaimer.
1081cb6ddcSMark Murray  * 2. Redistributions in binary form must reproduce the above copyright
1181cb6ddcSMark Murray  *    notice, this list of conditions and the following disclaimer in the
1281cb6ddcSMark Murray  *    documentation and/or other materials provided with the distribution.
13*83129c0bSEd Maste  * 3. Neither the name of the University nor the names of its contributors
1481cb6ddcSMark Murray  *    may be used to endorse or promote products derived from this software
1581cb6ddcSMark Murray  *    without specific prior written permission.
1681cb6ddcSMark Murray  *
1781cb6ddcSMark Murray  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
1881cb6ddcSMark Murray  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
1981cb6ddcSMark Murray  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
2081cb6ddcSMark Murray  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
2181cb6ddcSMark Murray  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
2281cb6ddcSMark Murray  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
2381cb6ddcSMark Murray  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
2481cb6ddcSMark Murray  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
2581cb6ddcSMark Murray  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
2681cb6ddcSMark Murray  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
2781cb6ddcSMark Murray  * SUCH DAMAGE.
2881cb6ddcSMark Murray  *
2981cb6ddcSMark Murray  *	@(#)telnet.h	8.2 (Berkeley) 12/15/93
30ecece7e3SPeter Wemm  * $FreeBSD$
3181cb6ddcSMark Murray  */
3281cb6ddcSMark Murray 
3304c426ccSMark Murray #ifndef _ARPA_TELNET_H_
3404c426ccSMark Murray #define	_ARPA_TELNET_H_
3581cb6ddcSMark Murray 
3681cb6ddcSMark Murray /*
3781cb6ddcSMark Murray  * Definitions for the TELNET protocol.
3881cb6ddcSMark Murray  */
3981cb6ddcSMark Murray #define	IAC	255		/* interpret as command: */
4081cb6ddcSMark Murray #define	DONT	254		/* you are not to use option */
4181cb6ddcSMark Murray #define	DO	253		/* please, you use option */
4281cb6ddcSMark Murray #define	WONT	252		/* I won't use option */
4381cb6ddcSMark Murray #define	WILL	251		/* I will use option */
4481cb6ddcSMark Murray #define	SB	250		/* interpret as subnegotiation */
4581cb6ddcSMark Murray #define	GA	249		/* you may reverse the line */
4681cb6ddcSMark Murray #define	EL	248		/* erase the current line */
4781cb6ddcSMark Murray #define	EC	247		/* erase the current character */
4881cb6ddcSMark Murray #define	AYT	246		/* are you there */
4981cb6ddcSMark Murray #define	AO	245		/* abort output--but let prog finish */
5081cb6ddcSMark Murray #define	IP	244		/* interrupt process--permanently */
5181cb6ddcSMark Murray #define	BREAK	243		/* break */
5281cb6ddcSMark Murray #define	DM	242		/* data mark--for connect. cleaning */
5381cb6ddcSMark Murray #define	NOP	241		/* nop */
5481cb6ddcSMark Murray #define	SE	240		/* end sub negotiation */
5581cb6ddcSMark Murray #define EOR     239             /* end of record (transparent mode) */
5681cb6ddcSMark Murray #define	ABORT	238		/* Abort process */
5781cb6ddcSMark Murray #define	SUSP	237		/* Suspend process */
5881cb6ddcSMark Murray #define	xEOF	236		/* End of file: EOF is already used... */
5981cb6ddcSMark Murray 
6081cb6ddcSMark Murray #define SYNCH	242		/* for telfunc calls */
6181cb6ddcSMark Murray 
6281cb6ddcSMark Murray #ifdef TELCMDS
638fa113e5SMark Murray const char *telcmds[] = {
6481cb6ddcSMark Murray 	"EOF", "SUSP", "ABORT", "EOR",
6581cb6ddcSMark Murray 	"SE", "NOP", "DMARK", "BRK", "IP", "AO", "AYT", "EC",
6604c426ccSMark Murray 	"EL", "GA", "SB", "WILL", "WONT", "DO", "DONT", "IAC",
6704c426ccSMark Murray 	0
6881cb6ddcSMark Murray };
6981cb6ddcSMark Murray #else
7081cb6ddcSMark Murray extern char *telcmds[];
7181cb6ddcSMark Murray #endif
7281cb6ddcSMark Murray 
7381cb6ddcSMark Murray #define	TELCMD_FIRST	xEOF
7481cb6ddcSMark Murray #define	TELCMD_LAST	IAC
7581cb6ddcSMark Murray #define	TELCMD_OK(x)	((unsigned int)(x) <= TELCMD_LAST && \
7681cb6ddcSMark Murray 			 (unsigned int)(x) >= TELCMD_FIRST)
7781cb6ddcSMark Murray #define	TELCMD(x)	telcmds[(x)-TELCMD_FIRST]
7881cb6ddcSMark Murray 
7981cb6ddcSMark Murray /* telnet options */
8081cb6ddcSMark Murray #define TELOPT_BINARY	0	/* 8-bit data path */
8181cb6ddcSMark Murray #define TELOPT_ECHO	1	/* echo */
8281cb6ddcSMark Murray #define	TELOPT_RCP	2	/* prepare to reconnect */
8381cb6ddcSMark Murray #define	TELOPT_SGA	3	/* suppress go ahead */
8481cb6ddcSMark Murray #define	TELOPT_NAMS	4	/* approximate message size */
8581cb6ddcSMark Murray #define	TELOPT_STATUS	5	/* give status */
8681cb6ddcSMark Murray #define	TELOPT_TM	6	/* timing mark */
8781cb6ddcSMark Murray #define	TELOPT_RCTE	7	/* remote controlled transmission and echo */
8881cb6ddcSMark Murray #define TELOPT_NAOL 	8	/* negotiate about output line width */
8981cb6ddcSMark Murray #define TELOPT_NAOP 	9	/* negotiate about output page size */
9081cb6ddcSMark Murray #define TELOPT_NAOCRD	10	/* negotiate about CR disposition */
9181cb6ddcSMark Murray #define TELOPT_NAOHTS	11	/* negotiate about horizontal tabstops */
9281cb6ddcSMark Murray #define TELOPT_NAOHTD	12	/* negotiate about horizontal tab disposition */
9381cb6ddcSMark Murray #define TELOPT_NAOFFD	13	/* negotiate about formfeed disposition */
9481cb6ddcSMark Murray #define TELOPT_NAOVTS	14	/* negotiate about vertical tab stops */
9581cb6ddcSMark Murray #define TELOPT_NAOVTD	15	/* negotiate about vertical tab disposition */
9681cb6ddcSMark Murray #define TELOPT_NAOLFD	16	/* negotiate about output LF disposition */
9781cb6ddcSMark Murray #define TELOPT_XASCII	17	/* extended ascic character set */
9881cb6ddcSMark Murray #define	TELOPT_LOGOUT	18	/* force logout */
9981cb6ddcSMark Murray #define	TELOPT_BM	19	/* byte macro */
10081cb6ddcSMark Murray #define	TELOPT_DET	20	/* data entry terminal */
10181cb6ddcSMark Murray #define	TELOPT_SUPDUP	21	/* supdup protocol */
10281cb6ddcSMark Murray #define	TELOPT_SUPDUPOUTPUT 22	/* supdup output */
10381cb6ddcSMark Murray #define	TELOPT_SNDLOC	23	/* send location */
10481cb6ddcSMark Murray #define	TELOPT_TTYPE	24	/* terminal type */
10581cb6ddcSMark Murray #define	TELOPT_EOR	25	/* end or record */
10681cb6ddcSMark Murray #define	TELOPT_TUID	26	/* TACACS user identification */
10781cb6ddcSMark Murray #define	TELOPT_OUTMRK	27	/* output marking */
10881cb6ddcSMark Murray #define	TELOPT_TTYLOC	28	/* terminal location number */
10981cb6ddcSMark Murray #define	TELOPT_3270REGIME 29	/* 3270 regime */
11081cb6ddcSMark Murray #define	TELOPT_X3PAD	30	/* X.3 PAD */
11181cb6ddcSMark Murray #define	TELOPT_NAWS	31	/* window size */
11281cb6ddcSMark Murray #define	TELOPT_TSPEED	32	/* terminal speed */
11381cb6ddcSMark Murray #define	TELOPT_LFLOW	33	/* remote flow control */
11481cb6ddcSMark Murray #define TELOPT_LINEMODE	34	/* Linemode option */
11581cb6ddcSMark Murray #define TELOPT_XDISPLOC	35	/* X Display Location */
11681cb6ddcSMark Murray #define TELOPT_OLD_ENVIRON 36	/* Old - Environment variables */
11781cb6ddcSMark Murray #define	TELOPT_AUTHENTICATION 37/* Authenticate */
11881cb6ddcSMark Murray #define	TELOPT_ENCRYPT	38	/* Encryption option */
11981cb6ddcSMark Murray #define TELOPT_NEW_ENVIRON 39	/* New - Environment variables */
120a3bb66deSBill Fumerola #define	TELOPT_TN3270E	40	/* RFC2355 - TN3270 Enhancements */
121a3bb66deSBill Fumerola #define	TELOPT_CHARSET	42	/* RFC2066 - Charset */
122a3bb66deSBill Fumerola #define	TELOPT_COMPORT	44	/* RFC2217 - Com Port Control */
123a3bb66deSBill Fumerola #define	TELOPT_KERMIT	47	/* RFC2840 - Kermit */
12481cb6ddcSMark Murray #define	TELOPT_EXOPL	255	/* extended-options-list */
12581cb6ddcSMark Murray 
126ad11def5SEnji Cooper #define	COMPORT_SET_BAUDRATE	1	/* RFC2217 - Com Port Set Baud Rate */
12781cb6ddcSMark Murray 
128a3bb66deSBill Fumerola #define	NTELOPTS	(1+TELOPT_KERMIT)
12981cb6ddcSMark Murray #ifdef TELOPTS
1308fa113e5SMark Murray const char *telopts[NTELOPTS+1] = {
13181cb6ddcSMark Murray 	"BINARY", "ECHO", "RCP", "SUPPRESS GO AHEAD", "NAME",
13281cb6ddcSMark Murray 	"STATUS", "TIMING MARK", "RCTE", "NAOL", "NAOP",
13381cb6ddcSMark Murray 	"NAOCRD", "NAOHTS", "NAOHTD", "NAOFFD", "NAOVTS",
13481cb6ddcSMark Murray 	"NAOVTD", "NAOLFD", "EXTEND ASCII", "LOGOUT", "BYTE MACRO",
13581cb6ddcSMark Murray 	"DATA ENTRY TERMINAL", "SUPDUP", "SUPDUP OUTPUT",
13681cb6ddcSMark Murray 	"SEND LOCATION", "TERMINAL TYPE", "END OF RECORD",
13781cb6ddcSMark Murray 	"TACACS UID", "OUTPUT MARKING", "TTYLOC",
13881cb6ddcSMark Murray 	"3270 REGIME", "X.3 PAD", "NAWS", "TSPEED", "LFLOW",
13981cb6ddcSMark Murray 	"LINEMODE", "XDISPLOC", "OLD-ENVIRON", "AUTHENTICATION",
140d676c049SAntoine Brodin 	"ENCRYPT", "NEW-ENVIRON", "TN3270E", "XAUTH", "CHARSET",
141d676c049SAntoine Brodin 	"RSP", "COM-PORT", "SLE", "STARTTLS", "KERMIT",
14204c426ccSMark Murray 	0
14381cb6ddcSMark Murray };
14481cb6ddcSMark Murray #define	TELOPT_FIRST	TELOPT_BINARY
145a3bb66deSBill Fumerola #define	TELOPT_LAST	TELOPT_KERMIT
14681cb6ddcSMark Murray #define	TELOPT_OK(x)	((unsigned int)(x) <= TELOPT_LAST)
14781cb6ddcSMark Murray #define	TELOPT(x)	telopts[(x)-TELOPT_FIRST]
14881cb6ddcSMark Murray #endif
14981cb6ddcSMark Murray 
15081cb6ddcSMark Murray /* sub-option qualifiers */
15181cb6ddcSMark Murray #define	TELQUAL_IS	0	/* option is... */
15281cb6ddcSMark Murray #define	TELQUAL_SEND	1	/* send option */
15381cb6ddcSMark Murray #define	TELQUAL_INFO	2	/* ENVIRON: informational version of IS */
15481cb6ddcSMark Murray #define	TELQUAL_REPLY	2	/* AUTHENTICATION: client version of IS */
15581cb6ddcSMark Murray #define	TELQUAL_NAME	3	/* AUTHENTICATION: client version of IS */
15681cb6ddcSMark Murray 
15781cb6ddcSMark Murray #define	LFLOW_OFF		0	/* Disable remote flow control */
15881cb6ddcSMark Murray #define	LFLOW_ON		1	/* Enable remote flow control */
15981cb6ddcSMark Murray #define	LFLOW_RESTART_ANY	2	/* Restart output on any char */
16081cb6ddcSMark Murray #define	LFLOW_RESTART_XON	3	/* Restart output only on XON */
16181cb6ddcSMark Murray 
16281cb6ddcSMark Murray /*
16381cb6ddcSMark Murray  * LINEMODE suboptions
16481cb6ddcSMark Murray  */
16581cb6ddcSMark Murray 
16681cb6ddcSMark Murray #define	LM_MODE		1
16781cb6ddcSMark Murray #define	LM_FORWARDMASK	2
16881cb6ddcSMark Murray #define	LM_SLC		3
16981cb6ddcSMark Murray 
17081cb6ddcSMark Murray #define	MODE_EDIT	0x01
17181cb6ddcSMark Murray #define	MODE_TRAPSIG	0x02
17281cb6ddcSMark Murray #define	MODE_ACK	0x04
17381cb6ddcSMark Murray #define MODE_SOFT_TAB	0x08
17481cb6ddcSMark Murray #define MODE_LIT_ECHO	0x10
17581cb6ddcSMark Murray 
17681cb6ddcSMark Murray #define	MODE_MASK	0x1f
17781cb6ddcSMark Murray 
17881cb6ddcSMark Murray /* Not part of protocol, but needed to simplify things... */
17981cb6ddcSMark Murray #define MODE_FLOW		0x0100
18081cb6ddcSMark Murray #define MODE_ECHO		0x0200
18181cb6ddcSMark Murray #define MODE_INBIN		0x0400
18281cb6ddcSMark Murray #define MODE_OUTBIN		0x0800
18381cb6ddcSMark Murray #define MODE_FORCE		0x1000
18481cb6ddcSMark Murray 
18581cb6ddcSMark Murray #define	SLC_SYNCH	1
18681cb6ddcSMark Murray #define	SLC_BRK		2
18781cb6ddcSMark Murray #define	SLC_IP		3
18881cb6ddcSMark Murray #define	SLC_AO		4
18981cb6ddcSMark Murray #define	SLC_AYT		5
19081cb6ddcSMark Murray #define	SLC_EOR		6
19181cb6ddcSMark Murray #define	SLC_ABORT	7
19281cb6ddcSMark Murray #define	SLC_EOF		8
19381cb6ddcSMark Murray #define	SLC_SUSP	9
19481cb6ddcSMark Murray #define	SLC_EC		10
19581cb6ddcSMark Murray #define	SLC_EL		11
19681cb6ddcSMark Murray #define	SLC_EW		12
19781cb6ddcSMark Murray #define	SLC_RP		13
19881cb6ddcSMark Murray #define	SLC_LNEXT	14
19981cb6ddcSMark Murray #define	SLC_XON		15
20081cb6ddcSMark Murray #define	SLC_XOFF	16
20181cb6ddcSMark Murray #define	SLC_FORW1	17
20281cb6ddcSMark Murray #define	SLC_FORW2	18
20304c426ccSMark Murray #define SLC_MCL         19
20404c426ccSMark Murray #define SLC_MCR         20
20504c426ccSMark Murray #define SLC_MCWL        21
20604c426ccSMark Murray #define SLC_MCWR        22
20704c426ccSMark Murray #define SLC_MCBOL       23
20804c426ccSMark Murray #define SLC_MCEOL       24
20904c426ccSMark Murray #define SLC_INSRT       25
21004c426ccSMark Murray #define SLC_OVER        26
21104c426ccSMark Murray #define SLC_ECR         27
21204c426ccSMark Murray #define SLC_EWR         28
21304c426ccSMark Murray #define SLC_EBOL        29
21404c426ccSMark Murray #define SLC_EEOL        30
21581cb6ddcSMark Murray 
21604c426ccSMark Murray #define	NSLC		30
21781cb6ddcSMark Murray 
21881cb6ddcSMark Murray /*
2192fa72ea7SJeroen Ruigrok van der Werven  * For backwards compatibility, we define SLC_NAMES to be the
22081cb6ddcSMark Murray  * list of names if SLC_NAMES is not defined.
22181cb6ddcSMark Murray  */
22281cb6ddcSMark Murray #define	SLC_NAMELIST	"0", "SYNCH", "BRK", "IP", "AO", "AYT", "EOR",	\
22381cb6ddcSMark Murray 			"ABORT", "EOF", "SUSP", "EC", "EL", "EW", "RP",	\
22404c426ccSMark Murray 			"LNEXT", "XON", "XOFF", "FORW1", "FORW2",	\
22504c426ccSMark Murray 			"MCL", "MCR", "MCWL", "MCWR", "MCBOL",		\
22604c426ccSMark Murray 			"MCEOL", "INSRT", "OVER", "ECR", "EWR",		\
22704c426ccSMark Murray 			"EBOL", "EEOL",					\
22804c426ccSMark Murray 			0
22904c426ccSMark Murray 
23081cb6ddcSMark Murray #ifdef	SLC_NAMES
2318fa113e5SMark Murray const char *slc_names[] = {
23281cb6ddcSMark Murray 	SLC_NAMELIST
23381cb6ddcSMark Murray };
23481cb6ddcSMark Murray #else
23581cb6ddcSMark Murray extern char *slc_names[];
23681cb6ddcSMark Murray #define	SLC_NAMES SLC_NAMELIST
23781cb6ddcSMark Murray #endif
23881cb6ddcSMark Murray 
23981cb6ddcSMark Murray #define	SLC_NAME_OK(x)	((unsigned int)(x) <= NSLC)
24081cb6ddcSMark Murray #define SLC_NAME(x)	slc_names[x]
24181cb6ddcSMark Murray 
24281cb6ddcSMark Murray #define	SLC_NOSUPPORT	0
24381cb6ddcSMark Murray #define	SLC_CANTCHANGE	1
24481cb6ddcSMark Murray #define	SLC_VARIABLE	2
24581cb6ddcSMark Murray #define	SLC_DEFAULT	3
24681cb6ddcSMark Murray #define	SLC_LEVELBITS	0x03
24781cb6ddcSMark Murray 
24881cb6ddcSMark Murray #define	SLC_FUNC	0
24981cb6ddcSMark Murray #define	SLC_FLAGS	1
25081cb6ddcSMark Murray #define	SLC_VALUE	2
25181cb6ddcSMark Murray 
25281cb6ddcSMark Murray #define	SLC_ACK		0x80
25381cb6ddcSMark Murray #define	SLC_FLUSHIN	0x40
25481cb6ddcSMark Murray #define	SLC_FLUSHOUT	0x20
25581cb6ddcSMark Murray 
25681cb6ddcSMark Murray #define	OLD_ENV_VAR	1
25781cb6ddcSMark Murray #define	OLD_ENV_VALUE	0
25881cb6ddcSMark Murray #define	NEW_ENV_VAR	0
25981cb6ddcSMark Murray #define	NEW_ENV_VALUE	1
26081cb6ddcSMark Murray #define	ENV_ESC		2
26181cb6ddcSMark Murray #define ENV_USERVAR	3
26281cb6ddcSMark Murray 
26381cb6ddcSMark Murray /*
26481cb6ddcSMark Murray  * AUTHENTICATION suboptions
26581cb6ddcSMark Murray  */
26681cb6ddcSMark Murray 
26781cb6ddcSMark Murray /*
26881cb6ddcSMark Murray  * Who is authenticating who ...
26981cb6ddcSMark Murray  */
27081cb6ddcSMark Murray #define	AUTH_WHO_CLIENT		0	/* Client authenticating server */
27181cb6ddcSMark Murray #define	AUTH_WHO_SERVER		1	/* Server authenticating client */
27281cb6ddcSMark Murray #define	AUTH_WHO_MASK		1
27381cb6ddcSMark Murray 
27481cb6ddcSMark Murray /*
27581cb6ddcSMark Murray  * amount of authentication done
27681cb6ddcSMark Murray  */
27781cb6ddcSMark Murray #define	AUTH_HOW_ONE_WAY	0
27881cb6ddcSMark Murray #define	AUTH_HOW_MUTUAL		2
27981cb6ddcSMark Murray #define	AUTH_HOW_MASK		2
28081cb6ddcSMark Murray 
28181cb6ddcSMark Murray #define	AUTHTYPE_NULL		0
28281cb6ddcSMark Murray #define	AUTHTYPE_KERBEROS_V4	1
28381cb6ddcSMark Murray #define	AUTHTYPE_KERBEROS_V5	2
28481cb6ddcSMark Murray #define	AUTHTYPE_SPX		3
28581cb6ddcSMark Murray #define	AUTHTYPE_MINK		4
2860f8c8396SNick Sayer #define	AUTHTYPE_SRA		6
2870f8c8396SNick Sayer #define	AUTHTYPE_CNT		7
28881cb6ddcSMark Murray 
28981cb6ddcSMark Murray #define	AUTHTYPE_TEST		99
29081cb6ddcSMark Murray 
29181cb6ddcSMark Murray #ifdef	AUTH_NAMES
2928fa113e5SMark Murray const char *authtype_names[] = {
2930f8c8396SNick Sayer 	"NULL", "KERBEROS_V4", "KERBEROS_V5", "SPX", "MINK", NULL, "SRA",
29404c426ccSMark Murray 	0
29581cb6ddcSMark Murray };
29681cb6ddcSMark Murray #else
29781cb6ddcSMark Murray extern char *authtype_names[];
29881cb6ddcSMark Murray #endif
29981cb6ddcSMark Murray 
30081cb6ddcSMark Murray #define	AUTHTYPE_NAME_OK(x)	((unsigned int)(x) < AUTHTYPE_CNT)
30181cb6ddcSMark Murray #define	AUTHTYPE_NAME(x)	authtype_names[x]
30281cb6ddcSMark Murray 
30381cb6ddcSMark Murray /*
30481cb6ddcSMark Murray  * ENCRYPTion suboptions
30581cb6ddcSMark Murray  */
30681cb6ddcSMark Murray #define	ENCRYPT_IS		0	/* I pick encryption type ... */
30781cb6ddcSMark Murray #define	ENCRYPT_SUPPORT		1	/* I support encryption types ... */
30881cb6ddcSMark Murray #define	ENCRYPT_REPLY		2	/* Initial setup response */
30981cb6ddcSMark Murray #define	ENCRYPT_START		3	/* Am starting to send encrypted */
31081cb6ddcSMark Murray #define	ENCRYPT_END		4	/* Am ending encrypted */
31181cb6ddcSMark Murray #define	ENCRYPT_REQSTART	5	/* Request you start encrypting */
31204c426ccSMark Murray #define	ENCRYPT_REQEND		6	/* Request you end encrypting */
31381cb6ddcSMark Murray #define	ENCRYPT_ENC_KEYID	7
31481cb6ddcSMark Murray #define	ENCRYPT_DEC_KEYID	8
31581cb6ddcSMark Murray #define	ENCRYPT_CNT		9
31681cb6ddcSMark Murray 
31781cb6ddcSMark Murray #define	ENCTYPE_ANY		0
31881cb6ddcSMark Murray #define	ENCTYPE_DES_CFB64	1
31981cb6ddcSMark Murray #define	ENCTYPE_DES_OFB64	2
32081cb6ddcSMark Murray #define	ENCTYPE_CNT		3
32181cb6ddcSMark Murray 
32281cb6ddcSMark Murray #ifdef	ENCRYPT_NAMES
3238fa113e5SMark Murray const char *encrypt_names[] = {
32481cb6ddcSMark Murray 	"IS", "SUPPORT", "REPLY", "START", "END",
32581cb6ddcSMark Murray 	"REQUEST-START", "REQUEST-END", "ENC-KEYID", "DEC-KEYID",
32604c426ccSMark Murray 	0
32781cb6ddcSMark Murray };
3288fa113e5SMark Murray const char *enctype_names[] = {
32904c426ccSMark Murray 	"ANY", "DES_CFB64",  "DES_OFB64",
33004c426ccSMark Murray 	0
33181cb6ddcSMark Murray };
33281cb6ddcSMark Murray #else
33381cb6ddcSMark Murray extern char *encrypt_names[];
33481cb6ddcSMark Murray extern char *enctype_names[];
33581cb6ddcSMark Murray #endif
33681cb6ddcSMark Murray 
33781cb6ddcSMark Murray 
33881cb6ddcSMark Murray #define	ENCRYPT_NAME_OK(x)	((unsigned int)(x) < ENCRYPT_CNT)
33981cb6ddcSMark Murray #define	ENCRYPT_NAME(x)		encrypt_names[x]
34081cb6ddcSMark Murray 
34181cb6ddcSMark Murray #define	ENCTYPE_NAME_OK(x)	((unsigned int)(x) < ENCTYPE_CNT)
34281cb6ddcSMark Murray #define	ENCTYPE_NAME(x)		enctype_names[x]
34381cb6ddcSMark Murray 
34481cb6ddcSMark Murray #endif /* !_TELNET_H_ */
345