153f17a9db278d33517d9888dd77848f554522a38JP Abgrall/* @(#) $Header: /tcpdump/master/tcpdump/telnet.h,v 1.5 2007-08-29 02:31:44 mcr Exp $ (LBL) */
22949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
353f17a9db278d33517d9888dd77848f554522a38JP Abgrall/*	NetBSD: telnet.h,v 1.9 2001/06/11 01:50:50 wiz Exp 	*/
42949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
52949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/*
62949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * Copyright (c) 1983, 1993
72949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *	The Regents of the University of California.  All rights reserved.
82949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *
92949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * Redistribution and use in source and binary forms, with or without
102949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * modification, are permitted provided that the following conditions
112949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * are met:
122949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * 1. Redistributions of source code must retain the above copyright
132949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *    notice, this list of conditions and the following disclaimer.
142949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * 2. Redistributions in binary form must reproduce the above copyright
152949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *    notice, this list of conditions and the following disclaimer in the
162949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *    documentation and/or other materials provided with the distribution.
172949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * 3. All advertising materials mentioning features or use of this software
182949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *    must display the following acknowledgement:
192949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *	This product includes software developed by the University of
202949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *	California, Berkeley and its contributors.
212949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * 4. Neither the name of the University nor the names of its contributors
222949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *    may be used to endorse or promote products derived from this software
232949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *    without specific prior written permission.
242949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *
252949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
262949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
272949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
282949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
292949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
302949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
312949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
322949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
332949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
342949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
352949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * SUCH DAMAGE.
362949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *
372949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *	@(#)telnet.h	8.2 (Berkeley) 12/15/93
382949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project */
392949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
402949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#ifndef _ARPA_TELNET_H_
412949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	_ARPA_TELNET_H_
422949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
432949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/*
442949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * Definitions for the TELNET protocol.
452949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project */
462949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	IAC	255		/* interpret as command: */
472949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	DONT	254		/* you are not to use option */
482949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	DO	253		/* please, you use option */
492949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	WONT	252		/* I won't use option */
502949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	WILL	251		/* I will use option */
512949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	SB	250		/* interpret as subnegotiation */
522949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	GA	249		/* you may reverse the line */
532949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	EL	248		/* erase the current line */
542949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	EC	247		/* erase the current character */
552949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	AYT	246		/* are you there */
562949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	AO	245		/* abort output--but let prog finish */
572949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	IP	244		/* interrupt process--permanently */
582949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	BREAK	243		/* break */
592949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	DM	242		/* data mark--for connect. cleaning */
602949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	NOP	241		/* nop */
612949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	SE	240		/* end sub negotiation */
622949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define EOR     239             /* end of record (transparent mode) */
632949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	ABORT	238		/* Abort process */
642949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	SUSP	237		/* Suspend process */
652949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	xEOF	236		/* End of file: EOF is already used... */
662949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
672949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define SYNCH	242		/* for telfunc calls */
682949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
692949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#ifdef TELCMDS
702949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectconst char *telcmds[] = {
712949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	"EOF", "SUSP", "ABORT", "EOR",
722949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	"SE", "NOP", "DMARK", "BRK", "IP", "AO", "AYT", "EC",
732949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	"EL", "GA", "SB", "WILL", "WONT", "DO", "DONT", "IAC", 0,
742949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project};
752949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#else
762949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectextern char *telcmds[];
772949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#endif
782949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
792949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	TELCMD_FIRST	xEOF
802949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	TELCMD_LAST	IAC
812949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	TELCMD_OK(x)	((unsigned int)(x) <= TELCMD_LAST && \
822949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			 (unsigned int)(x) >= TELCMD_FIRST)
832949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	TELCMD(x)	telcmds[(x)-TELCMD_FIRST]
842949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
852949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/* telnet options */
862949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define TELOPT_BINARY	0	/* 8-bit data path */
872949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define TELOPT_ECHO	1	/* echo */
882949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	TELOPT_RCP	2	/* prepare to reconnect */
892949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	TELOPT_SGA	3	/* suppress go ahead */
902949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	TELOPT_NAMS	4	/* approximate message size */
912949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	TELOPT_STATUS	5	/* give status */
922949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	TELOPT_TM	6	/* timing mark */
932949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	TELOPT_RCTE	7	/* remote controlled transmission and echo */
942949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define TELOPT_NAOL 	8	/* negotiate about output line width */
952949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define TELOPT_NAOP 	9	/* negotiate about output page size */
962949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define TELOPT_NAOCRD	10	/* negotiate about CR disposition */
972949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define TELOPT_NAOHTS	11	/* negotiate about horizontal tabstops */
982949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define TELOPT_NAOHTD	12	/* negotiate about horizontal tab disposition */
992949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define TELOPT_NAOFFD	13	/* negotiate about formfeed disposition */
1002949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define TELOPT_NAOVTS	14	/* negotiate about vertical tab stops */
1012949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define TELOPT_NAOVTD	15	/* negotiate about vertical tab disposition */
1022949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define TELOPT_NAOLFD	16	/* negotiate about output LF disposition */
1032949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define TELOPT_XASCII	17	/* extended ascic character set */
1042949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	TELOPT_LOGOUT	18	/* force logout */
1052949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	TELOPT_BM	19	/* byte macro */
1062949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	TELOPT_DET	20	/* data entry terminal */
1072949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	TELOPT_SUPDUP	21	/* supdup protocol */
1082949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	TELOPT_SUPDUPOUTPUT 22	/* supdup output */
1092949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	TELOPT_SNDLOC	23	/* send location */
1102949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	TELOPT_TTYPE	24	/* terminal type */
1112949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	TELOPT_EOR	25	/* end or record */
1122949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	TELOPT_TUID	26	/* TACACS user identification */
1132949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	TELOPT_OUTMRK	27	/* output marking */
1142949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	TELOPT_TTYLOC	28	/* terminal location number */
1152949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	TELOPT_3270REGIME 29	/* 3270 regime */
1162949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	TELOPT_X3PAD	30	/* X.3 PAD */
1172949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	TELOPT_NAWS	31	/* window size */
1182949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	TELOPT_TSPEED	32	/* terminal speed */
1192949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	TELOPT_LFLOW	33	/* remote flow control */
1202949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define TELOPT_LINEMODE	34	/* Linemode option */
1212949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define TELOPT_XDISPLOC	35	/* X Display Location */
1222949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define TELOPT_OLD_ENVIRON 36	/* Old - Environment variables */
1232949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	TELOPT_AUTHENTICATION 37/* Authenticate */
1242949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	TELOPT_ENCRYPT	38	/* Encryption option */
1252949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define TELOPT_NEW_ENVIRON 39	/* New - Environment variables */
1262949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	TELOPT_EXOPL	255	/* extended-options-list */
1272949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
1282949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
1292949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	NTELOPTS	(1+TELOPT_NEW_ENVIRON)
1302949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#ifdef TELOPTS
1312949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectconst char *telopts[NTELOPTS+1] = {
1322949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	"BINARY", "ECHO", "RCP", "SUPPRESS GO AHEAD", "NAME",
1332949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	"STATUS", "TIMING MARK", "RCTE", "NAOL", "NAOP",
1342949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	"NAOCRD", "NAOHTS", "NAOHTD", "NAOFFD", "NAOVTS",
1352949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	"NAOVTD", "NAOLFD", "EXTEND ASCII", "LOGOUT", "BYTE MACRO",
1362949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	"DATA ENTRY TERMINAL", "SUPDUP", "SUPDUP OUTPUT",
1372949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	"SEND LOCATION", "TERMINAL TYPE", "END OF RECORD",
1382949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	"TACACS UID", "OUTPUT MARKING", "TTYLOC",
1392949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	"3270 REGIME", "X.3 PAD", "NAWS", "TSPEED", "LFLOW",
1402949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	"LINEMODE", "XDISPLOC", "OLD-ENVIRON", "AUTHENTICATION",
1412949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	"ENCRYPT", "NEW-ENVIRON",
1422949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	0,
1432949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project};
1442949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	TELOPT_FIRST	TELOPT_BINARY
1452949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	TELOPT_LAST	TELOPT_NEW_ENVIRON
1462949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	TELOPT_OK(x)	((unsigned int)(x) <= TELOPT_LAST)
1472949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	TELOPT(x)	telopts[(x)-TELOPT_FIRST]
1482949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#endif
1492949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
1502949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/* sub-option qualifiers */
1512949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	TELQUAL_IS	0	/* option is... */
1522949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	TELQUAL_SEND	1	/* send option */
1532949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	TELQUAL_INFO	2	/* ENVIRON: informational version of IS */
1542949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	TELQUAL_REPLY	2	/* AUTHENTICATION: client version of IS */
1552949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	TELQUAL_NAME	3	/* AUTHENTICATION: client version of IS */
1562949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
1572949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	LFLOW_OFF		0	/* Disable remote flow control */
1582949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	LFLOW_ON		1	/* Enable remote flow control */
1592949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	LFLOW_RESTART_ANY	2	/* Restart output on any char */
1602949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	LFLOW_RESTART_XON	3	/* Restart output only on XON */
1612949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
1622949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/*
1632949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * LINEMODE suboptions
1642949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project */
1652949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
1662949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	LM_MODE		1
1672949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	LM_FORWARDMASK	2
1682949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	LM_SLC		3
1692949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
1702949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	MODE_EDIT	0x01
1712949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	MODE_TRAPSIG	0x02
1722949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	MODE_ACK	0x04
1732949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define MODE_SOFT_TAB	0x08
1742949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define MODE_LIT_ECHO	0x10
1752949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
1762949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	MODE_MASK	0x1f
1772949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
1782949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/* Not part of protocol, but needed to simplify things... */
1792949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define MODE_FLOW		0x0100
1802949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define MODE_ECHO		0x0200
1812949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define MODE_INBIN		0x0400
1822949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define MODE_OUTBIN		0x0800
1832949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define MODE_FORCE		0x1000
1842949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
1852949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	SLC_SYNCH	1
1862949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	SLC_BRK		2
1872949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	SLC_IP		3
1882949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	SLC_AO		4
1892949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	SLC_AYT		5
1902949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	SLC_EOR		6
1912949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	SLC_ABORT	7
1922949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	SLC_EOF		8
1932949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	SLC_SUSP	9
1942949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	SLC_EC		10
1952949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	SLC_EL		11
1962949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	SLC_EW		12
1972949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	SLC_RP		13
1982949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	SLC_LNEXT	14
1992949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	SLC_XON		15
2002949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	SLC_XOFF	16
2012949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	SLC_FORW1	17
2022949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	SLC_FORW2	18
2032949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	SLC_MCL         19
2042949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	SLC_MCR         20
2052949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	SLC_MCWL        21
2062949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	SLC_MCWR        22
2072949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	SLC_MCBOL       23
2082949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	SLC_MCEOL       24
2092949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	SLC_INSRT       25
2102949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	SLC_OVER        26
2112949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	SLC_ECR         27
2122949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	SLC_EWR         28
2132949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	SLC_EBOL        29
2142949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	SLC_EEOL        30
2152949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
2162949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	NSLC		30
2172949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
2182949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/*
2192949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * For backwards compatibility, we define SLC_NAMES to be the
2202949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * list of names if SLC_NAMES is not defined.
2212949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project */
2222949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	SLC_NAMELIST	"0", "SYNCH", "BRK", "IP", "AO", "AYT", "EOR",	\
2232949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			"ABORT", "EOF", "SUSP", "EC", "EL", "EW", "RP",	\
2242949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			"LNEXT", "XON", "XOFF", "FORW1", "FORW2",	\
2252949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			"MCL", "MCR", "MCWL", "MCWR", "MCBOL",		\
2262949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			"MCEOL", "INSRT", "OVER", "ECR", "EWR",		\
2272949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			"EBOL", "EEOL",					\
2282949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			0,
2292949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
2302949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#ifdef	SLC_NAMES
2312949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectconst char *slc_names[] = {
2322949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	SLC_NAMELIST
2332949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project};
2342949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#else
2352949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectextern char *slc_names[];
2362949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	SLC_NAMES SLC_NAMELIST
2372949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#endif
2382949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
2392949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	SLC_NAME_OK(x)	((unsigned int)(x) <= NSLC)
2402949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define SLC_NAME(x)	slc_names[x]
2412949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
2422949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	SLC_NOSUPPORT	0
2432949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	SLC_CANTCHANGE	1
2442949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	SLC_VARIABLE	2
2452949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	SLC_DEFAULT	3
2462949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	SLC_LEVELBITS	0x03
2472949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
2482949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	SLC_FUNC	0
2492949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	SLC_FLAGS	1
2502949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	SLC_VALUE	2
2512949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
2522949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	SLC_ACK		0x80
2532949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	SLC_FLUSHIN	0x40
2542949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	SLC_FLUSHOUT	0x20
2552949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
2562949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	OLD_ENV_VAR	1
2572949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	OLD_ENV_VALUE	0
2582949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	NEW_ENV_VAR	0
2592949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	NEW_ENV_VALUE	1
2602949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	ENV_ESC		2
2612949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define ENV_USERVAR	3
2622949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
2632949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/*
2642949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * AUTHENTICATION suboptions
2652949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project */
2662949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
2672949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/*
2682949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * Who is authenticating who ...
2692949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project */
2702949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	AUTH_WHO_CLIENT		0	/* Client authenticating server */
2712949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	AUTH_WHO_SERVER		1	/* Server authenticating client */
2722949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	AUTH_WHO_MASK		1
2732949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
2742949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/*
2752949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * amount of authentication done
2762949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project */
2772949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	AUTH_HOW_ONE_WAY	0
2782949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	AUTH_HOW_MUTUAL		2
2792949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	AUTH_HOW_MASK		2
2802949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
2812949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/*
2822949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * should we be encrypting? (not yet formally standardized)
2832949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project */
2842949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define AUTH_ENCRYPT_OFF	0
2852949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define AUTH_ENCRYPT_ON		4
2862949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define AUTH_ENCRYPT_MASK	4
2872949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
2882949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	AUTHTYPE_NULL		0
2892949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	AUTHTYPE_KERBEROS_V4	1
2902949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	AUTHTYPE_KERBEROS_V5	2
2912949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	AUTHTYPE_SPX		3
2922949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	AUTHTYPE_MINK		4
2932949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	AUTHTYPE_CNT		5
2942949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
2952949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	AUTHTYPE_TEST		99
2962949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
2972949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#ifdef	AUTH_NAMES
2982949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectconst char *authtype_names[] = {
2992949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	"NULL", "KERBEROS_V4", "KERBEROS_V5", "SPX", "MINK", 0,
3002949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project};
3012949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#else
3022949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectextern char *authtype_names[];
3032949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#endif
3042949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
3052949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	AUTHTYPE_NAME_OK(x)	((unsigned int)(x) < AUTHTYPE_CNT)
3062949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	AUTHTYPE_NAME(x)	authtype_names[x]
3072949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
3082949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/*
3092949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * ENCRYPTion suboptions
3102949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project */
3112949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	ENCRYPT_IS		0	/* I pick encryption type ... */
3122949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	ENCRYPT_SUPPORT		1	/* I support encryption types ... */
3132949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	ENCRYPT_REPLY		2	/* Initial setup response */
3142949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	ENCRYPT_START		3	/* Am starting to send encrypted */
3152949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	ENCRYPT_END		4	/* Am ending encrypted */
3162949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	ENCRYPT_REQSTART	5	/* Request you start encrypting */
3172949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	ENCRYPT_REQEND		6	/* Request you send encrypting */
3182949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	ENCRYPT_ENC_KEYID	7
3192949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	ENCRYPT_DEC_KEYID	8
3202949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	ENCRYPT_CNT		9
3212949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
3222949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	ENCTYPE_ANY		0
3232949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	ENCTYPE_DES_CFB64	1
3242949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	ENCTYPE_DES_OFB64	2
3252949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	ENCTYPE_CNT		3
3262949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
3272949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#ifdef	ENCRYPT_NAMES
3282949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectconst char *encrypt_names[] = {
3292949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	"IS", "SUPPORT", "REPLY", "START", "END",
3302949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	"REQUEST-START", "REQUEST-END", "ENC-KEYID", "DEC-KEYID",
3312949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	0,
3322949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project};
3332949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectconst char *enctype_names[] = {
3342949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	"ANY", "DES_CFB64",  "DES_OFB64",  0,
3352949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project};
3362949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#else
3372949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectextern char *encrypt_names[];
3382949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectextern char *enctype_names[];
3392949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#endif
3402949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
3412949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
3422949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	ENCRYPT_NAME_OK(x)	((unsigned int)(x) < ENCRYPT_CNT)
3432949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	ENCRYPT_NAME(x)		encrypt_names[x]
3442949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
3452949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	ENCTYPE_NAME_OK(x)	((unsigned int)(x) < ENCTYPE_CNT)
3462949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	ENCTYPE_NAME(x)		enctype_names[x]
3472949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
3482949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#endif /* _ARPA_TELNET_H_ */
349