new copyright notice
[unix-history] / usr / src / include / arpa / telnet.h
index ef8a386..74d026c 100644 (file)
@@ -1,4 +1,11 @@
-/*     telnet.h        4.2     82/03/01        */
+/*
+ * Copyright (c) 1983 Regents of the University of California.
+ * All rights reserved.
+ *
+ * %sccs.include.redist.c%
+ *
+ *     @(#)telnet.h    5.8 (Berkeley) %G%
+ */
 
 /*
  * Definitions for the TELNET protocol.
 
 /*
  * Definitions for the TELNET protocol.
 #define        DM      242             /* data mark--for connect. cleaning */
 #define        NOP     241             /* nop */
 #define        SE      240             /* end sub negotiation */
 #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 */
 
 
 #define SYNCH  242             /* for telfunc calls */
 
-/* telnet options */
+#ifdef TELCMDS
+char *telcmds[] = {
+       "EOF", "SUSP", "ABORT", "EOR",
+       "SE", "NOP", "DMARK", "BRK", "IP", "AO", "AYT", "EC",
+       "EL", "GA", "SB", "WILL", "WONT", "DO", "DONT", "IAC",
+};
+#define        TELCMD_FIRST    xEOF
+#define        TELCMD_LAST     IAC
+#define        TELCMD_OK(x)    ((x) <= TELCMD_LAST && (x) >= TELCMD_FIRST)
+#define        TELCMD(x)       telcmds[(x)-TELCMD_FIRST]
+#endif
 
 
+/* telnet options */
 #define TELOPT_BINARY  0       /* 8-bit data path */
 #define TELOPT_ECHO    1       /* echo */
 #define        TELOPT_RCP      2       /* prepare to reconnect */
 #define TELOPT_BINARY  0       /* 8-bit data path */
 #define TELOPT_ECHO    1       /* echo */
 #define        TELOPT_RCP      2       /* prepare to reconnect */
 #define        TELOPT_BM       19      /* byte macro */
 #define        TELOPT_DET      20      /* data entry terminal */
 #define        TELOPT_SUPDUP   21      /* supdup protocol */
 #define        TELOPT_BM       19      /* byte macro */
 #define        TELOPT_DET      20      /* data entry terminal */
 #define        TELOPT_SUPDUP   21      /* supdup protocol */
-#define TELOPT_EXOPL   255     /* extended-options-list */
-
-#ifdef TELCMDS
-char *telcmds[] = {
-       "SE", "NOP", "DMARK", "BRK", "IP", "AO", "AYT", "EC",
-       "EL", "GA", "SB", "WILL", "WONT", "DO", "DONT", "IAC",
-};
-#endif
+#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_EXOPL    255     /* extended-options-list */
 
 
+#define        NTELOPTS        (1+TELOPT_LINEMODE)
 #ifdef TELOPTS
 #ifdef TELOPTS
-char *telopts[] = {
+char *telopts[NTELOPTS] = {
        "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",
        "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"
+       "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",
 };
 };
+#define        TELOPT_FIRST    TELOPT_BINARY
+#define        TELOPT_LAST     TELOPT_LINEMODE
+#define        TELOPT_OK(x)    ((x) <= TELOPT_LAST && (x) >= TELOPT_FIRST)
+#define        TELOPT(x)       telopts[(x)-TELOPT_FIRST]
 #endif
 #endif
+
+/* sub-option qualifiers */
+#define        TELQUAL_IS      0       /* option is... */
+#define        TELQUAL_SEND    1       /* send option */
+
+/*
+ * 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_MASK       (MODE_EDIT|MODE_TRAPSIG|MODE_ACK)
+
+/* 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
+
+#define        SLC_NAMES       "0", "SYNCH", "BRK", "IP", "AO", "AYT", "EOR", \
+                       "ABORT", "EOF", "SUSP", "EC", "EL", "EW", "RP", \
+                       "LNEXT", "XON", "XOFF", "FORW1", "FORW2"
+
+#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