Logo Search packages:      
Sourcecode: glibc version File versions

telnet.h

/*
 * Copyright (c) 1983, 1993
 *    The Regents of the University of California.  All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 4. Neither the name of the University nor the names of its contributors
 *    may be used to endorse or promote products derived from this software
 *    without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 *    @(#)telnet.h      8.2 (Berkeley) 12/15/93
 */

#ifndef _ARPA_TELNET_H
#define     _ARPA_TELNET_H 1

/*
 * Definitions for the TELNET protocol.
 */
#define     IAC   255         /* interpret as command: */
#define     DONT  254         /* you are not to use option */
#define     DO    253         /* please, you use option */
#define     WONT  252         /* I won't use option */
#define     WILL  251         /* I will use option */
#define     SB    250         /* interpret as subnegotiation */
#define     GA    249         /* you may reverse the line */
#define     EL    248         /* erase the current line */
#define     EC    247         /* erase the current character */
#define     AYT   246         /* are you there */
#define     AO    245         /* abort output--but let prog finish */
#define     IP    244         /* interrupt process--permanently */
#define     BREAK 243         /* break */
#define     DM    242         /* data mark--for connect. cleaning */
#define     NOP   241         /* nop */
#define     SE    240         /* end sub negotiation */
#define EOR     239             /* end of record (transparent mode) */
#define     ABORT 238         /* Abort process */
#define     SUSP  237         /* Suspend process */
#define     xEOF  236         /* End of file: EOF is already used... */

#define SYNCH     242         /* for telfunc calls */

#ifdef TELCMDS
char *telcmds[] = {
      "EOF", "SUSP", "ABORT", "EOR",
      "SE", "NOP", "DMARK", "BRK", "IP", "AO", "AYT", "EC",
      "EL", "GA", "SB", "WILL", "WONT", "DO", "DONT", "IAC", 0,
};
#else
extern char *telcmds[];
#endif

#define     TELCMD_FIRST      xEOF
#define     TELCMD_LAST IAC
#define     TELCMD_OK(x)      ((unsigned int)(x) <= TELCMD_LAST && \
                   (unsigned int)(x) >= TELCMD_FIRST)
#define     TELCMD(x)   telcmds[(x)-TELCMD_FIRST]

/* telnet options */
#define TELOPT_BINARY   0     /* 8-bit data path */
#define TELOPT_ECHO     1     /* echo */
#define     TELOPT_RCP  2     /* prepare to reconnect */
#define     TELOPT_SGA  3     /* suppress go ahead */
#define     TELOPT_NAMS 4     /* approximate message size */
#define     TELOPT_STATUS     5     /* give status */
#define     TELOPT_TM   6     /* timing mark */
#define     TELOPT_RCTE 7     /* remote controlled transmission and echo */
#define TELOPT_NAOL     8     /* negotiate about output line width */
#define TELOPT_NAOP     9     /* negotiate about output page size */
#define TELOPT_NAOCRD   10    /* negotiate about CR disposition */
#define TELOPT_NAOHTS   11    /* negotiate about horizontal tabstops */
#define TELOPT_NAOHTD   12    /* negotiate about horizontal tab disposition */
#define TELOPT_NAOFFD   13    /* negotiate about formfeed disposition */
#define TELOPT_NAOVTS   14    /* negotiate about vertical tab stops */
#define TELOPT_NAOVTD   15    /* negotiate about vertical tab disposition */
#define TELOPT_NAOLFD   16    /* negotiate about output LF disposition */
#define TELOPT_XASCII   17    /* extended ascii character set */
#define     TELOPT_LOGOUT     18    /* force logout */
#define     TELOPT_BM   19    /* byte macro */
#define     TELOPT_DET  20    /* data entry terminal */
#define     TELOPT_SUPDUP     21    /* supdup protocol */
#define     TELOPT_SUPDUPOUTPUT 22  /* supdup output */
#define     TELOPT_SNDLOC     23    /* send location */
#define     TELOPT_TTYPE      24    /* terminal type */
#define     TELOPT_EOR  25    /* end or record */
#define     TELOPT_TUID 26    /* TACACS user identification */
#define     TELOPT_OUTMRK     27    /* output marking */
#define     TELOPT_TTYLOC     28    /* terminal location number */
#define     TELOPT_3270REGIME 29    /* 3270 regime */
#define     TELOPT_X3PAD      30    /* X.3 PAD */
#define     TELOPT_NAWS 31    /* window size */
#define     TELOPT_TSPEED     32    /* terminal speed */
#define     TELOPT_LFLOW      33    /* remote flow control */
#define TELOPT_LINEMODE 34    /* Linemode option */
#define TELOPT_XDISPLOC 35    /* X Display Location */
#define TELOPT_OLD_ENVIRON 36 /* Old - Environment variables */
#define     TELOPT_AUTHENTICATION 37/* Authenticate */
#define     TELOPT_ENCRYPT    38    /* Encryption option */
#define TELOPT_NEW_ENVIRON 39 /* New - Environment variables */
#define     TELOPT_EXOPL      255   /* extended-options-list */


