xref: /freebsd/crypto/heimdal/appl/telnet/arpa/telnet.h (revision 13e3f4d6d9d9c48a270a1a18a92e57a56f0a7059)
113e3f4d6SMark Murray /*
213e3f4d6SMark Murray  * Copyright (c) 1983, 1993
313e3f4d6SMark Murray  *	The Regents of the University of California.  All rights reserved.
413e3f4d6SMark Murray  *
513e3f4d6SMark Murray  * Redistribution and use in source and binary forms, with or without
613e3f4d6SMark Murray  * modification, are permitted provided that the following conditions
713e3f4d6SMark Murray  * are met:
813e3f4d6SMark Murray  * 1. Redistributions of source code must retain the above copyright
913e3f4d6SMark Murray  *    notice, this list of conditions and the following disclaimer.
1013e3f4d6SMark Murray  * 2. Redistributions in binary form must reproduce the above copyright
1113e3f4d6SMark Murray  *    notice, this list of conditions and the following disclaimer in the
1213e3f4d6SMark Murray  *    documentation and/or other materials provided with the distribution.
1313e3f4d6SMark Murray  * 3. All advertising materials mentioning features or use of this software
1413e3f4d6SMark Murray  *    must display the following acknowledgement:
1513e3f4d6SMark Murray  *	This product includes software developed by the University of
1613e3f4d6SMark Murray  *	California, Berkeley and its contributors.
1713e3f4d6SMark Murray  * 4. Neither the name of the University nor the names of its contributors
1813e3f4d6SMark Murray  *    may be used to endorse or promote products derived from this software
1913e3f4d6SMark Murray  *    without specific prior written permission.
2013e3f4d6SMark Murray  *
2113e3f4d6SMark Murray  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
2213e3f4d6SMark Murray  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
2313e3f4d6SMark Murray  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
2413e3f4d6SMark Murray  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
2513e3f4d6SMark Murray  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
2613e3f4d6SMark Murray  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
2713e3f4d6SMark Murray  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
2813e3f4d6SMark Murray  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
2913e3f4d6SMark Murray  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
3013e3f4d6SMark Murray  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
3113e3f4d6SMark Murray  * SUCH DAMAGE.
3213e3f4d6SMark Murray  *
3313e3f4d6SMark Murray  *	@(#)telnet.h	8.2 (Berkeley) 12/15/93
3413e3f4d6SMark Murray  */
3513e3f4d6SMark Murray 
3613e3f4d6SMark Murray #ifndef _TELNET_H_
3713e3f4d6SMark Murray #define	_TELNET_H_
3813e3f4d6SMark Murray 
3913e3f4d6SMark Murray /*
4013e3f4d6SMark Murray  * Definitions for the TELNET protocol.
4113e3f4d6SMark Murray  */
4213e3f4d6SMark Murray #define	IAC	255		/* interpret as command: */
4313e3f4d6SMark Murray #define	DONT	254		/* you are not to use option */
4413e3f4d6SMark Murray #define	DO	253		/* please, you use option */
4513e3f4d6SMark Murray #define	WONT	252		/* I won't use option */
4613e3f4d6SMark Murray #define	WILL	251		/* I will use option */
4713e3f4d6SMark Murray #define	SB	250		/* interpret as subnegotiation */
4813e3f4d6SMark Murray #define	GA	249		/* you may reverse the line */
4913e3f4d6SMark Murray #define	EL	248		/* erase the current line */
5013e3f4d6SMark Murray #define	EC	247		/* erase the current character */
5113e3f4d6SMark Murray #define	AYT	246		/* are you there */
5213e3f4d6SMark Murray #define	AO	245		/* abort output--but let prog finish */
5313e3f4d6SMark Murray #define	IP	244		/* interrupt process--permanently */
5413e3f4d6SMark Murray #define	BREAK	243		/* break */
5513e3f4d6SMark Murray #define	DM	242		/* data mark--for connect. cleaning */
5613e3f4d6SMark Murray #define	NOP	241		/* nop */
5713e3f4d6SMark Murray #define	SE	240		/* end sub negotiation */
5813e3f4d6SMark Murray #define EOR     239             /* end of record (transparent mode) */
5913e3f4d6SMark Murray #define	ABORT	238		/* Abort process */
6013e3f4d6SMark Murray #define	SUSP	237		/* Suspend process */
6113e3f4d6SMark Murray #define	xEOF	236		/* End of file: EOF is already used... */
6213e3f4d6SMark Murray 
6313e3f4d6SMark Murray #define SYNCH	242		/* for telfunc calls */
6413e3f4d6SMark Murray 
6513e3f4d6SMark Murray #ifdef TELCMDS
6613e3f4d6SMark Murray char *telcmds[] = {
6713e3f4d6SMark Murray 	"EOF", "SUSP", "ABORT", "EOR",
6813e3f4d6SMark Murray 	"SE", "NOP", "DMARK", "BRK", "IP", "AO", "AYT", "EC",
6913e3f4d6SMark Murray 	"EL", "GA", "SB", "WILL", "WONT", "DO", "DONT", "IAC", 0,
7013e3f4d6SMark Murray };
7113e3f4d6SMark Murray #else
7213e3f4d6SMark Murray extern char *telcmds[];
7313e3f4d6SMark Murray #endif
7413e3f4d6SMark Murray 
7513e3f4d6SMark Murray #define	TELCMD_FIRST	xEOF
7613e3f4d6SMark Murray #define	TELCMD_LAST	IAC
7713e3f4d6SMark Murray #define	TELCMD_OK(x)	((unsigned int)(x) <= TELCMD_LAST && \
7813e3f4d6SMark Murray 			 (unsigned int)(x) >= TELCMD_FIRST)
7913e3f4d6SMark Murray #define	TELCMD(x)	telcmds[(x)-TELCMD_FIRST]
8013e3f4d6SMark Murray 
8113e3f4d6SMark Murray /* telnet options */
8213e3f4d6SMark Murray #define TELOPT_BINARY	0	/* 8-bit data path */
8313e3f4d6SMark Murray #define TELOPT_ECHO	1	/* echo */
8413e3f4d6SMark Murray #define	TELOPT_RCP	2	/* prepare to reconnect */
8513e3f4d6SMark Murray #define	TELOPT_SGA	3	/* suppress go ahead */
8613e3f4d6SMark Murray #define	TELOPT_NAMS	4	/* approximate message size */
8713e3f4d6SMark Murray #define	TELOPT_STATUS	5	/* give status */
8813e3f4d6SMark Murray #define	TELOPT_TM	6	/* timing mark */
8913e3f4d6SMark Murray #define	TELOPT_RCTE	7	/* remote controlled transmission and echo */
9013e3f4d6SMark Murray #define TELOPT_NAOL 	8	/* negotiate about output line width */
9113e3f4d6SMark Murray #define TELOPT_NAOP 	9	/* negotiate about output page size */
9213e3f4d6SMark Murray #define TELOPT_NAOCRD	10	/* negotiate about CR disposition */
9313e3f4d6SMark Murray #define TELOPT_NAOHTS	11	/* negotiate about horizontal tabstops */
9413e3f4d6SMark Murray #define TELOPT_NAOHTD	12	/* negotiate about horizontal tab disposition */
9513e3f4d6SMark Murray #define TELOPT_NAOFFD	13	/* negotiate about formfeed disposition */
9613e3f4d6SMark Murray #define TELOPT_NAOVTS	14	/* negotiate about vertical tab stops */
9713e3f4d6SMark Murray #define TELOPT_NAOVTD	15	/* negotiate about vertical tab disposition */
9813e3f4d6SMark Murray #define TELOPT_NAOLFD	16	/* negotiate about output LF disposition */
9913e3f4d6SMark Murray #define TELOPT_XASCII	17	/* extended ascic character set */
10013e3f4d6SMark Murray #define	TELOPT_LOGOUT	18	/* force logout */
10113e3f4d6SMark Murray #define	TELOPT_BM	19	/* byte macro */
10213e3f4d6SMark Murray #define	TELOPT_DET	20	/* data entry terminal */
10313e3f4d6SMark Murray #define	TELOPT_SUPDUP	21	/* supdup protocol */
10413e3f4d6SMark Murray #define	TELOPT_SUPDUPOUTPUT 22	/* supdup output */
10513e3f4d6SMark Murray #define	TELOPT_SNDLOC	23	/* send location */
10613e3f4d6SMark Murray #define	TELOPT_TTYPE	24	/* terminal type */
10713e3f4d6SMark Murray #define	TELOPT_EOR	25	/* end or record */
10813e3f4d6SMark Murray #define	TELOPT_TUID	26	/* TACACS user identification */
10913e3f4d6SMark Murray #define	TELOPT_OUTMRK	27	/* output marking */
11013e3f4d6SMark Murray #define	TELOPT_TTYLOC	28	/* terminal location number */
11113e3f4d6SMark Murray #define	TELOPT_3270REGIME 29	/* 3270 regime */
11213e3f4d6SMark Murray #define	TELOPT_X3PAD	30	/* X.3 PAD */
11313e3f4d6SMark Murray #define	TELOPT_NAWS	31	/* window size */
11413e3f4d6SMark Murray #define	TELOPT_TSPEED	32	/* terminal speed */
11513e3f4d6SMark Murray #define	TELOPT_LFLOW	33	/* remote flow control */
11613e3f4d6SMark Murray #define TELOPT_LINEMODE	34	/* Linemode option */
11713e3f4d6SMark Murray #define TELOPT_XDISPLOC	35	/* X Display Location */
11813e3f4d6SMark Murray #define TELOPT_OLD_ENVIRON 36	/* Old - Environment variables */
11913e3f4d6SMark Murray #define	TELOPT_AUTHENTICATION 37/* Authenticate */
12013e3f4d6SMark Murray #define	TELOPT_ENCRYPT	38	/* Encryption option */
12113e3f4d6SMark Murray #define TELOPT_NEW_ENVIRON 39	/* New - Environment variables */
12213e3f4d6SMark Murray #define	TELOPT_EXOPL	255	/* extended-options-list */
12313e3f4d6SMark Murray 
12413e3f4d6SMark Murray 
12513e3f4d6SMark Murray #define	NTELOPTS	(1+TELOPT_NEW_ENVIRON)
12613e3f4d6SMark Murray #ifdef TELOPTS
12713e3f4d6SMark Murray char *telopts[NTELOPTS+1] = {
12813e3f4d6SMark Murray 	"BINARY", "ECHO", "RCP", "SUPPRESS GO AHEAD", "NAME",
12913e3f4d6SMark Murray 	"STATUS", "TIMING MARK", "RCTE", "NAOL", "NAOP",
13013e3f4d6SMark Murray 	"NAOCRD", "NAOHTS", "NAOHTD", "NAOFFD", "NAOVTS",
13113e3f4d6SMark Murray 	"NAOVTD", "NAOLFD", "EXTEND ASCII", "LOGOUT", "BYTE MACRO",
13213e3f4d6SMark Murray 	"DATA ENTRY TERMINAL", "SUPDUP", "SUPDUP OUTPUT",
13313e3f4d6SMark Murray 	"SEND LOCATION", "TERMINAL TYPE", "END OF RECORD",
13413e3f4d6SMark Murray 	"TACACS UID", "OUTPUT MARKING", "TTYLOC",
13513e3f4d6SMark Murray 	"3270 REGIME", "X.3 PAD", "NAWS", "TSPEED", "LFLOW",
13613e3f4d6SMark Murray 	"LINEMODE", "XDISPLOC", "OLD-ENVIRON", "AUTHENTICATION",
13713e3f4d6SMark Murray 	"ENCRYPT", "NEW-ENVIRON",
13813e3f4d6SMark Murray 	0,
13913e3f4d6SMark Murray };
14013e3f4d6SMark Murray #define	TELOPT_FIRST	TELOPT_BINARY
14113e3f4d6SMark Murray #define	TELOPT_LAST	TELOPT_NEW_ENVIRON
14213e3f4d6SMark Murray #define	TELOPT_OK(x)	((unsigned int)(x) <= TELOPT_LAST)
14313e3f4d6SMark Murray #define	TELOPT(x)	telopts[(x)-TELOPT_FIRST]
14413e3f4d6SMark Murray #endif
14513e3f4d6SMark Murray 
14613e3f4d6SMark Murray /* sub-option qualifiers */
14713e3f4d6SMark Murray #define	TELQUAL_IS	0	/* option is... */
14813e3f4d6SMark Murray #define	TELQUAL_SEND	1	/* send option */
14913e3f4d6SMark Murray #define	TELQUAL_INFO	2	/* ENVIRON: informational version of IS */
15013e3f4d6SMark Murray #define	TELQUAL_REPLY	2	/* AUTHENTICATION: client version of IS */
15113e3f4d6SMark Murray #define	TELQUAL_NAME	3	/* AUTHENTICATION: client version of IS */
15213e3f4d6SMark Murray 
15313e3f4d6SMark Murray #define	LFLOW_OFF		0	/* Disable remote flow control */
15413e3f4d6SMark Murray #define	LFLOW_ON		1	/* Enable remote flow control */
15513e3f4d6SMark Murray #define	LFLOW_RESTART_ANY	2	/* Restart output on any char */
15613e3f4d6SMark Murray #define	LFLOW_RESTART_XON	3	/* Restart output only on XON */
15713e3f4d6SMark Murray 
15813e3f4d6SMark Murray /*
15913e3f4d6SMark Murray  * LINEMODE suboptions
16013e3f4d6SMark Murray  */
16113e3f4d6SMark Murray 
16213e3f4d6SMark Murray #define	LM_MODE		1
16313e3f4d6SMark Murray #define	LM_FORWARDMASK	2
16413e3f4d6SMark Murray #define	LM_SLC		3
16513e3f4d6SMark Murray 
16613e3f4d6SMark Murray #define	MODE_EDIT	0x01
16713e3f4d6SMark Murray #define	MODE_TRAPSIG	0x02
16813e3f4d6SMark Murray #define	MODE_ACK	0x04
16913e3f4d6SMark Murray #define MODE_SOFT_TAB	0x08
17013e3f4d6SMark Murray #define MODE_LIT_ECHO	0x10
17113e3f4d6SMark Murray 
17213e3f4d6SMark Murray #define	MODE_MASK	0x1f
17313e3f4d6SMark Murray 
17413e3f4d6SMark Murray /* Not part of protocol, but needed to simplify things... */
17513e3f4d6SMark Murray #define MODE_FLOW		0x0100
17613e3f4d6SMark Murray #define MODE_ECHO		0x0200
17713e3f4d6SMark Murray #define MODE_INBIN		0x0400
17813e3f4d6SMark Murray #define MODE_OUTBIN		0x0800
17913e3f4d6SMark Murray #define MODE_FORCE		0x1000
18013e3f4d6SMark Murray 
18113e3f4d6SMark Murray #define	SLC_SYNCH	1
18213e3f4d6SMark Murray #define	SLC_BRK		2
18313e3f4d6SMark Murray #define	SLC_IP		3
18413e3f4d6SMark Murray #define	SLC_AO		4
18513e3f4d6SMark Murray #define	SLC_AYT		5
18613e3f4d6SMark Murray #define	SLC_EOR		6
18713e3f4d6SMark Murray #define	SLC_ABORT	7
18813e3f4d6SMark Murray #define	SLC_EOF		8
18913e3f4d6SMark Murray #define	SLC_SUSP	9
19013e3f4d6SMark Murray #define	SLC_EC		10
19113e3f4d6SMark Murray #define	SLC_EL		11
19213e3f4d6SMark Murray #define	SLC_EW		12
19313e3f4d6SMark Murray #define	SLC_RP		13
19413e3f4d6SMark Murray #define	SLC_LNEXT	14
19513e3f4d6SMark Murray #define	SLC_XON		15
19613e3f4d6SMark Murray #define	SLC_XOFF	16
19713e3f4d6SMark Murray #define	SLC_FORW1	17
19813e3f4d6SMark Murray #define	SLC_FORW2	18
19913e3f4d6SMark Murray 
20013e3f4d6SMark Murray #define	NSLC		18
20113e3f4d6SMark Murray 
20213e3f4d6SMark Murray /*
20313e3f4d6SMark Murray  * For backwards compatability, we define SLC_NAMES to be the
20413e3f4d6SMark Murray  * list of names if SLC_NAMES is not defined.
20513e3f4d6SMark Murray  */
20613e3f4d6SMark Murray #define	SLC_NAMELIST	"0", "SYNCH", "BRK", "IP", "AO", "AYT", "EOR", \
20713e3f4d6SMark Murray 			"ABORT", "EOF", "SUSP", "EC", "EL", "EW", "RP", \
20813e3f4d6SMark Murray 			"LNEXT", "XON", "XOFF", "FORW1", "FORW2", 0,
20913e3f4d6SMark Murray #ifdef	SLC_NAMES
21013e3f4d6SMark Murray char *slc_names[] = {
21113e3f4d6SMark Murray 	SLC_NAMELIST
21213e3f4d6SMark Murray };
21313e3f4d6SMark Murray #else
21413e3f4d6SMark Murray extern char *slc_names[];
21513e3f4d6SMark Murray #define	SLC_NAMES SLC_NAMELIST
21613e3f4d6SMark Murray #endif
21713e3f4d6SMark Murray 
21813e3f4d6SMark Murray #define	SLC_NAME_OK(x)	((unsigned int)(x) <= NSLC)
21913e3f4d6SMark Murray #define SLC_NAME(x)	slc_names[x]
22013e3f4d6SMark Murray 
22113e3f4d6SMark Murray #define	SLC_NOSUPPORT	0
22213e3f4d6SMark Murray #define	SLC_CANTCHANGE	1
22313e3f4d6SMark Murray #define	SLC_VARIABLE	2
22413e3f4d6SMark Murray #define	SLC_DEFAULT	3
22513e3f4d6SMark Murray #define	SLC_LEVELBITS	0x03
22613e3f4d6SMark Murray 
22713e3f4d6SMark Murray #define	SLC_FUNC	0
22813e3f4d6SMark Murray #define	SLC_FLAGS	1
22913e3f4d6SMark Murray #define	SLC_VALUE	2
23013e3f4d6SMark Murray 
23113e3f4d6SMark Murray #define	SLC_ACK		0x80
23213e3f4d6SMark Murray #define	SLC_FLUSHIN	0x40
23313e3f4d6SMark Murray #define	SLC_FLUSHOUT	0x20
23413e3f4d6SMark Murray 
23513e3f4d6SMark Murray #define	OLD_ENV_VAR	1
23613e3f4d6SMark Murray #define	OLD_ENV_VALUE	0
23713e3f4d6SMark Murray #define	NEW_ENV_VAR	0
23813e3f4d6SMark Murray #define	NEW_ENV_VALUE	1
23913e3f4d6SMark Murray #define	ENV_ESC		2
24013e3f4d6SMark Murray #define ENV_USERVAR	3
24113e3f4d6SMark Murray 
24213e3f4d6SMark Murray /*
24313e3f4d6SMark Murray  * AUTHENTICATION suboptions
24413e3f4d6SMark Murray  */
24513e3f4d6SMark Murray 
24613e3f4d6SMark Murray /*
24713e3f4d6SMark Murray  * Who is authenticating who ...
24813e3f4d6SMark Murray  */
24913e3f4d6SMark Murray #define	AUTH_WHO_CLIENT		0	/* Client authenticating server */
25013e3f4d6SMark Murray #define	AUTH_WHO_SERVER		1	/* Server authenticating client */
25113e3f4d6SMark Murray #define	AUTH_WHO_MASK		1
25213e3f4d6SMark Murray 
25313e3f4d6SMark Murray /*
25413e3f4d6SMark Murray  * amount of authentication done
25513e3f4d6SMark Murray  */
25613e3f4d6SMark Murray #define	AUTH_HOW_ONE_WAY	0
25713e3f4d6SMark Murray #define	AUTH_HOW_MUTUAL		2
25813e3f4d6SMark Murray #define	AUTH_HOW_MASK		2
25913e3f4d6SMark Murray 
26013e3f4d6SMark Murray #define	AUTHTYPE_NULL		0
26113e3f4d6SMark Murray #define	AUTHTYPE_KERBEROS_V4	1
26213e3f4d6SMark Murray #define	AUTHTYPE_KERBEROS_V5	2
26313e3f4d6SMark Murray #define	AUTHTYPE_SPX		3
26413e3f4d6SMark Murray #define	AUTHTYPE_MINK		4
26513e3f4d6SMark Murray #define	AUTHTYPE_SRA		5
26613e3f4d6SMark Murray #define	AUTHTYPE_CNT		6
26713e3f4d6SMark Murray /* #define	AUTHTYPE_UNSECURE 6 */
26813e3f4d6SMark Murray 
26913e3f4d6SMark Murray #define	AUTHTYPE_TEST		99
27013e3f4d6SMark Murray 
27113e3f4d6SMark Murray #ifdef	AUTH_NAMES
27213e3f4d6SMark Murray char *authtype_names[] = {
27313e3f4d6SMark Murray 	"NULL", "KERBEROS_V4", "KERBEROS_V5", "SPX", "MINK",
27413e3f4d6SMark Murray 	"SRA", 0,
27513e3f4d6SMark Murray };
27613e3f4d6SMark Murray #else
27713e3f4d6SMark Murray extern char *authtype_names[];
27813e3f4d6SMark Murray #endif
27913e3f4d6SMark Murray 
28013e3f4d6SMark Murray #define	AUTHTYPE_NAME_OK(x)	((unsigned int)(x) < AUTHTYPE_CNT)
28113e3f4d6SMark Murray #define	AUTHTYPE_NAME(x)	authtype_names[x]
28213e3f4d6SMark Murray 
28313e3f4d6SMark Murray /*
28413e3f4d6SMark Murray  * ENCRYPTion suboptions
28513e3f4d6SMark Murray  */
28613e3f4d6SMark Murray #define	ENCRYPT_IS		0	/* I pick encryption type ... */
28713e3f4d6SMark Murray #define	ENCRYPT_SUPPORT		1	/* I support encryption types ... */
28813e3f4d6SMark Murray #define	ENCRYPT_REPLY		2	/* Initial setup response */
28913e3f4d6SMark Murray #define	ENCRYPT_START		3	/* Am starting to send encrypted */
29013e3f4d6SMark Murray #define	ENCRYPT_END		4	/* Am ending encrypted */
29113e3f4d6SMark Murray #define	ENCRYPT_REQSTART	5	/* Request you start encrypting */
29213e3f4d6SMark Murray #define	ENCRYPT_REQEND		6	/* Request you send encrypting */
29313e3f4d6SMark Murray #define	ENCRYPT_ENC_KEYID	7
29413e3f4d6SMark Murray #define	ENCRYPT_DEC_KEYID	8
29513e3f4d6SMark Murray #define	ENCRYPT_CNT		9
29613e3f4d6SMark Murray 
29713e3f4d6SMark Murray #define	ENCTYPE_ANY		0
29813e3f4d6SMark Murray #define	ENCTYPE_DES_CFB64	1
29913e3f4d6SMark Murray #define	ENCTYPE_DES_OFB64	2
30013e3f4d6SMark Murray #define	ENCTYPE_CNT		3
30113e3f4d6SMark Murray 
30213e3f4d6SMark Murray #ifdef	ENCRYPT_NAMES
30313e3f4d6SMark Murray char *encrypt_names[] = {
30413e3f4d6SMark Murray 	"IS", "SUPPORT", "REPLY", "START", "END",
30513e3f4d6SMark Murray 	"REQUEST-START", "REQUEST-END", "ENC-KEYID", "DEC-KEYID",
30613e3f4d6SMark Murray 	0,
30713e3f4d6SMark Murray };
30813e3f4d6SMark Murray char *enctype_names[] = {
30913e3f4d6SMark Murray 	"ANY", "DES_CFB64",  "DES_OFB64",  0,
31013e3f4d6SMark Murray };
31113e3f4d6SMark Murray #else
31213e3f4d6SMark Murray extern char *encrypt_names[];
31313e3f4d6SMark Murray extern char *enctype_names[];
31413e3f4d6SMark Murray #endif
31513e3f4d6SMark Murray 
31613e3f4d6SMark Murray 
31713e3f4d6SMark Murray #define	ENCRYPT_NAME_OK(x)	((unsigned int)(x) < ENCRYPT_CNT)
31813e3f4d6SMark Murray #define	ENCRYPT_NAME(x)		encrypt_names[x]
31913e3f4d6SMark Murray 
32013e3f4d6SMark Murray #define	ENCTYPE_NAME_OK(x)	((unsigned int)(x) < ENCTYPE_CNT)
32113e3f4d6SMark Murray #define	ENCTYPE_NAME(x)		enctype_names[x]
32213e3f4d6SMark Murray 
32313e3f4d6SMark Murray #endif /* !_TELNET_H_ */
324