/******************************************************************************
* TinTin++ *
* Copyright (C) 2004 (See CREDITS file) *
* *
* This program is protected under the GNU GPL (See COPYING) *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the Free Software *
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *
*******************************************************************************/
/*
telnet protocol.
*/
#define IAC 255
#define DONT 254
#define DO 253
#define WONT 252
#define WILL 251
#define SB 250
#define GA 249 /* Used for prompt marking */
#define EL 248
#define EC 247
#define AYT 246
#define AO 245
#define IP 244
#define BREAK 243
#define DM 242
#define NOP 241
#define SE 240
#define EOR 239 /* Used for prompt marking */
#define ABORT 238
#define SUSP 237
#define xEOF 236
/*
telnet options
*/
#define TELOPT_BINARY 0
#define TELOPT_ECHO 1 /* Echo */
#define TELOPT_RCP 2
#define TELOPT_SGA 3 /* Supress Go Ahead */
#define TELOPT_NAMS 4
#define TELOPT_STATUS 5
#define TELOPT_TIMINGMARK 6
#define TELOPT_RCTE 7
#define TELOPT_NAOL 8
#define TELOPT_NAOP 9
#define TELOPT_NAOCRD 10
#define TELOPT_NAOHTS 11
#define TELOPT_NAOHTD 12
#define TELOPT_NAOFFD 13
#define TELOPT_NAOVTS 14
#define TELOPT_NAOVTD 15
#define TELOPT_NAOLFD 16
#define TELOPT_XASCII 17
#define TELOPT_LOGOUT 18
#define TELOPT_BM 19
#define TELOPT_DET 20
#define TELOPT_SUPDUP 21
#define TELOPT_SUPDUPOUTPUT 22
#define TELOPT_SNDLOC 23
#define TELOPT_TTYPE 24 /* Terminal Type */
#define TELOPT_EOR 25 /* End of Record */
#define TELOPT_TUID 26
#define TELOPT_OUTMRK 27
#define TELOPT_TTYLOC 28
#define TELOPT_3270REGIME 29
#define TELOPT_X3PAD 30
#define TELOPT_NAWS 31 /* Negotiate About Window Size */
#define TELOPT_TSPEED 32
#define TELOPT_LFLOW 33
#define TELOPT_LINEMODE 34
#define TELOPT_XDISPLOC 35
#define TELOPT_OLD_ENVIRON 36
#define TELOPT_AUTH 37
#define TELOPT_ENCRYPT 38
#define TELOPT_NEW_ENVIRON 39
#define TELOPT_STARTTLS 46
#define TELOPT_MSDP 69 /* Mud Server Data Protocol */
#define TELOPT_MSSP 70 /* Mud Server Status Protocol */
#define TELOPT_MCCP1 85
#define TELOPT_MCCP2 86 /* Mud Client Compression Protocol */
#define TELOPT_MSP 90 /* Mud Sound Protocol */
#define TELOPT_MXP 91 /* Mud eXtention Protocol */
#define TELOPT_ZMP 93 /* Zenith Mud Protocol */
#define TELOPT_GMCP 201 /* Generic Mud Communication Protocol */
#define TELOPT_EXOPL 255
char *telcmds[] =
{
"EOF", "SUSP", "ABORT", "EOR", "SE",
"NOP", "DMARK", "BRK", "IP", "AO",
"AYT", "EC", "EL", "GA", "SB",
"WILL", "WONT", "DO", "DONT", "IAC",
};
#define TELCMD_OK(c) ((c) >= xEOF)
#define TELCMD(c) telcmds[(c)-xEOF]
#define TELOPT(c) (telnet_table[(unsigned char) (c)].name)
/*
Sub negotiation
*/
#define ENV_IS 0
#define ENV_SEND 1
#define ENV_INFO 2
#define ENV_VAR 0
#define ENV_VAL 1
#define ENV_ESC 2 /* Not implemented in tintin */
#define ENV_USR 3
#define MSSP_VAR 1
#define MSSP_VAL 2
#define MSDP_VAR 1
#define MSDP_VAL 2
#define MSDP_OPEN 3
#define MSDP_CLOSE 4