#define     NTELOPTS    (1+TELOPT_NEW_ENVIRON)
#ifdef TELOPTS
char *telopts[NTELOPTS+1] = {
      "BINARY", "ECHO", "RCP", "SUPPRESS GO AHEAD", "NAME",
      "STATUS", "TIMING MARK", "RCTE", "NAOL", "NAOP",
      "NAOCRD", "NAOHTS", "NAOHTD", "NAOFFD", "NAOVTS",
      "NAOVTD", "NAOLFD", "EXTEND ASCII", "LOGOUT", "BYTE MACRO",
      "DATA ENTRY TERMINAL", "SUPDUP", "SUPDUP OUTPUT",
      "SEND LOCATION", "TERMINAL TYPE", "END OF RECORD",
      "TACACS UID", "OUTPUT MARKING", "TTYLOC",
      "3270 REGIME", "X.3 PAD", "NAWS", "TSPEED", "LFLOW",
      "LINEMODE", "XDISPLOC", "OLD-ENVIRON", "AUTHENTICATION",
      "ENCRYPT", "NEW-ENVIRON",
      0,
};
#define     TELOPT_FIRST      TELOPT_BINARY
#define     TELOPT_LAST TELOPT_NEW_ENVIRON
#define     TELOPT_OK(x)      ((unsigned int)(x) <= TELOPT_LAST)
#define     TELOPT(x)   telopts[(x)-TELOPT_FIRST]
#endif

/* sub-option qualifiers */
#define     TELQUAL_IS  0     /* option is... */
#define     TELQUAL_SEND      1     /* send option */
#define     TELQUAL_INFO      2     /* ENVIRON: informational version of IS */
#define     TELQUAL_REPLY     2     /* AUTHENTICATION: client version of IS */
#define     TELQUAL_NAME      3     /* AUTHENTICATION: client version of IS */

#define     LFLOW_OFF         0     /* Disable remote flow control */
#define     LFLOW_ON          1     /* Enable remote flow control */
#define     LFLOW_RESTART_ANY 2     /* Restart output on any char */
#define     LFLOW_RESTART_XON 3     /* Restart output only on XON */

/*
 * LINEMODE suboptions
 */

#define     LM_MODE           1
#define     LM_FORWARDMASK    2
#define     LM_SLC            3

#define     MODE_EDIT   0x01
#define     MODE_TRAPSIG      0x02
#define     MODE_ACK    0x04
#define MODE_SOFT_TAB   0x08
#define MODE_LIT_ECHO   0x10

#define     MODE_MASK   0x1f

/* Not part of protocol, but needed to simplify things... */
#define MODE_FLOW       0x0100
#define MODE_ECHO       0x0200
#define MODE_INBIN            0x0400
#define MODE_OUTBIN           0x0800
#define MODE_FORCE            0x1000

#define     SLC_SYNCH   1
#define     SLC_BRK           2
#define     SLC_IP            3
#define     SLC_AO            4
#define     SLC_AYT           5
#define     SLC_EOR           6
#define     SLC_ABORT   7
#define     SLC_EOF           8
#define     SLC_SUSP    9
#define     SLC_EC            10
#define     SLC_EL            11
#define     SLC_EW            12
#define     SLC_RP            13
#define     SLC_LNEXT   14
#define     SLC_XON           15
#define     SLC_XOFF    16
#define     SLC_FORW1   17
#define     SLC_FORW2   18

#define     NSLC        18

/*
 * For backwards compatibility, we define SLC_NAMES to be the
 * list of names if SLC_NAMES is not defined.
 */
