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