/*
    OW -- One-Wire filesystem
    version 0.4 7/2/2003

*/

#ifndef OW_TELNET_H			/* tedious wrapper */
#define OW_TELNET_H

// Defnitions for telnet protocol
// Mostly lifted from arpa/telnet.h
// Added RFC2217 COM PORT CONTROL

/*
 * Definitions for the TELNET protocol.
 */
 // added TELNET_ prefix
#define	TELNET_IAC	255		/* interpret as command: */
#define	TELNET_DONT	254		/*  you are not to use option */
#define	TELNET_DO	253		/* please, you use option */
#define	TELNET_WONT	252		/* I won't use option */
#define	TELNET_WILL	251		/* I will use option */
#define	TELNET_SB	250		/* interpret as subnegotiation */
#define	TELNET_GA	249		/* you may reverse the line */
#define	TELNET_EL	248		/* erase the current line */
#define	TELNET_EC	247		/* erase the current character */
#define	TELNET_AYT	246		/* are you there */
#define	TELNET_AO	245		/* abort output--but let prog finish */
#define	TELNET_IP	244		/* interrupt process--permanently */
#define	TELNET_BREAK	243		/* break */
#define	TELNET_DM	242		/* data mark--for connect. cleaning */
#define	TELNET_NOP	241		/* nop */
#define	TELNET_SE	240		/* end sub negotiation */
#define TELNET_EOR     239             /* end of record (transparent mode) */
#define	TELNET_ABORT	238		/* Abort process */
#define	TELNET_SUSP	237		/* Suspend process */
#define	TELNET_EOF	236		/* End of file: EOF is already used... */

#define TELNET_SYNCH	242		/* for telfunc calls */

/* telnet options */
#define TELOPT_BINARY	0	/* 8-bit data path */
#define TELOPT_ECHO	1	/* echo */
#define	TELOPT_RCP	2	/* prepare to reconnect */
#define	TELOPT_SGA	3	/* suppress go ahead */
#define	TELOPT_NAMS	4	/* approximate message size */
#define	TELOPT_STATUS	5	/* give status */
#define	TELOPT_TM	6	/* timing mark */
#define	TELOPT_RCTE	7	/* remote controlled transmission and echo */
#define TELOPT_NAOL 	8	/* negotiate about output line width */
#define TELOPT_NAOP 	9	/* negotiate about output page size */
#define TELOPT_NAOCRD	10	/* negotiate about CR disposition */
#define TELOPT_NAOHTS	11	/* negotiate about horizontal tabstops */
#define TELOPT_NAOHTD	12	/* negotiate about horizontal tab disposition */
#define TELOPT_NAOFFD	13	/* negotiate about formfeed disposition */
#define TELOPT_NAOVTS	14	/* negotiate about vertical tab stops */
#define TELOPT_NAOVTD	15	/* negotiate about vertical tab disposition */
#define TELOPT_NAOLFD	16	/* negotiate about output LF disposition */
#define TELOPT_XASCII	17	/* extended ascii character set */
#define	TELOPT_LOGOUT	18	/* force logout */
#define	TELOPT_BM	19	/* byte macro */
#define	TELOPT_DET	20	/* data entry terminal */
#define	TELOPT_SUPDUP	21	/* supdup protocol */
#define	TELOPT_SUPDUPOUTPUT 22	/* supdup output */
#define	TELOPT_SNDLOC	23	/* send location */
#define	TELOPT_TTYPE	24	/* terminal type */
#define	TELOPT_EOR	25	/* end or record */
#define	TELOPT_TUID	26	/* TACACS user identification */
#define	TELOPT_OUTMRK	27	/* output marking */
#define	TELOPT_TTYLOC	28	/* terminal location number */
#define	TELOPT_3270REGIME 29	/* 3270 regime */
#define	TELOPT_X3PAD	30	/* X.3 PAD */
#define	TELOPT_NAWS	31	/* window size */
#define	TELOPT_TSPEED	32	/* terminal speed */
#define	TELOPT_LFLOW	33	/* remote flow control */
#define TELOPT_LINEMODE	34	/* Linemode option */
#define TELOPT_XDISPLOC	35	/* X Display Location */
#define TELOPT_OLD_ENVIRON 36	/* Old - Environment variables */
#define	TELOPT_AUTHENTICATION 37/* Authenticate */
#define	TELOPT_ENCRYPT	38	/* Encryption option */
#define TELOPT_NEW_ENVIRON 39	/* New - Environment variables */
// Add RFC2217 serial port setup
#define TELOPT_COM_PORT 44  /* RFC 2217 Com port control */
#define	TELOPT_EXOPL	255	/* extended-options-list */

