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