Blame inet/arpa/telnet.h

Packit 6c4009
/*
Packit 6c4009
 * Copyright (c) 1983, 1993
Packit 6c4009
 *	The Regents of the University of California.  All rights reserved.
Packit 6c4009
 *
Packit 6c4009
 * Redistribution and use in source and binary forms, with or without
Packit 6c4009
 * modification, are permitted provided that the following conditions
Packit 6c4009
 * are met:
Packit 6c4009
 * 1. Redistributions of source code must retain the above copyright
Packit 6c4009
 *    notice, this list of conditions and the following disclaimer.
Packit 6c4009
 * 2. Redistributions in binary form must reproduce the above copyright
Packit 6c4009
 *    notice, this list of conditions and the following disclaimer in the
Packit 6c4009
 *    documentation and/or other materials provided with the distribution.
Packit 6c4009
 * 4. Neither the name of the University nor the names of its contributors
Packit 6c4009
 *    may be used to endorse or promote products derived from this software
Packit 6c4009
 *    without specific prior written permission.
Packit 6c4009
 *
Packit 6c4009
 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
Packit 6c4009
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
Packit 6c4009
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
Packit 6c4009
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
Packit 6c4009
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
Packit 6c4009
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
Packit 6c4009
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
Packit 6c4009
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
Packit 6c4009
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
Packit 6c4009
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
Packit 6c4009
 * SUCH DAMAGE.
Packit 6c4009
 *
Packit 6c4009
 *	@(#)telnet.h	8.2 (Berkeley) 12/15/93
Packit 6c4009
 */
Packit 6c4009
Packit 6c4009
#ifndef _ARPA_TELNET_H
Packit 6c4009
#define	_ARPA_TELNET_H 1
Packit 6c4009
Packit 6c4009
/*
Packit 6c4009
 * Definitions for the TELNET protocol.
Packit 6c4009
 */
Packit 6c4009
#define	IAC	255		/* interpret as command: */
Packit 6c4009
#define	DONT	254		/* you are not to use option */
Packit 6c4009
#define	DO	253		/* please, you use option */
Packit 6c4009
#define	WONT	252		/* I won't use option */
Packit 6c4009
#define	WILL	251		/* I will use option */
Packit 6c4009
#define	SB	250		/* interpret as subnegotiation */
Packit 6c4009
#define	GA	249		/* you may reverse the line */
Packit 6c4009
#define	EL	248		/* erase the current line */
Packit 6c4009
#define	EC	247		/* erase the current character */
Packit 6c4009
#define	AYT	246		/* are you there */
Packit 6c4009
#define	AO	245		/* abort output--but let prog finish */
Packit 6c4009
#define	IP	244		/* interrupt process--permanently */
Packit 6c4009
#define	BREAK	243		/* break */
Packit 6c4009
#define	DM	242		/* data mark--for connect. cleaning */
Packit 6c4009
#define	NOP	241		/* nop */
Packit 6c4009
#define	SE	240		/* end sub negotiation */
Packit 6c4009
#define EOR     239             /* end of record (transparent mode) */
Packit 6c4009
#define	ABORT	238		/* Abort process */
Packit 6c4009
#define	SUSP	237		/* Suspend process */
Packit 6c4009
#define	xEOF	236		/* End of file: EOF is already used... */
Packit 6c4009
Packit 6c4009
#define SYNCH	242		/* for telfunc calls */
Packit 6c4009
Packit 6c4009
#ifdef TELCMDS
Packit 6c4009
char *telcmds[] = {
Packit 6c4009
	"EOF", "SUSP", "ABORT", "EOR",
Packit 6c4009
	"SE", "NOP", "DMARK", "BRK", "IP", "AO", "AYT", "EC",
Packit 6c4009
	"EL", "GA", "SB", "WILL", "WONT", "DO", "DONT", "IAC", 0,
Packit 6c4009
};
Packit 6c4009
#else
Packit 6c4009
extern char *telcmds[];
Packit 6c4009
#endif
Packit 6c4009
Packit 6c4009
#define	TELCMD_FIRST	xEOF
Packit 6c4009
#define	TELCMD_LAST	IAC
Packit 6c4009
#define	TELCMD_OK(x)	((unsigned int)(x) <= TELCMD_LAST && \
Packit 6c4009
			 (unsigned int)(x) >= TELCMD_FIRST)
