ttymodes.h revision 98937
1256056Sgrehan/*	$OpenBSD: ttymodes.h,v 1.12 2002/03/04 17:27:39 stevesk Exp $	*/
2256056Sgrehan
3256056Sgrehan/*
4256056Sgrehan * Author: Tatu Ylonen <ylo@cs.hut.fi>
5256056Sgrehan * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
6256056Sgrehan *                    All rights reserved
7256056Sgrehan *
8256056Sgrehan * As far as I am concerned, the code I have written for this software
9256056Sgrehan * can be used freely for any purpose.  Any derived versions of this
10256056Sgrehan * software must be clearly marked as such, and if the derived work is
11256056Sgrehan * incompatible with the protocol description in the RFC file, it must be
12256056Sgrehan * called by a name other than "ssh" or "Secure Shell".
13256056Sgrehan */
14256056Sgrehan
15256056Sgrehan/*
16256056Sgrehan * SSH2 tty modes support by Kevin Steves.
17256056Sgrehan * Copyright (c) 2001 Kevin Steves.  All rights reserved.
18256056Sgrehan *
19256056Sgrehan * Redistribution and use in source and binary forms, with or without
20256056Sgrehan * modification, are permitted provided that the following conditions
21256056Sgrehan * are met:
22256056Sgrehan * 1. Redistributions of source code must retain the above copyright
23256056Sgrehan *    notice, this list of conditions and the following disclaimer.
24256056Sgrehan * 2. Redistributions in binary form must reproduce the above copyright
25256056Sgrehan *    notice, this list of conditions and the following disclaimer in the
26256056Sgrehan *    documentation and/or other materials provided with the distribution.
27256056Sgrehan *
28256056Sgrehan * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
29256056Sgrehan * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
30256056Sgrehan * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
31256056Sgrehan * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
32256056Sgrehan * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
33256056Sgrehan * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
34256056Sgrehan * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
35256056Sgrehan * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
36256056Sgrehan * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
37256056Sgrehan * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
38256056Sgrehan */
39256056Sgrehan
40256056Sgrehan/*
41256056Sgrehan * SSH1:
42256056Sgrehan * The tty mode description is a stream of bytes.  The stream consists of
43256056Sgrehan * opcode-arguments pairs.  It is terminated by opcode TTY_OP_END (0).
44256056Sgrehan * Opcodes 1-127 have one-byte arguments.  Opcodes 128-159 have integer
45256056Sgrehan * arguments.  Opcodes 160-255 are not yet defined, and cause parsing to
46256056Sgrehan * stop (they should only be used after any other data).
47256056Sgrehan *
48256056Sgrehan * SSH2:
49256056Sgrehan * Differences between SSH1 and SSH2 terminal mode encoding include:
50256056Sgrehan * 1. Encoded terminal modes are represented as a string, and a stream
51256056Sgrehan *    of bytes within that string.
52256056Sgrehan * 2. Opcode arguments are uint32 (1-159); 160-255 remain undefined.
53256056Sgrehan * 3. The values for TTY_OP_ISPEED and TTY_OP_OSPEED are different;
54256056Sgrehan *    128 and 129 vs. 192 and 193 respectively.
55256056Sgrehan *
56256056Sgrehan * The client puts in the stream any modes it knows about, and the
57256056Sgrehan * server ignores any modes it does not know about.  This allows some degree
58256056Sgrehan * of machine-independence, at least between systems that use a posix-like
59256056Sgrehan * tty interface.  The protocol can support other systems as well, but might
60256056Sgrehan * require reimplementing as mode names would likely be different.
61256056Sgrehan */
62256056Sgrehan
63256056Sgrehan/*
64256056Sgrehan * Some constants and prototypes are defined in packet.h; this file
65256056Sgrehan * is only intended for including from ttymodes.c.
66256056Sgrehan */
67256056Sgrehan
68256056Sgrehan/* termios macro */
69256056Sgrehan/* name, op */
70256056SgrehanTTYCHAR(VINTR, 1)
71256056SgrehanTTYCHAR(VQUIT, 2)
72256056SgrehanTTYCHAR(VERASE, 3)
73256056Sgrehan#if defined(VKILL)
74256056SgrehanTTYCHAR(VKILL, 4)
75256056Sgrehan#endif /* VKILL */
76256056SgrehanTTYCHAR(VEOF, 5)
77256056Sgrehan#if defined(VEOL)
78256056SgrehanTTYCHAR(VEOL, 6)
79256056Sgrehan#endif /* VEOL */
80256056Sgrehan#ifdef VEOL2
81256056SgrehanTTYCHAR(VEOL2, 7)
82256056Sgrehan#endif /* VEOL2 */
83256056SgrehanTTYCHAR(VSTART, 8)
84256056SgrehanTTYCHAR(VSTOP, 9)
85256056Sgrehan#if defined(VSUSP)
86256056SgrehanTTYCHAR(VSUSP, 10)
87256056Sgrehan#endif /* VSUSP */
88256056Sgrehan#if defined(VDSUSP)
89256056SgrehanTTYCHAR(VDSUSP, 11)
90256056Sgrehan#endif /* VDSUSP */
91256056Sgrehan#if defined(VREPRINT)
92256056SgrehanTTYCHAR(VREPRINT, 12)
93256056Sgrehan#endif /* VREPRINT */
94256056Sgrehan#if defined(VWERASE)
95256056SgrehanTTYCHAR(VWERASE, 13)
96256056Sgrehan#endif /* VWERASE */
97256056Sgrehan#if defined(VLNEXT)
98267339SjhbTTYCHAR(VLNEXT, 14)
99267339Sjhb#endif /* VLNEXT */
100267339Sjhb#if defined(VFLUSH)
101267339SjhbTTYCHAR(VFLUSH, 15)
102267339Sjhb#endif /* VFLUSH */
103267339Sjhb#ifdef VSWTCH
104267339SjhbTTYCHAR(VSWTCH, 16)
105256056Sgrehan#endif /* VSWTCH */
106256056Sgrehan#if defined(VSTATUS)
107256056SgrehanTTYCHAR(VSTATUS, 17)
108256056Sgrehan#endif /* VSTATUS */
109256056Sgrehan#ifdef VDISCARD
110256056SgrehanTTYCHAR(VDISCARD, 18)
111256056Sgrehan#endif /* VDISCARD */
112256056Sgrehan
113256056Sgrehan/* name, field, op */
114256056SgrehanTTYMODE(IGNPAR,	c_iflag, 30)
115256056SgrehanTTYMODE(PARMRK,	c_iflag, 31)
116256056SgrehanTTYMODE(INPCK, 	c_iflag, 32)
117256056SgrehanTTYMODE(ISTRIP,	c_iflag, 33)
118256056SgrehanTTYMODE(INLCR, 	c_iflag, 34)
119256056SgrehanTTYMODE(IGNCR, 	c_iflag, 35)
120256056SgrehanTTYMODE(ICRNL, 	c_iflag, 36)
121256056Sgrehan#if defined(IUCLC)
122256056SgrehanTTYMODE(IUCLC, 	c_iflag, 37)
123256056Sgrehan#endif
124256056SgrehanTTYMODE(IXON,  	c_iflag, 38)
125256056SgrehanTTYMODE(IXANY, 	c_iflag, 39)
126256056SgrehanTTYMODE(IXOFF, 	c_iflag, 40)
127256056Sgrehan#ifdef IMAXBEL
128256056SgrehanTTYMODE(IMAXBEL,c_iflag, 41)
129256164Sdim#endif /* IMAXBEL */
130256164Sdim
131256056SgrehanTTYMODE(ISIG,	c_lflag, 50)
132256056SgrehanTTYMODE(ICANON,	c_lflag, 51)
133256056Sgrehan#ifdef XCASE
134256056SgrehanTTYMODE(XCASE,	c_lflag, 52)
135256056Sgrehan#endif
136256056SgrehanTTYMODE(ECHO,	c_lflag, 53)
137267339SjhbTTYMODE(ECHOE,	c_lflag, 54)
138256056SgrehanTTYMODE(ECHOK,	c_lflag, 55)
139256056SgrehanTTYMODE(ECHONL,	c_lflag, 56)
140256056SgrehanTTYMODE(NOFLSH,	c_lflag, 57)
141256056SgrehanTTYMODE(TOSTOP,	c_lflag, 58)
142256056Sgrehan#ifdef IEXTEN
143256056SgrehanTTYMODE(IEXTEN, c_lflag, 59)
144256056Sgrehan#endif /* IEXTEN */
145256056Sgrehan#if defined(ECHOCTL)
146256056SgrehanTTYMODE(ECHOCTL,c_lflag, 60)
147256056Sgrehan#endif /* ECHOCTL */
148256056Sgrehan#ifdef ECHOKE
149256056SgrehanTTYMODE(ECHOKE,	c_lflag, 61)
150256056Sgrehan#endif /* ECHOKE */
151256056Sgrehan#if defined(PENDIN)
152256056SgrehanTTYMODE(PENDIN,	c_lflag, 62)
153256056Sgrehan#endif /* PENDIN */
154256056Sgrehan
155256056SgrehanTTYMODE(OPOST,	c_oflag, 70)
156256056Sgrehan#if defined(OLCUC)
157256056SgrehanTTYMODE(OLCUC,	c_oflag, 71)
158256056Sgrehan#endif
159256056Sgrehan#ifdef ONLCR
160256056SgrehanTTYMODE(ONLCR,	c_oflag, 72)
161256056Sgrehan#endif
162256056Sgrehan#ifdef OCRNL
163256056SgrehanTTYMODE(OCRNL,	c_oflag, 73)
164256056Sgrehan#endif
165256056Sgrehan#ifdef ONOCR
166256056SgrehanTTYMODE(ONOCR,	c_oflag, 74)
167256056Sgrehan#endif
168256056Sgrehan#ifdef ONLRET
169256056SgrehanTTYMODE(ONLRET,	c_oflag, 75)
170256056Sgrehan#endif
171256056Sgrehan
172256056SgrehanTTYMODE(CS7,	c_cflag, 90)
173256056SgrehanTTYMODE(CS8,	c_cflag, 91)
174256056SgrehanTTYMODE(PARENB,	c_cflag, 92)
175256056SgrehanTTYMODE(PARODD,	c_cflag, 93)
176259301Sgrehan