Annotation of XNU/bsd/include/arpa/telnet.h, revision 1.1

1.1     ! root        1: /*
        !             2:  * Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
        !             3:  *
        !             4:  * @APPLE_LICENSE_HEADER_START@
        !             5:  * 
        !             6:  * The contents of this file constitute Original Code as defined in and
        !             7:  * are subject to the Apple Public Source License Version 1.1 (the
        !             8:  * "License").  You may not use this file except in compliance with the
        !             9:  * License.  Please obtain a copy of the License at
        !            10:  * http://www.apple.com/publicsource and read it before using this file.
        !            11:  * 
        !            12:  * This Original Code and all software distributed under the License are
        !            13:  * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
        !            14:  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
        !            15:  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
        !            16:  * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT.  Please see the
        !            17:  * License for the specific language governing rights and limitations
        !            18:  * under the License.
        !            19:  * 
        !            20:  * @APPLE_LICENSE_HEADER_END@
        !            21:  */
        !            22: /*
        !            23:  * Copyright (c) 1983, 1993
        !            24:  *     The Regents of the University of California.  All rights reserved.
        !            25:  *
        !            26:  * Redistribution and use in source and binary forms, with or without
        !            27:  * modification, are permitted provided that the following conditions
        !            28:  * are met:
        !            29:  * 1. Redistributions of source code must retain the above copyright
        !            30:  *    notice, this list of conditions and the following disclaimer.
        !            31:  * 2. Redistributions in binary form must reproduce the above copyright
        !            32:  *    notice, this list of conditions and the following disclaimer in the
        !            33:  *    documentation and/or other materials provided with the distribution.
        !            34:  * 3. All advertising materials mentioning features or use of this software
        !            35:  *    must display the following acknowledgement:
        !            36:  *     This product includes software developed by the University of
        !            37:  *     California, Berkeley and its contributors.
        !            38:  * 4. Neither the name of the University nor the names of its contributors
        !            39:  *    may be used to endorse or promote products derived from this software
        !            40:  *    without specific prior written permission.
        !            41:  *
        !            42:  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
        !            43:  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
        !            44:  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
        !            45:  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
        !            46:  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
        !            47:  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
        !            48:  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        !            49:  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
        !            50:  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
        !            51:  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
        !            52:  * SUCH DAMAGE.
        !            53:  *
        !            54:  *     @(#)telnet.h    8.2 (Berkeley) 12/15/93
        !            55:  */
        !            56: 
        !            57: #ifndef _TELNET_H_
        !            58: #define        _TELNET_H_
        !            59: 
        !            60: /*
        !            61:  * Definitions for the TELNET protocol.
        !            62:  */
        !            63: #define        IAC     255             /* interpret as command: */
        !            64: #define        DONT    254             /* you are not to use option */
        !            65: #define        DO      253             /* please, you use option */
        !            66: #define        WONT    252             /* I won't use option */
        !            67: #define        WILL    251             /* I will use option */
        !            68: #define        SB      250             /* interpret as subnegotiation */
        !            69: #define        GA      249             /* you may reverse the line */
        !            70: #define        EL      248             /* erase the current line */
        !            71: #define        EC      247             /* erase the current character */
        !            72: #define        AYT     246             /* are you there */
        !            73: #define        AO      245             /* abort output--but let prog finish */
        !            74: #define        IP      244             /* interrupt process--permanently */
        !            75: #define        BREAK   243             /* break */
        !            76: #define        DM      242             /* data mark--for connect. cleaning */
        !            77: #define        NOP     241             /* nop */
        !            78: #define        SE      240             /* end sub negotiation */
        !            79: #define EOR     239             /* end of record (transparent mode) */
        !            80: #define        ABORT   238             /* Abort process */
        !            81: #define        SUSP    237             /* Suspend process */
        !            82: #define        xEOF    236             /* End of file: EOF is already used... */
        !            83: 
        !            84: #define SYNCH  242             /* for telfunc calls */
        !            85: 
        !            86: #ifdef TELCMDS
        !            87: char *telcmds[] = {
        !            88:        "EOF", "SUSP", "ABORT", "EOR",
        !            89:        "SE", "NOP", "DMARK", "BRK", "IP", "AO", "AYT", "EC",
        !            90:        "EL", "GA", "SB", "WILL", "WONT", "DO", "DONT", "IAC", 0,
        !            91: };
        !            92: #else
        !            93: extern char *telcmds[];
        !            94: #endif
        !            95: 
        !            96: #define        TELCMD_FIRST    xEOF
        !            97: #define        TELCMD_LAST     IAC
        !            98: #define        TELCMD_OK(x)    ((unsigned int)(x) <= TELCMD_LAST && \
        !            99:                         (unsigned int)(x) >= TELCMD_FIRST)
        !           100: #define        TELCMD(x)       telcmds[(x)-TELCMD_FIRST]
        !           101: 
        !           102: /* telnet options */
        !           103: #define TELOPT_BINARY  0       /* 8-bit data path */
        !           104: #define TELOPT_ECHO    1       /* echo */
        !           105: #define        TELOPT_RCP      2       /* prepare to reconnect */
        !           106: #define        TELOPT_SGA      3       /* suppress go ahead */
        !           107: #define        TELOPT_NAMS     4       /* approximate message size */
        !           108: #define        TELOPT_STATUS   5       /* give status */
        !           109: #define        TELOPT_TM       6       /* timing mark */
        !           110: #define        TELOPT_RCTE     7       /* remote controlled transmission and echo */
        !           111: #define TELOPT_NAOL    8       /* negotiate about output line width */
        !           112: #define TELOPT_NAOP    9       /* negotiate about output page size */
        !           113: #define TELOPT_NAOCRD  10      /* negotiate about CR disposition */
        !           114: #define TELOPT_NAOHTS  11      /* negotiate about horizontal tabstops */
        !           115: #define TELOPT_NAOHTD  12      /* negotiate about horizontal tab disposition */
        !           116: #define TELOPT_NAOFFD  13      /* negotiate about formfeed disposition */
        !           117: #define TELOPT_NAOVTS  14      /* negotiate about vertical tab stops */
        !           118: #define TELOPT_NAOVTD  15      /* negotiate about vertical tab disposition */
        !           119: #define TELOPT_NAOLFD  16      /* negotiate about output LF disposition */
        !           120: #define TELOPT_XASCII  17      /* extended ascic character set */
        !           121: #define        TELOPT_LOGOUT   18      /* force logout */
        !           122: #define        TELOPT_BM       19      /* byte macro */
        !           123: #define        TELOPT_DET      20      /* data entry terminal */
        !           124: #define        TELOPT_SUPDUP   21      /* supdup protocol */
        !           125: #define        TELOPT_SUPDUPOUTPUT 22  /* supdup output */
        !           126: #define        TELOPT_SNDLOC   23      /* send location */
        !           127: #define        TELOPT_TTYPE    24      /* terminal type */
        !           128: #define        TELOPT_EOR      25      /* end or record */
        !           129: #define        TELOPT_TUID     26      /* TACACS user identification */
        !           130: #define        TELOPT_OUTMRK   27      /* output marking */
        !           131: #define        TELOPT_TTYLOC   28      /* terminal location number */
        !           132: #define        TELOPT_3270REGIME 29    /* 3270 regime */
        !           133: #define        TELOPT_X3PAD    30      /* X.3 PAD */
        !           134: #define        TELOPT_NAWS     31      /* window size */
        !           135: #define        TELOPT_TSPEED   32      /* terminal speed */
        !           136: #define        TELOPT_LFLOW    33      /* remote flow control */
        !           137: #define TELOPT_LINEMODE        34      /* Linemode option */
        !           138: #define TELOPT_XDISPLOC        35      /* X Display Location */
        !           139: #define TELOPT_OLD_ENVIRON 36  /* Old - Environment variables */
        !           140: #define        TELOPT_AUTHENTICATION 37/* Authenticate */
        !           141: #define        TELOPT_ENCRYPT  38      /* Encryption option */
        !           142: #define TELOPT_NEW_ENVIRON 39  /* New - Environment variables */
        !           143: #define        TELOPT_EXOPL    255     /* extended-options-list */
        !           144: 
        !           145: 
        !           146: #define        NTELOPTS        (1+TELOPT_NEW_ENVIRON)
        !           147: #ifdef TELOPTS
        !           148: char *telopts[NTELOPTS+1] = {
        !           149:        "BINARY", "ECHO", "RCP", "SUPPRESS GO AHEAD", "NAME",
        !           150:        "STATUS", "TIMING MARK", "RCTE", "NAOL", "NAOP",
        !           151:        "NAOCRD", "NAOHTS", "NAOHTD", "NAOFFD", "NAOVTS",
        !           152:        "NAOVTD", "NAOLFD", "EXTEND ASCII", "LOGOUT", "BYTE MACRO",
        !           153:        "DATA ENTRY TERMINAL", "SUPDUP", "SUPDUP OUTPUT",
        !           154:        "SEND LOCATION", "TERMINAL TYPE", "END OF RECORD",
        !           155:        "TACACS UID", "OUTPUT MARKING", "TTYLOC",
        !           156:        "3270 REGIME", "X.3 PAD", "NAWS", "TSPEED", "LFLOW",
        !           157:        "LINEMODE", "XDISPLOC", "OLD-ENVIRON", "AUTHENTICATION",
        !           158:        "ENCRYPT", "NEW-ENVIRON",
        !           159:        0,
        !           160: };
        !           161: #define        TELOPT_FIRST    TELOPT_BINARY
        !           162: #define        TELOPT_LAST     TELOPT_NEW_ENVIRON
        !           163: #define        TELOPT_OK(x)    ((unsigned int)(x) <= TELOPT_LAST)
        !           164: #define        TELOPT(x)       telopts[(x)-TELOPT_FIRST]
        !           165: #endif
        !           166: 
        !           167: /* sub-option qualifiers */
        !           168: #define        TELQUAL_IS      0       /* option is... */
        !           169: #define        TELQUAL_SEND    1       /* send option */
        !           170: #define        TELQUAL_INFO    2       /* ENVIRON: informational version of IS */
        !           171: #define        TELQUAL_REPLY   2       /* AUTHENTICATION: client version of IS */
        !           172: #define        TELQUAL_NAME    3       /* AUTHENTICATION: client version of IS */
        !           173: 
        !           174: #define        LFLOW_OFF               0       /* Disable remote flow control */
        !           175: #define        LFLOW_ON                1       /* Enable remote flow control */
        !           176: #define        LFLOW_RESTART_ANY       2       /* Restart output on any char */
        !           177: #define        LFLOW_RESTART_XON       3       /* Restart output only on XON */
        !           178: 
        !           179: /*
        !           180:  * LINEMODE suboptions
        !           181:  */
        !           182: 
        !           183: #define        LM_MODE         1
        !           184: #define        LM_FORWARDMASK  2
        !           185: #define        LM_SLC          3
        !           186: 
        !           187: #define        MODE_EDIT       0x01
        !           188: #define        MODE_TRAPSIG    0x02
        !           189: #define        MODE_ACK        0x04
        !           190: #define MODE_SOFT_TAB  0x08
        !           191: #define MODE_LIT_ECHO  0x10
        !           192: 
        !           193: #define        MODE_MASK       0x1f
        !           194: 
        !           195: /* Not part of protocol, but needed to simplify things... */
        !           196: #define MODE_FLOW              0x0100
        !           197: #define MODE_ECHO              0x0200
        !           198: #define MODE_INBIN             0x0400
        !           199: #define MODE_OUTBIN            0x0800
        !           200: #define MODE_FORCE             0x1000
        !           201: 
        !           202: #define        SLC_SYNCH       1
        !           203: #define        SLC_BRK         2
        !           204: #define        SLC_IP          3
        !           205: #define        SLC_AO          4
        !           206: #define        SLC_AYT         5
        !           207: #define        SLC_EOR         6
        !           208: #define        SLC_ABORT       7
        !           209: #define        SLC_EOF         8
        !           210: #define        SLC_SUSP        9
        !           211: #define        SLC_EC          10
        !           212: #define        SLC_EL          11
        !           213: #define        SLC_EW          12
        !           214: #define        SLC_RP          13
        !           215: #define        SLC_LNEXT       14
        !           216: #define        SLC_XON         15
        !           217: #define        SLC_XOFF        16
        !           218: #define        SLC_FORW1       17
        !           219: #define        SLC_FORW2       18
        !           220: 
        !           221: #define        NSLC            18
        !           222: 
        !           223: /*
        !           224:  * For backwards compatability, we define SLC_NAMES to be the
        !           225:  * list of names if SLC_NAMES is not defined.
        !           226:  */
        !           227: #define        SLC_NAMELIST    "0", "SYNCH", "BRK", "IP", "AO", "AYT", "EOR", \
        !           228:                        "ABORT", "EOF", "SUSP", "EC", "EL", "EW", "RP", \
        !           229:                        "LNEXT", "XON", "XOFF", "FORW1", "FORW2", 0,
        !           230: #ifdef SLC_NAMES
        !           231: char *slc_names[] = {
        !           232:        SLC_NAMELIST
        !           233: };
        !           234: #else
        !           235: extern char *slc_names[];
        !           236: #define        SLC_NAMES SLC_NAMELIST
        !           237: #endif
        !           238: 
        !           239: #define        SLC_NAME_OK(x)  ((unsigned int)(x) <= NSLC)
        !           240: #define SLC_NAME(x)    slc_names[x]
        !           241: 
        !           242: #define        SLC_NOSUPPORT   0
        !           243: #define        SLC_CANTCHANGE  1
        !           244: #define        SLC_VARIABLE    2
        !           245: #define        SLC_DEFAULT     3
        !           246: #define        SLC_LEVELBITS   0x03
        !           247: 
        !           248: #define        SLC_FUNC        0
        !           249: #define        SLC_FLAGS       1
        !           250: #define        SLC_VALUE       2
        !           251: 
        !           252: #define        SLC_ACK         0x80
        !           253: #define        SLC_FLUSHIN     0x40
        !           254: #define        SLC_FLUSHOUT    0x20
        !           255: 
        !           256: #define        OLD_ENV_VAR     1
        !           257: #define        OLD_ENV_VALUE   0
        !           258: #define        NEW_ENV_VAR     0
        !           259: #define        NEW_ENV_VALUE   1
        !           260: #define        ENV_ESC         2
        !           261: #define ENV_USERVAR    3
        !           262: 
        !           263: /*
        !           264:  * AUTHENTICATION suboptions
        !           265:  */
        !           266: 
        !           267: /*
        !           268:  * Who is authenticating who ...
        !           269:  */
        !           270: #define        AUTH_WHO_CLIENT         0       /* Client authenticating server */
        !           271: #define        AUTH_WHO_SERVER         1       /* Server authenticating client */
        !           272: #define        AUTH_WHO_MASK           1
        !           273: 
        !           274: /*
        !           275:  * amount of authentication done
        !           276:  */
        !           277: #define        AUTH_HOW_ONE_WAY        0
        !           278: #define        AUTH_HOW_MUTUAL         2
        !           279: #define        AUTH_HOW_MASK           2
        !           280: 
        !           281: #define        AUTHTYPE_NULL           0
        !           282: #define        AUTHTYPE_KERBEROS_V4    1
        !           283: #define        AUTHTYPE_KERBEROS_V5    2
        !           284: #define        AUTHTYPE_SPX            3
        !           285: #define        AUTHTYPE_MINK           4
        !           286: #define        AUTHTYPE_CNT            5
        !           287: 
        !           288: #define        AUTHTYPE_TEST           99
        !           289: 
        !           290: #ifdef AUTH_NAMES
        !           291: char *authtype_names[] = {
        !           292:        "NULL", "KERBEROS_V4", "KERBEROS_V5", "SPX", "MINK", 0,
        !           293: };
        !           294: #else
        !           295: extern char *authtype_names[];
        !           296: #endif
        !           297: 
        !           298: #define        AUTHTYPE_NAME_OK(x)     ((unsigned int)(x) < AUTHTYPE_CNT)
        !           299: #define        AUTHTYPE_NAME(x)        authtype_names[x]
        !           300: 
        !           301: /*
        !           302:  * ENCRYPTion suboptions
        !           303:  */
        !           304: #define        ENCRYPT_IS              0       /* I pick encryption type ... */
        !           305: #define        ENCRYPT_SUPPORT         1       /* I support encryption types ... */
        !           306: #define        ENCRYPT_REPLY           2       /* Initial setup response */
        !           307: #define        ENCRYPT_START           3       /* Am starting to send encrypted */
        !           308: #define        ENCRYPT_END             4       /* Am ending encrypted */
        !           309: #define        ENCRYPT_REQSTART        5       /* Request you start encrypting */
        !           310: #define        ENCRYPT_REQEND          6       /* Request you send encrypting */
        !           311: #define        ENCRYPT_ENC_KEYID       7
        !           312: #define        ENCRYPT_DEC_KEYID       8
        !           313: #define        ENCRYPT_CNT             9
        !           314: 
        !           315: #define        ENCTYPE_ANY             0
        !           316: #define        ENCTYPE_DES_CFB64       1
        !           317: #define        ENCTYPE_DES_OFB64       2
        !           318: #define        ENCTYPE_CNT             3
        !           319: 
        !           320: #ifdef ENCRYPT_NAMES
        !           321: char *encrypt_names[] = {
        !           322:        "IS", "SUPPORT", "REPLY", "START", "END",
        !           323:        "REQUEST-START", "REQUEST-END", "ENC-KEYID", "DEC-KEYID",
        !           324:        0,
        !           325: };
        !           326: char *enctype_names[] = {
        !           327:        "ANY", "DES_CFB64",  "DES_OFB64",  0,
        !           328: };
        !           329: #else
        !           330: extern char *encrypt_names[];
        !           331: extern char *enctype_names[];
        !           332: #endif
        !           333: 
        !           334: 
        !           335: #define        ENCRYPT_NAME_OK(x)      ((unsigned int)(x) < ENCRYPT_CNT)
        !           336: #define        ENCRYPT_NAME(x)         encrypt_names[x]
        !           337: 
        !           338: #define        ENCTYPE_NAME_OK(x)      ((unsigned int)(x) < ENCTYPE_CNT)
        !           339: #define        ENCTYPE_NAME(x)         enctype_names[x]
        !           340: 
        !           341: #endif /* !_TELNET_H_ */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.