Skip to content
Snippets Groups Projects
arpa_telnet.h 3.49 KiB
Newer Older
  • Learn to ignore specific revisions
  • #ifndef __ARPA_TELNET_H
    #define __ARPA_TELNET_H
    /*****************************************************************************
     *                                  _   _ ____  _     
     *  Project                     ___| | | |  _ \| |    
     *                             / __| | | | |_) | |    
     *                            | (__| |_| |  _ <| |___ 
     *                             \___|\___/|_| \_\_____|
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
     *
    
     * Copyright (C) 2001, Daniel Stenberg, <daniel@haxx.se>, et al.
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
     *
    
     * In order to be useful for every potential user, curl and libcurl are
     * dual-licensed under the MPL and the MIT/X-derivate licenses.
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
     *
    
     * You may opt to use, copy, modify, merge, publish, distribute and/or sell
     * copies of the Software, and permit persons to whom the Software is
     * furnished to do so, under the terms of the MPL or the MIT/X-derivate
     * licenses. You may pick one of these licenses.
     *
     * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
     * KIND, either express or implied.
     *
     * $Id$
     *****************************************************************************/
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
    
    /*
    
     * Telnet option defines. Add more here if in need.
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
     */
    
    #define TELOPT_BINARY   0  /* binary 8bit data */
    #define TELOPT_SGA      3  /* Supress Go Ahead */
    #define TELOPT_EXOPL  255  /* EXtended OPtions List */
    #define TELOPT_TTYPE   24  /* Terminal TYPE */
    #define TELOPT_XDISPLOC 35 /* X DISPlay LOCation */
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
    
    
    #define TELOPT_NEW_ENVIRON 39  /* NEW ENVIRONment variables */
    #define NEW_ENV_VAR   0
    #define NEW_ENV_VALUE 1
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
    
    /*
    
     * The telnet options represented as strings
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
     */
    
    static const char *telnetoptions[]=
    
    {
      "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",
      "DE TERMINAL", "SUPDUP",         "SUPDUP OUTPUT", "SEND LOCATION",
      "TERM TYPE",   "END OF RECORD",  "TACACS UID",    "OUTPUT MARKING",
      "TTYLOC",      "3270 REGIME",    "X3 PAD",        "NAWS",
      "TERM SPEED",  "LFLOW",          "LINEMODE",      "XDISPLOC",
      "OLD-ENVIRON", "AUTHENTICATION", "ENCRYPT",       "NEW-ENVIRON"
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
    };
    
    
    #define TELOPT_MAXIMUM TELOPT_NEW_ENVIRON
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
    
    
    #define TELOPT_OK(x) ((x) <= TELOPT_MAXIMUM)
    #define TELOPT(x)    telnetoptions[x]
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
    
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
    
    /*
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
     */
    
    #define xEOF 236 /* End Of File */ 
    #define SE   240 /* Sub negotiation End */
    #define NOP  241 /* No OPeration */
    #define DM   242 /* Data Mark */
    #define GA   249 /* Go Ahead, reverse the line */
    #define SB   250 /* SuBnegotiation */
    #define WILL 251 /* Our side WILL use this option */
    #define WONT 252 /* Our side WON'T use this option */
    #define DO   253 /* DO use this option! */
    #define DONT 254 /* DON'T use this option! */
    #define IAC  255 /* Interpret As Command */
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
    
    /*
    
     * Then those numbers represented as strings:
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
     */
    
    static const char *telnetcmds[]=
    
    {
      "EOF",  "SUSP",  "ABORT", "EOR",  "SE",
      "NOP",  "DMARK", "BRK",   "IP",   "AO",
      "AYT",  "EC",    "EL",    "GA",   "SB",
      "WILL", "WONT",  "DO",    "DONT", "IAC"
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
    };
    
    
    #define TELCMD_MINIMUM xEOF /* the first one */
    #define TELCMD_MAXIMUM  IAC  /* surprise, 255 is the last one! ;-) */
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
    
    
    #define TELQUAL_IS   0
    #define TELQUAL_SEND 1
    #define TELQUAL_INFO 2
    #define TELQUAL_NAME 3
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
    
    
    #define TELCMD_OK(x) ( ((unsigned int)(x) >= TELCMD_MINIMUM) && \
                           ((unsigned int)(x) <= TELCMD_MAXIMUM) )
    #define TELCMD(x)    telnetcmds[(x)-TELCMD_MINIMUM]
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
    
    #endif