Annotation of 43BSDReno/usr.bin/tn3270/distribution/arpa/telnet.h, revision 1.1.1.1

1.1       root        1: /*
                      2:  * Copyright (c) 1983 Regents of the University of California.
                      3:  * All rights reserved.
                      4:  *
                      5:  * Redistribution and use in source and binary forms are permitted
                      6:  * provided that the above copyright notice and this paragraph are
                      7:  * duplicated in all such forms and that any documentation,
                      8:  * advertising materials, and other materials related to such
                      9:  * distribution and use acknowledge that the software was developed
                     10:  * by the University of California, Berkeley.  The name of the
                     11:  * University may not be used to endorse or promote products derived
                     12:  * from this software without specific prior written permission.
                     13:  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
                     14:  * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
                     15:  * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
                     16:  *
                     17:  *     @(#)telnet.h    4.4 (Berkeley) 9/1/89
                     18:  */
                     19: 
                     20: /*
                     21:  * Definitions for the TELNET protocol.
                     22:  */
                     23: #define        IAC     255             /* interpret as command: */
                     24: #define        DONT    254             /* you are not to use option */
                     25: #define        DO      253             /* please, you use option */
                     26: #define        WONT    252             /* I won't use option */
                     27: #define        WILL    251             /* I will use option */
                     28: #define        SB      250             /* interpret as subnegotiation */
                     29: #define        GA      249             /* you may reverse the line */
                     30: #define        EL      248             /* erase the current line */
                     31: #define        EC      247             /* erase the current character */
                     32: #define        AYT     246             /* are you there */
                     33: #define        AO      245             /* abort output--but let prog finish */
                     34: #define        IP      244             /* interrupt process--permanently */
                     35: #define        BREAK   243             /* break */
                     36: #define        DM      242             /* data mark--for connect. cleaning */
                     37: #define        NOP     241             /* nop */
                     38: #define        SE      240             /* end sub negotiation */
                     39: #define EOR     239             /* end of record (transparent mode) */
                     40: #define        ABORT   238             /* Abort process */
                     41: #define        SUSP    237             /* Suspend process */
                     42: #define        xEOF    236             /* End of file: EOF is already used... */
                     43: 
                     44: #define SYNCH  242             /* for telfunc calls */
                     45: 
                     46: #ifdef TELCMDS
                     47: char *telcmds[] = {
                     48:        "EOF", "SUSP", "ABORT", "EOR",
                     49:        "SE", "NOP", "DMARK", "BRK", "IP", "AO", "AYT", "EC",
                     50:        "EL", "GA", "SB", "WILL", "WONT", "DO", "DONT", "IAC",
                     51: };
                     52: #define        TELCMD_FIRST    xEOF
                     53: #define        TELCMD_LAST     IAC
                     54: #define        TELCMD_OK(x)    ((x) <= TELCMD_LAST && (x) >= TELCMD_FIRST)
                     55: #define        TELCMD(x)       telcmds[(x)-TELCMD_FIRST]
                     56: #endif
                     57: 
                     58: /* telnet options */
                     59: #define TELOPT_BINARY  0       /* 8-bit data path */
                     60: #define TELOPT_ECHO    1       /* echo */
                     61: #define        TELOPT_RCP      2       /* prepare to reconnect */
                     62: #define        TELOPT_SGA      3       /* suppress go ahead */
                     63: #define        TELOPT_NAMS     4       /* approximate message size */
                     64: #define        TELOPT_STATUS   5       /* give status */
                     65: #define        TELOPT_TM       6       /* timing mark */
                     66: #define        TELOPT_RCTE     7       /* remote controlled transmission and echo */
                     67: #define TELOPT_NAOL    8       /* negotiate about output line width */
                     68: #define TELOPT_NAOP    9       /* negotiate about output page size */
                     69: #define TELOPT_NAOCRD  10      /* negotiate about CR disposition */
                     70: #define TELOPT_NAOHTS  11      /* negotiate about horizontal tabstops */
                     71: #define TELOPT_NAOHTD  12      /* negotiate about horizontal tab disposition */
                     72: #define TELOPT_NAOFFD  13      /* negotiate about formfeed disposition */
                     73: #define TELOPT_NAOVTS  14      /* negotiate about vertical tab stops */
                     74: #define TELOPT_NAOVTD  15      /* negotiate about vertical tab disposition */
                     75: #define TELOPT_NAOLFD  16      /* negotiate about output LF disposition */
                     76: #define TELOPT_XASCII  17      /* extended ascic character set */
                     77: #define        TELOPT_LOGOUT   18      /* force logout */
                     78: #define        TELOPT_BM       19      /* byte macro */
                     79: #define        TELOPT_DET      20      /* data entry terminal */
                     80: #define        TELOPT_SUPDUP   21      /* supdup protocol */
                     81: #define        TELOPT_SUPDUPOUTPUT 22  /* supdup output */
                     82: #define        TELOPT_SNDLOC   23      /* send location */
                     83: #define        TELOPT_TTYPE    24      /* terminal type */
                     84: #define        TELOPT_EOR      25      /* end or record */
                     85: #define        TELOPT_TUID     26      /* TACACS user identification */
                     86: #define        TELOPT_OUTMRK   27      /* output marking */
                     87: #define        TELOPT_TTYLOC   28      /* terminal location number */
                     88: #define        TELOPT_3270REGIME 29    /* 3270 regime */
                     89: #define        TELOPT_X3PAD    30      /* X.3 PAD */
                     90: #define        TELOPT_NAWS     31      /* window size */
                     91: #define        TELOPT_TSPEED   32      /* terminal speed */
                     92: #define        TELOPT_LFLOW    33      /* remote flow control */
                     93: #define TELOPT_LINEMODE        34      /* Linemode option */
                     94: #define        TELOPT_EXOPL    255     /* extended-options-list */
                     95: 
                     96: #define        NTELOPTS        (1+TELOPT_LINEMODE)
                     97: #ifdef TELOPTS
                     98: char *telopts[NTELOPTS] = {
                     99:        "BINARY", "ECHO", "RCP", "SUPPRESS GO AHEAD", "NAME",
                    100:        "STATUS", "TIMING MARK", "RCTE", "NAOL", "NAOP",
                    101:        "NAOCRD", "NAOHTS", "NAOHTD", "NAOFFD", "NAOVTS",
                    102:        "NAOVTD", "NAOLFD", "EXTEND ASCII", "LOGOUT", "BYTE MACRO",
                    103:        "DATA ENTRY TERMINAL", "SUPDUP", "SUPDUP OUTPUT",
                    104:        "SEND LOCATION", "TERMINAL TYPE", "END OF RECORD",
                    105:        "TACACS UID", "OUTPUT MARKING", "TTYLOC",
                    106:        "3270 REGIME", "X.3 PAD", "NAWS", "TSPEED", "LFLOW",
                    107:        "LINEMODE",
                    108: };
                    109: #define        TELOPT_FIRST    TELOPT_BINARY
                    110: #define        TELOPT_LAST     TELOPT_LINEMODE
                    111: #define        TELOPT_OK(x)    ((x) <= TELOPT_LAST && (x) >= TELOPT_FIRST)
                    112: #define        TELOPT(x)       telopts[(x)-TELOPT_FIRST]
                    113: #endif
                    114: 
                    115: /* sub-option qualifiers */
                    116: #define        TELQUAL_IS      0       /* option is... */
                    117: #define        TELQUAL_SEND    1       /* send option */
                    118: 
                    119: /*
                    120:  * LINEMODE suboptions
                    121:  */
                    122: 
                    123: #define        LM_MODE         1
                    124: #define        LM_FORWARDMASK  2
                    125: #define        LM_SLC          3
                    126: 
                    127: #define        MODE_EDIT       0x01
                    128: #define        MODE_TRAPSIG    0x02
                    129: #define        MODE_ACK        0x04
                    130: 
                    131: #define        MODE_MASK       (MODE_EDIT|MODE_TRAPSIG|MODE_ACK)
                    132: 
                    133: /* Not part of protocol, but needed to simplify things... */
                    134: #define MODE_FLOW              0x40
                    135: #define MODE_ECHO              0x80
                    136: #define MODE_FORCE             0x20
                    137: 
                    138: #define        SLC_SYNCH       1
                    139: #define        SLC_BRK         2
                    140: #define        SLC_IP          3
                    141: #define        SLC_AO          4
                    142: #define        SLC_AYT         5
                    143: #define        SLC_EOR         6
                    144: #define        SLC_ABORT       7
                    145: #define        SLC_EOF         8
                    146: #define        SLC_SUSP        9
                    147: #define        SLC_EC          10
                    148: #define        SLC_EL          11
                    149: #define        SLC_EW          12
                    150: #define        SLC_RP          13
                    151: #define        SLC_LNEXT       14
                    152: #define        SLC_XON         15
                    153: #define        SLC_XOFF        16
                    154: #define        SLC_FORW1       17
                    155: #define        SLC_FORW2       18
                    156: 
                    157: #define        NSLC            18
                    158: 
                    159: #define        SLC_NAMES       "0", "SYNCH", "BRK", "IP", "AO", "AYT", "EOR", \
                    160:                        "ABORT", "EOF", "SUSP", "EC", "EL", "EW", "RP", \
                    161:                        "LNEXT", "XON", "XOFF", "FORW1", "FORW2"
                    162: 
                    163: #define        SLC_NOSUPPORT   0
                    164: #define        SLC_CANTCHANGE  1
                    165: #define        SLC_VARIABLE    2
                    166: #define        SLC_DEFAULT     3
                    167: #define        SLC_LEVELBITS   0x03
                    168: 
                    169: #define        SLC_FUNC        0
                    170: #define        SLC_FLAGS       1
                    171: #define        SLC_VALUE       2
                    172: 
                    173: #define        SLC_ACK         0x80
                    174: #define        SLC_FLUSHIN     0x40
                    175: #define        SLC_FLUSHOUT    0x20

unix.superglobalmegacorp.com

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