// From RFC2217 Options
#define COMOPT_BAUDRATE    1 
#define COMOPT_DATASIZE    2 
#define COMOPT_PARITY      3 
#define COMOPT_STOPSIZE    4 
#define COMOPT_CONTROL     5 
#define COMOPT_LINESTATE   6 
#define COMOPT_MODEMSTATE  7 
#define COMOPT_SUSPEND     8 
#define COMOPT_RESUME      9 
#define COMOPT_LINEMASK    10 
#define COMOPT_MODEMMASK   11 
#define COMOPT_PURGE       12 


/* sub-option qualifiers */
#define	TELQUAL_IS	0	/* option is... */
#define	TELQUAL_SEND	1	/* send option */
#define	TELQUAL_INFO	2	/* ENVIRON: informational version of IS */
#define	TELQUAL_REPLY	2	/* AUTHENTICATION: client version of IS */
#define	TELQUAL_NAME	3	/* AUTHENTICATION: client version of IS */

#define	LFLOW_OFF		0	/* Disable remote flow control */
#define	LFLOW_ON		1	/* Enable remote flow control */
#define	LFLOW_RESTART_ANY	2	/* Restart output on any char */
#define	LFLOW_RESTART_XON	3	/* Restart output only on XON */

/*
 * LINEMODE suboptions
 */

#define	LM_MODE		1
#define	LM_FORWARDMASK	2
#define	LM_SLC		3

#define	MODE_EDIT	0x01
#define	MODE_TRAPSIG	0x02
#define	MODE_ACK	0x04
#define MODE_SOFT_TAB	0x08
#define MODE_LIT_ECHO	0x10

#define	MODE_MASK	0x1f

/* Not part of protocol, but needed to simplify things... */
#define MODE_FLOW		0x0100
#define MODE_ECHO		0x0200
#define MODE_INBIN		0x0400
#define MODE_OUTBIN		0x0800
#define MODE_FORCE		0x1000

#define	SLC_SYNCH	1
#define	SLC_BRK		2
#define	SLC_IP		3
#define	SLC_AO		4
#define	SLC_AYT		5
#define	SLC_EOR		6
#define	SLC_ABORT	7
#define	SLC_EOF		8
#define	SLC_SUSP	9
#define	SLC_EC		10
#define	SLC_EL		11
#define	SLC_EW		12
#define	SLC_RP		13
#define	SLC_LNEXT	14
#define	SLC_XON		15
#define	SLC_XOFF	16
#define	SLC_FORW1	17
#define	SLC_FORW2	18

#define	NSLC		18

#define	SLC_NOSUPPORT	0
#define	SLC_CANTCHANGE	1
#define	SLC_VARIABLE	2
#define	SLC_DEFAULT	3
#define	SLC_LEVELBITS	0x03

#define	SLC_FUNC	0
#define	SLC_FLAGS	1
#define	SLC_VALUE	2

#define	SLC_ACK		0x80
#define	SLC_FLUSHIN	0x40
#define	SLC_FLUSHOUT	0x20

#define	OLD_ENV_VAR	1
#define	OLD_ENV_VALUE	0
#define	NEW_ENV_VAR	0
#define	NEW_ENV_VALUE	1
#define	ENV_ESC		2
#define ENV_USERVAR	3

#endif							/* OW_TELNET_H */