Packit 6c4009
#define	TELCMD(x)	telcmds[(x)-TELCMD_FIRST]
Packit 6c4009
Packit 6c4009
/* telnet options */
Packit 6c4009
#define TELOPT_BINARY	0	/* 8-bit data path */
Packit 6c4009
#define TELOPT_ECHO	1	/* echo */
Packit 6c4009
#define	TELOPT_RCP	2	/* prepare to reconnect */
Packit 6c4009
#define	TELOPT_SGA	3	/* suppress go ahead */
Packit 6c4009
#define	TELOPT_NAMS	4	/* approximate message size */
Packit 6c4009
#define	TELOPT_STATUS	5	/* give status */
Packit 6c4009
#define	TELOPT_TM	6	/* timing mark */
Packit 6c4009
#define	TELOPT_RCTE	7	/* remote controlled transmission and echo */
Packit 6c4009
#define TELOPT_NAOL 	8	/* negotiate about output line width */
Packit 6c4009
#define TELOPT_NAOP 	9	/* negotiate about output page size */
Packit 6c4009
#define TELOPT_NAOCRD	10	/* negotiate about CR disposition */
Packit 6c4009
#define TELOPT_NAOHTS	11	/* negotiate about horizontal tabstops */
Packit 6c4009
#define TELOPT_NAOHTD	12	/* negotiate about horizontal tab disposition */
Packit 6c4009
#define TELOPT_NAOFFD	13	/* negotiate about formfeed disposition */
Packit 6c4009
#define TELOPT_NAOVTS	14	/* negotiate about vertical tab stops */
Packit 6c4009
#define TELOPT_NAOVTD	15	/* negotiate about vertical tab disposition */
Packit 6c4009
#define TELOPT_NAOLFD	16	/* negotiate about output LF disposition */
Packit 6c4009
#define TELOPT_XASCII	17	/* extended ascii character set */
Packit 6c4009
#define	TELOPT_LOGOUT	18	/* force logout */
Packit 6c4009
#define	TELOPT_BM	19	/* byte macro */
Packit 6c4009
#define	TELOPT_DET	20	/* data entry terminal */
Packit 6c4009
#define	TELOPT_SUPDUP	21	/* supdup protocol */
Packit 6c4009
#define	TELOPT_SUPDUPOUTPUT 22	/* supdup output */
Packit 6c4009
#define	TELOPT_SNDLOC	23	/* send location */
Packit 6c4009
#define	TELOPT_TTYPE	24	/* terminal type */
Packit 6c4009
#define	TELOPT_EOR	25	/* end or record */
Packit 6c4009
#define	TELOPT_TUID	26	/* TACACS user identification */
Packit 6c4009
#define	TELOPT_OUTMRK	27	/* output marking */
Packit 6c4009
#define	TELOPT_TTYLOC	28	/* terminal location number */
Packit 6c4009
#define	TELOPT_3270REGIME 29	/* 3270 regime */
Packit 6c4009
#define	TELOPT_X3PAD	30	/* X.3 PAD */
Packit 6c4009
#define	TELOPT_NAWS	31	/* window size */
Packit 6c4009
#define	TELOPT_TSPEED	32	/* terminal speed */
Packit 6c4009
#define	TELOPT_LFLOW	33	/* remote flow control */
Packit 6c4009
#define TELOPT_LINEMODE	34	/* Linemode option */
Packit 6c4009
#define TELOPT_XDISPLOC	35	/* X Display Location */
Packit 6c4009
#define TELOPT_OLD_ENVIRON 36	/* Old - Environment variables */
Packit 6c4009
#define	TELOPT_AUTHENTICATION 37/* Authenticate */
Packit 6c4009
#define	TELOPT_ENCRYPT	38	/* Encryption option */
Packit 6c4009
#define TELOPT_NEW_ENVIRON 39	/* New - Environment variables */
Packit 6c4009
#define	TELOPT_EXOPL	255	/* extended-options-list */
Packit 6c4009
Packit 6c4009
Packit 6c4009
#define	NTELOPTS	(1+TELOPT_NEW_ENVIRON)
Packit 6c4009
#ifdef TELOPTS
Packit 6c4009
char *telopts[NTELOPTS+1] = {
Packit 6c4009
	"BINARY", "ECHO", "RCP", "SUPPRESS GO AHEAD", "NAME",
Packit 6c4009
	"STATUS", "TIMING MARK", "RCTE", "NAOL", "NAOP",
Packit 6c4009
	"NAOCRD", "NAOHTS", "NAOHTD", "NAOFFD", "NAOVTS",
Packit 6c4009
	"NAOVTD", "NAOLFD", "EXTEND ASCII", "LOGOUT", "BYTE MACRO",
Packit 6c4009
	"DATA ENTRY TERMINAL", "SUPDUP", "SUPDUP OUTPUT",
Packit 6c4009
	"SEND LOCATION", "TERMINAL TYPE", "END OF RECORD",
Packit 6c4009
	"TACACS UID", "OUTPUT MARKING", "TTYLOC",
Packit 6c4009
	"3270 REGIME", "X.3 PAD", "NAWS", "TSPEED", "LFLOW",
Packit 6c4009
	"LINEMODE", "XDISPLOC", "OLD-ENVIRON", "AUTHENTICATION",
Packit 6c4009
	"ENCRYPT", "NEW-ENVIRON",
Packit 6c4009
	0,
Packit 6c4009
};
Packit 6c4009
#define	TELOPT_FIRST	TELOPT_BINARY
Packit 6c4009
#define	TELOPT_LAST	TELOPT_NEW_ENVIRON
Packit 6c4009
#define	TELOPT_OK(x)	((unsigned int)(x) <= TELOPT_LAST)
Packit 6c4009
#define	TELOPT(x)	telopts[(x)-TELOPT_FIRST]
Packit 6c4009
#endif
Packit 6c4009
Packit 6c4009
/* sub-option qualifiers */
Packit 6c4009
#define	TELQUAL_IS	0	/* option is... */
Packit 6c4009
#define	TELQUAL_SEND	1	/* send option */
Packit 6c4009
#define	TELQUAL_INFO	2	/* ENVIRON: informational version of IS */
Packit 6c4009
#define	TELQUAL_REPLY	2	/* AUTHENTICATION: client version of IS */
Packit 6c4009
#define	TELQUAL_NAME	3	/* AUTHENTICATION: client version of IS */
Packit 6c4009
Packit 6c4009
#define	LFLOW_OFF		0	/* Disable remote flow control */
Packit 6c4009
#define	LFLOW_ON		1	/* Enable remote flow control */
Packit 6c4009
#define	LFLOW_RESTART_ANY	2	/* Restart output on any char */
Packit 6c4009
#define	LFLOW_RESTART_XON	3	/* Restart output only on XON */
Packit 6c4009
Packit 6c4009
/*
Packit 6c4009
 * LINEMODE suboptions
Packit 6c4009
 */