#define     SLC_NAMELIST      "0", "SYNCH", "BRK", "IP", "AO", "AYT", "EOR", \
                  "ABORT", "EOF", "SUSP", "EC", "EL", "EW", "RP", \
                  "LNEXT", "XON", "XOFF", "FORW1", "FORW2", 0,
#ifdef      SLC_NAMES
char *slc_names[] = {
      SLC_NAMELIST
};
#else
extern char *slc_names[];
#define     SLC_NAMES SLC_NAMELIST
#endif

#define     SLC_NAME_OK(x)    ((unsigned int)(x) <= NSLC)
#define SLC_NAME(x)     slc_names[x]

#define     SLC_NOSUPPORT     0
#define     SLC_CANTCHANGE    1
#define     SLC_VARIABLE      2
#define     SLC_DEFAULT 3
#define     SLC_LEVELBITS     0x03

#define     SLC_FUNC    0
#define     SLC_FLAGS   1
#define     SLC_VALUE   2

#define     SLC_ACK           0x80
#define     SLC_FLUSHIN 0x40
#define     SLC_FLUSHOUT      0x20

#define     OLD_ENV_VAR 1
#define     OLD_ENV_VALUE     0
#define     NEW_ENV_VAR 0
#define     NEW_ENV_VALUE     1
#define     ENV_ESC           2
#define ENV_USERVAR     3

/*
 * AUTHENTICATION suboptions
 */

/*
 * Who is authenticating who ...
 */
#define     AUTH_WHO_CLIENT         0     /* Client authenticating server */
#define     AUTH_WHO_SERVER         1     /* Server authenticating client */
#define     AUTH_WHO_MASK           1

/*
 * amount of authentication done
 */
#define     AUTH_HOW_ONE_WAY  0
#define     AUTH_HOW_MUTUAL         2
#define     AUTH_HOW_MASK           2

#define     AUTHTYPE_NULL           0
#define     AUTHTYPE_KERBEROS_V4    1
#define     AUTHTYPE_KERBEROS_V5    2
#define     AUTHTYPE_SPX            3
#define     AUTHTYPE_MINK           4
#define     AUTHTYPE_CNT            5

#define     AUTHTYPE_TEST           99

#ifdef      AUTH_NAMES
char *authtype_names[] = {
      "NULL", "KERBEROS_V4", "KERBEROS_V5", "SPX", "MINK", 0,
};
#else
extern char *authtype_names[];
#endif

#define     AUTHTYPE_NAME_OK(x)     ((unsigned int)(x) < AUTHTYPE_CNT)
#define     AUTHTYPE_NAME(x)  authtype_names[x]

/*
 * ENCRYPTion suboptions
 */
#define     ENCRYPT_IS        0     /* I pick encryption type ... */
#define     ENCRYPT_SUPPORT         1     /* I support encryption types ... */
#define     ENCRYPT_REPLY           2     /* Initial setup response */
#define     ENCRYPT_START           3     /* Am starting to send encrypted */
#define     ENCRYPT_END       4     /* Am ending encrypted */
#define     ENCRYPT_REQSTART  5     /* Request you start encrypting */
#define     ENCRYPT_REQEND          6     /* Request you send encrypting */
#define     ENCRYPT_ENC_KEYID 7
#define     ENCRYPT_DEC_KEYID 8
#define     ENCRYPT_CNT       9

#define     ENCTYPE_ANY       0
#define     ENCTYPE_DES_CFB64 1
#define     ENCTYPE_DES_OFB64 2
#define     ENCTYPE_CNT       3

#ifdef      ENCRYPT_NAMES
char *encrypt_names[] = {
      "IS", "SUPPORT", "REPLY", "START", "END",
      "REQUEST-START", "REQUEST-END", "ENC-KEYID", "DEC-KEYID",
      0,
};
char *enctype_names[] = {
      "ANY", "DES_CFB64",  "DES_OFB64",  0,
};
#else
extern char *encrypt_names[];
extern char *enctype_names[];
#endif


#define     ENCRYPT_NAME_OK(x)      ((unsigned int)(x) < ENCRYPT_CNT)
#define     ENCRYPT_NAME(x)         encrypt_names[x]

#define     ENCTYPE_NAME_OK(x)      ((unsigned int)(x) < ENCTYPE_CNT)
#define     ENCTYPE_NAME(x)         enctype_names[x]

#endif /* arpa/telnet.h */

Generated by  Doxygen 1.6.0   Back to index