1162852Sdes/* $OpenBSD: ttymodes.h,v 1.14 2006/03/25 22:22:43 djm Exp $ */
292555Sdes
357429Smarkm/*
457429Smarkm * Author: Tatu Ylonen <ylo@cs.hut.fi>
557429Smarkm * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
657429Smarkm *                    All rights reserved
760573Skris *
865668Skris * As far as I am concerned, the code I have written for this software
965668Skris * can be used freely for any purpose.  Any derived versions of this
1065668Skris * software must be clearly marked as such, and if the derived work is
1165668Skris * incompatible with the protocol description in the RFC file, it must be
1265668Skris * called by a name other than "ssh" or "Secure Shell".
1357429Smarkm */
1457429Smarkm
1576259Sgreen/*
1676259Sgreen * SSH2 tty modes support by Kevin Steves.
1776259Sgreen * Copyright (c) 2001 Kevin Steves.  All rights reserved.
1876259Sgreen *
1976259Sgreen * Redistribution and use in source and binary forms, with or without
2076259Sgreen * modification, are permitted provided that the following conditions
2176259Sgreen * are met:
2276259Sgreen * 1. Redistributions of source code must retain the above copyright
2376259Sgreen *    notice, this list of conditions and the following disclaimer.
2476259Sgreen * 2. Redistributions in binary form must reproduce the above copyright
2576259Sgreen *    notice, this list of conditions and the following disclaimer in the
2676259Sgreen *    documentation and/or other materials provided with the distribution.
2776259Sgreen *
2876259Sgreen * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
2976259Sgreen * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
3076259Sgreen * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
3176259Sgreen * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
3276259Sgreen * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
3376259Sgreen * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
3476259Sgreen * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
3576259Sgreen * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
3676259Sgreen * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
3776259Sgreen * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
3876259Sgreen */
3957429Smarkm
4076259Sgreen/*
4176259Sgreen * SSH1:
4276259Sgreen * The tty mode description is a stream of bytes.  The stream consists of
4357429Smarkm * opcode-arguments pairs.  It is terminated by opcode TTY_OP_END (0).
4457429Smarkm * Opcodes 1-127 have one-byte arguments.  Opcodes 128-159 have integer
4557429Smarkm * arguments.  Opcodes 160-255 are not yet defined, and cause parsing to
4657429Smarkm * stop (they should only be used after any other data).
4757429Smarkm *
4876259Sgreen * SSH2:
4976259Sgreen * Differences between SSH1 and SSH2 terminal mode encoding include:
5076259Sgreen * 1. Encoded terminal modes are represented as a string, and a stream
5176259Sgreen *    of bytes within that string.
5276259Sgreen * 2. Opcode arguments are uint32 (1-159); 160-255 remain undefined.
5376259Sgreen * 3. The values for TTY_OP_ISPEED and TTY_OP_OSPEED are different;
5476259Sgreen *    128 and 129 vs. 192 and 193 respectively.
5576259Sgreen *
5657429Smarkm * The client puts in the stream any modes it knows about, and the
5757429Smarkm * server ignores any modes it does not know about.  This allows some degree
5857429Smarkm * of machine-independence, at least between systems that use a posix-like
5957429Smarkm * tty interface.  The protocol can support other systems as well, but might
6057429Smarkm * require reimplementing as mode names would likely be different.
6157429Smarkm */
6257429Smarkm
6357429Smarkm/*
6457429Smarkm * Some constants and prototypes are defined in packet.h; this file
6557429Smarkm * is only intended for including from ttymodes.c.
6657429Smarkm */
6757429Smarkm
6876259Sgreen/* termios macro */
6957429Smarkm/* name, op */
7076259SgreenTTYCHAR(VINTR, 1)
7176259SgreenTTYCHAR(VQUIT, 2)
7276259SgreenTTYCHAR(VERASE, 3)
7357429Smarkm#if defined(VKILL)
7476259SgreenTTYCHAR(VKILL, 4)
7557429Smarkm#endif /* VKILL */
7676259SgreenTTYCHAR(VEOF, 5)
7757429Smarkm#if defined(VEOL)
7876259SgreenTTYCHAR(VEOL, 6)
7957429Smarkm#endif /* VEOL */
8076259Sgreen#ifdef VEOL2
8157429SmarkmTTYCHAR(VEOL2, 7)
8257429Smarkm#endif /* VEOL2 */
8376259SgreenTTYCHAR(VSTART, 8)
8476259SgreenTTYCHAR(VSTOP, 9)
8557429Smarkm#if defined(VSUSP)
8676259SgreenTTYCHAR(VSUSP, 10)
8757429Smarkm#endif /* VSUSP */
8857429Smarkm#if defined(VDSUSP)
8976259SgreenTTYCHAR(VDSUSP, 11)
9057429Smarkm#endif /* VDSUSP */
9157429Smarkm#if defined(VREPRINT)
9276259SgreenTTYCHAR(VREPRINT, 12)
9357429Smarkm#endif /* VREPRINT */
9457429Smarkm#if defined(VWERASE)
9576259SgreenTTYCHAR(VWERASE, 13)
9657429Smarkm#endif /* VWERASE */
9757429Smarkm#if defined(VLNEXT)
9876259SgreenTTYCHAR(VLNEXT, 14)
9957429Smarkm#endif /* VLNEXT */
10057429Smarkm#if defined(VFLUSH)
10176259SgreenTTYCHAR(VFLUSH, 15)
10257429Smarkm#endif /* VFLUSH */
10357429Smarkm#ifdef VSWTCH
10476259SgreenTTYCHAR(VSWTCH, 16)
10557429Smarkm#endif /* VSWTCH */
10657429Smarkm#if defined(VSTATUS)
10776259SgreenTTYCHAR(VSTATUS, 17)
10857429Smarkm#endif /* VSTATUS */
10957429Smarkm#ifdef VDISCARD
11076259SgreenTTYCHAR(VDISCARD, 18)
11157429Smarkm#endif /* VDISCARD */
11257429Smarkm
11357429Smarkm/* name, field, op */
11476259SgreenTTYMODE(IGNPAR,	c_iflag, 30)
11576259SgreenTTYMODE(PARMRK,	c_iflag, 31)
116137015SdesTTYMODE(INPCK,	c_iflag, 32)
11776259SgreenTTYMODE(ISTRIP,	c_iflag, 33)
118137015SdesTTYMODE(INLCR,	c_iflag, 34)
119137015SdesTTYMODE(IGNCR,	c_iflag, 35)
120137015SdesTTYMODE(ICRNL,	c_iflag, 36)
12157429Smarkm#if defined(IUCLC)
122137015SdesTTYMODE(IUCLC,	c_iflag, 37)
12357429Smarkm#endif
124137015SdesTTYMODE(IXON,	c_iflag, 38)
125137015SdesTTYMODE(IXANY,	c_iflag, 39)
126137015SdesTTYMODE(IXOFF,	c_iflag, 40)
12757429Smarkm#ifdef IMAXBEL
12876259SgreenTTYMODE(IMAXBEL,c_iflag, 41)
12957429Smarkm#endif /* IMAXBEL */
13057429Smarkm
13176259SgreenTTYMODE(ISIG,	c_lflag, 50)
13276259SgreenTTYMODE(ICANON,	c_lflag, 51)
13357429Smarkm#ifdef XCASE
13476259SgreenTTYMODE(XCASE,	c_lflag, 52)
13557429Smarkm#endif
13676259SgreenTTYMODE(ECHO,	c_lflag, 53)
13776259SgreenTTYMODE(ECHOE,	c_lflag, 54)
13876259SgreenTTYMODE(ECHOK,	c_lflag, 55)
13976259SgreenTTYMODE(ECHONL,	c_lflag, 56)
14076259SgreenTTYMODE(NOFLSH,	c_lflag, 57)
14176259SgreenTTYMODE(TOSTOP,	c_lflag, 58)
14257429Smarkm#ifdef IEXTEN
14376259SgreenTTYMODE(IEXTEN, c_lflag, 59)
14457429Smarkm#endif /* IEXTEN */
14557429Smarkm#if defined(ECHOCTL)
14676259SgreenTTYMODE(ECHOCTL,c_lflag, 60)
14757429Smarkm#endif /* ECHOCTL */
14857429Smarkm#ifdef ECHOKE
14976259SgreenTTYMODE(ECHOKE,	c_lflag, 61)
15057429Smarkm#endif /* ECHOKE */
15157429Smarkm#if defined(PENDIN)
15276259SgreenTTYMODE(PENDIN,	c_lflag, 62)
15357429Smarkm#endif /* PENDIN */
15457429Smarkm
15576259SgreenTTYMODE(OPOST,	c_oflag, 70)
15657429Smarkm#if defined(OLCUC)
15776259SgreenTTYMODE(OLCUC,	c_oflag, 71)
15857429Smarkm#endif
15998937Sdes#ifdef ONLCR
16076259SgreenTTYMODE(ONLCR,	c_oflag, 72)
16198937Sdes#endif
16257429Smarkm#ifdef OCRNL
16376259SgreenTTYMODE(OCRNL,	c_oflag, 73)
16457429Smarkm#endif
16557429Smarkm#ifdef ONOCR
16676259SgreenTTYMODE(ONOCR,	c_oflag, 74)
16757429Smarkm#endif
16857429Smarkm#ifdef ONLRET
16976259SgreenTTYMODE(ONLRET,	c_oflag, 75)
17057429Smarkm#endif
17157429Smarkm
17276259SgreenTTYMODE(CS7,	c_cflag, 90)
17376259SgreenTTYMODE(CS8,	c_cflag, 91)
17476259SgreenTTYMODE(PARENB,	c_cflag, 92)
17576259SgreenTTYMODE(PARODD,	c_cflag, 93)
176