Packit 6c4009
Packit 6c4009
#define	LM_MODE		1
Packit 6c4009
#define	LM_FORWARDMASK	2
Packit 6c4009
#define	LM_SLC		3
Packit 6c4009
Packit 6c4009
#define	MODE_EDIT	0x01
Packit 6c4009
#define	MODE_TRAPSIG	0x02
Packit 6c4009
#define	MODE_ACK	0x04
Packit 6c4009
#define MODE_SOFT_TAB	0x08
Packit 6c4009
#define MODE_LIT_ECHO	0x10
Packit 6c4009
Packit 6c4009
#define	MODE_MASK	0x1f
Packit 6c4009
Packit 6c4009
/* Not part of protocol, but needed to simplify things... */
Packit 6c4009
#define MODE_FLOW		0x0100
Packit 6c4009
#define MODE_ECHO		0x0200
Packit 6c4009
#define MODE_INBIN		0x0400
Packit 6c4009
#define MODE_OUTBIN		0x0800
Packit 6c4009
#define MODE_FORCE		0x1000
Packit 6c4009
Packit 6c4009
#define	SLC_SYNCH	1
Packit 6c4009
#define	SLC_BRK		2
Packit 6c4009
#define	SLC_IP		3
Packit 6c4009
#define	SLC_AO		4
Packit 6c4009
#define	SLC_AYT		5
Packit 6c4009
#define	SLC_EOR		6
Packit 6c4009
#define	SLC_ABORT	7
Packit 6c4009
#define	SLC_EOF		8
Packit 6c4009
#define	SLC_SUSP	9
Packit 6c4009
#define	SLC_EC		10
Packit 6c4009
#define	SLC_EL		11
Packit 6c4009
#define	SLC_EW		12
Packit 6c4009
#define	SLC_RP		13
Packit 6c4009
#define	SLC_LNEXT	14
Packit 6c4009
#define	SLC_XON		15
Packit 6c4009
#define	SLC_XOFF	16
Packit 6c4009
#define	SLC_FORW1	17
Packit 6c4009
#define	SLC_FORW2	18
Packit 6c4009
Packit 6c4009
#define	NSLC		18
Packit 6c4009
Packit 6c4009
/*
Packit 6c4009
 * For backwards compatibility, we define SLC_NAMES to be the
Packit 6c4009
 * list of names if SLC_NAMES is not defined.
Packit 6c4009
 */
Packit 6c4009
#define	SLC_NAMELIST	"0", "SYNCH", "BRK", "IP", "AO", "AYT", "EOR", \
Packit 6c4009
			"ABORT", "EOF", "SUSP", "EC", "EL", "EW", "RP", \
Packit 6c4009
			"LNEXT", "XON", "XOFF", "FORW1", "FORW2", 0,
Packit 6c4009
#ifdef	SLC_NAMES
Packit 6c4009
char *slc_names[] = {
Packit 6c4009
	SLC_NAMELIST
Packit 6c4009
};
Packit 6c4009
#else
Packit 6c4009
extern char *slc_names[];
Packit 6c4009
#define	SLC_NAMES SLC_NAMELIST
Packit 6c4009
#endif
Packit 6c4009
Packit 6c4009
#define	SLC_NAME_OK(x)	((unsigned int)(x) <= NSLC)
Packit 6c4009
#define SLC_NAME(x)	slc_names[x]
Packit 6c4009
Packit 6c4009
#define	SLC_NOSUPPORT	0
Packit 6c4009
#define	SLC_CANTCHANGE	1
Packit 6c4009
#define	SLC_VARIABLE	2
Packit 6c4009
#define	SLC_DEFAULT	3
Packit 6c4009
#define	SLC_LEVELBITS	0x03
Packit 6c4009
Packit 6c4009
#define	SLC_FUNC	0
Packit 6c4009
#define	SLC_FLAGS	1
Packit 6c4009
#define	SLC_VALUE	2
Packit 6c4009
Packit 6c4009
#define	SLC_ACK		0x80
Packit 6c4009
#define	SLC_FLUSHIN	0x40
Packit 6c4009
#define	SLC_FLUSHOUT	0x20
Packit 6c4009
Packit 6c4009
#define	OLD_ENV_VAR	1
Packit 6c4009
#define	OLD_ENV_VALUE	0
Packit 6c4009
#define	NEW_ENV_VAR	0
Packit 6c4009
#define	NEW_ENV_VALUE	1
Packit 6c4009
#define	ENV_ESC		2
Packit 6c4009
#define ENV_USERVAR	3
Packit 6c4009
Packit 6c4009
/*
Packit 6c4009
 * AUTHENTICATION suboptions
Packit 6c4009
 */
Packit 6c4009
Packit 6c4009
/*
Packit 6c4009
 * Who is authenticating who ...
Packit 6c4009
 */
Packit 6c4009
#define	AUTH_WHO_CLIENT		0	/* Client authenticating server */
Packit 6c4009
#define	AUTH_WHO_SERVER		1	/* Server authenticating client */
Packit 6c4009
#define	AUTH_WHO_MASK		1
Packit 6c4009
Packit 6c4009
/*
Packit 6c4009
 * amount of authentication done
Packit 6c4009
 */
Packit 6c4009
#define	AUTH_HOW_ONE_WAY	0
Packit 6c4009
#define	AUTH_HOW_MUTUAL		2
Packit 6c4009
#define	AUTH_HOW_MASK		2
Packit 6c4009
Packit 6c4009
#define	AUTHTYPE_NULL		0
Packit 6c4009
#define	AUTHTYPE_KERBEROS_V4	1
Packit 6c4009
#define	AUTHTYPE_KERBEROS_V5	2
Packit 6c4009
#define	AUTHTYPE_SPX		3
Packit 6c4009
#define	AUTHTYPE_MINK		4
Packit 6c4009
#define	AUTHTYPE_CNT		5
Packit 6c4009
Packit 6c4009
#define	AUTHTYPE_TEST		99
Packit 6c4009
Packit 6c4009
#ifdef	AUTH_NAMES
Packit 6c4009
char *authtype_names[] = {
Packit 6c4009
	"NULL", "KERBEROS_V4", "KERBEROS_V5", "SPX", "MINK", 0,
Packit 6c4009
};
Packit 6c4009
#else
Packit 6c4009
extern char *authtype_names[];
Packit 6c4009
#endif
Packit 6c4009
Packit 6c4009
#define	AUTHTYPE_NAME_OK(x)	((unsigned int)(x) < AUTHTYPE_CNT)
Packit 6c4009
#define	AUTHTYPE_NAME(x)	authtype_names[x]
Packit 6c4009
Packit 6c4009
/*
Packit 6c4009
 * ENCRYPTion suboptions
Packit 6c4009
 */
Packit 6c4009
#define	ENCRYPT_IS		0	/* I pick encryption type ... */
Packit 6c4009
#define	ENCRYPT_SUPPORT		1	/* I support encryption types ... */
Packit 6c4009
#define	ENCRYPT_REPLY		2	/* Initial setup response */
Packit 6c4009
#define	ENCRYPT_START		3	/* Am starting to send encrypted */
Packit 6c4009
#define	ENCRYPT_END		4	/* Am ending encrypted */
Packit 6c4009
#define	ENCRYPT_REQSTART	5	/* Request you start encrypting */
Packit 6c4009
#define	ENCRYPT_REQEND		6	/* Request you send encrypting */
Packit 6c4009
#define	ENCRYPT_ENC_KEYID	7
Packit 6c4009
#define	ENCRYPT_DEC_KEYID	8
Packit 6c4009
#define	ENCRYPT_CNT		9
Packit 6c4009
Packit 6c4009
#define	ENCTYPE_ANY		0
Packit 6c4009
#define	ENCTYPE_DES_CFB64	1
Packit 6c4009
#define	ENCTYPE_DES_OFB64	2
Packit 6c4009
#define	ENCTYPE_CNT		3
Packit 6c4009
Packit 6c4009
#ifdef	ENCRYPT_NAMES
Packit 6c4009
char *encrypt_names[] = {
Packit 6c4009
	"IS", "SUPPORT", "REPLY", "START", "END",
Packit 6c4009
	"REQUEST-START", "REQUEST-END", "ENC-KEYID", "DEC-KEYID",
Packit 6c4009
	0,
Packit 6c4009
};
Packit 6c4009
char *enctype_names[] = {
Packit 6c4009
	"ANY", "DES_CFB64",  "DES_OFB64",  0,
Packit 6c4009
};
Packit 6c4009
#else
Packit 6c4009
extern char *encrypt_names[];
Packit 6c4009
extern char *enctype_names[];
Packit 6c4009
#endif
Packit 6c4009
Packit 6c4009
Packit 6c4009
#define	ENCRYPT_NAME_OK(x)	((unsigned int)(x) < ENCRYPT_CNT)
Packit 6c4009
#define	ENCRYPT_NAME(x)		encrypt_names[x]
Packit 6c4009
Packit 6c4009
#define	ENCTYPE_NAME_OK(x)	((unsigned int)(x) < ENCTYPE_CNT)
Packit 6c4009
#define	ENCTYPE_NAME(x)		enctype_names[x]
Packit 6c4009
Packit 6c4009
#endif /* arpa/telnet.h */