xref: /dragonfly/usr.bin/telnet/README (revision bbb35c81f71fe2a0880a1f8bb77876ee98b63338)
1# $FreeBSD: src/usr.bin/telnet/README,v 1.1.1.2.6.1 2001/03/04 09:10:39 kris Exp $
2
3This is a distribution of both client and server telnet.  These programs
4have been compiled on:
5                              telnet    telnetd
6          4.4 BSD-Lite          x         x
7          4.3 BSD Reno          X         X
8          UNICOS 9.1            X         X
9          UNICOS 9.0            X         X
10          UNICOS 8.0            X         X
11          BSDI 2.0    X         X
12          Solaris 2.4       x       x (no linemode in server)
13          SunOs 4.1.4           X         X (no linemode in server)
14          Ultrix 4.3            X         X (no linemode in server)
15          Ultrix 4.1            X         X (no linemode in server)
16
17In addition, previous versions have been compiled on the following
18machines, but were not available for testing this version.
19                              telnet    telnetd
20          Next1.0               X         X
21          UNICOS 8.3            X         X
22          UNICOS 7.C            X         X
23          UNICOS 7.0            X         X
24          SunOs 4.0.3c          X         X (no linemode in server)
25          4.3 BSD               X         X (no linemode in server)
26          DYNIX V3.0.12         X         X (no linemode in server)
27          Ultrix 3.1            X         X (no linemode in server)
28          Ultrix 4.0            X         X (no linemode in server)
29          SunOs 3.5   X         X (no linemode in server)
30          SunOs 4.1.3           X         X (no linemode in server)
31          Solaris 2.2       x       x (no linemode in server)
32          Solaris 2.3       x       x (no linemode in server)
33          BSDI 1.0    X         X
34          BSDI 1.1    X         X
35          DYNIX V3.0.17.9       X         X (no linemode in server)
36          HP-UX 8.0   x       x (no linemode in server)
37
38This code should work, but there are no guarantees.
39
40May 30, 1995
41
42This release represents what is on the 4.4BSD-Lite2 release, which
43should be the final BSD release.  I will continue to support of
44telnet, The code (without encryption) is available via anonymous ftp
45from ftp.cray.com, in src/telnet/telnet.YY.MM.DD.NE.tar.Z, where
46YY.MM.DD is replaced with the year, month and day of the release.
47If you can't find it at one of these places, at some point in the
48near future information about the latest releases should be available
49from ftp.borman.com.
50
51In addition, the version with the encryption code is available via
52ftp from net-dist.mit.edu, in the directory /pub/telnet.  There
53is a README file there that gives further information on how
54to get the distribution.
55
56Questions, comments, bug reports and bug fixes can be sent to
57one of these addresses:
58                    dab@borman.com
59                    dab@cray.com
60                    dab@bsdi.com
61
62This release is mainly bug fixes and code cleanup.
63
64          Replace all calls to bcopy()/bzero() with calls to
65          memmove()/memset() and all calls to index()/rindex()
66          with calls to strchr()/strrchr().
67
68          Add some missing diagnostics for option tracing
69          to telnetd.
70
71          Add support for BSDI 2.0 and Solaris 2.4.
72
73          Add support for UNICOS 8.0
74
75          Get rid of expanded tabs and trailing white spaces.
76
77          From Paul Vixie:
78                    Fix for telnet going into an endless spin
79                    when the session dies abnormally.
80
81          From Jef Poskanzer:
82                    Changes to allow telnet to compile
83                    under SunOS 3.5.
84
85          From Philip Guenther:
86                    makeutx() doesn't expand utmpx,
87                    use pututxline() instead.
88
89          From Chris Torek:
90                    Add a sleep(1) before execing login
91                    to avoid race condition that can eat
92                    up the login prompt.
93                    Use terminal speed directly if it is
94                    not an encoded value.
95
96          From Steve Parker:
97                    Fix to realloc() call.  Fix for execing
98                    login on solaris with no user name.
99
100January 19, 1994
101
102This is a list of some of the changes since the last tar release
103of telnet/telnetd.  There are probably other changes that aren't
104listed here, but this should hit a lot of the main ones.
105
106   General:
107          Changed #define for AUTHENTICATE to AUTHENTICATION
108          Changed #define for ENCRYPT to ENCRYPTION
109          Changed #define for DES_ENCRYPT to DES_ENCRYPTION
110
111          Added support for SPX authentication: -DSPX
112
113          Added support for Kerberos Version 5 authentication: -DKRB5
114
115          Added support for ANSI C function prototypes
116
117          Added support for the NEW-ENVIRON option (RFC-1572)
118          including support for USERVAR.
119
120          Made support for the old Environment Option (RFC-1408)
121          conditional on -DOLD_ENVIRON
122
123          Added #define ENV_HACK - support for RFC 1571
124
125          The encryption code is removed from the public distributions.
126          Domestic 4.4 BSD distributions contain the encryption code.
127
128          ENV_HACK: Code to deal with systems that only implement
129                    the old ENVIRON option, and have reversed definitions
130                    of ENV_VAR and ENV_VAL.  Also fixes ENV processing in
131                    client to handle things besides just the default set...
132
133          NO_BSD_SETJMP: UNICOS configuration for
134                    UNICOS 6.1/6.0/5.1/5.0 systems.
135
136          STREAMSPTY: Use /dev/ptmx to get a clean pty.  This
137                    is for SVr4 derivatives (Like Solaris)
138
139          UTMPX: For systems that have /etc/utmpx. This is for
140                    SVr4 derivatives (Like Solaris)
141
142          Definitions for BSDI 1.0
143
144          Definitions for 4.3 Reno and 4.4 BSD.
145
146          Definitions for UNICOS 8.0 and UNICOS 7.C
147
148          Definitions for Solaris 2.0
149
150          Definitions for HP-UX 8.0
151
152          Latest Copyright notices from Berkeley.
153
154          FLOW-CONTROL: support for RFC-XXXx
155
156
157   Client Specific:
158
159          Fix the "send" command to not send garbage...
160
161          Fix status message for "skiprc"
162
163          Make sure to send NAWS after telnet has been suspended
164          or an external command has been run, if the window size
165          has changed.
166
167          sysV88 support.
168
169   Server Specific:
170
171          Support flowcontrol option in non-linemode servers.
172
173          -k Server supports Kludge Linemode, but will default to
174             either single character mode or real Linemode support.
175             The user will have to explicitly ask to switch into
176             kludge linemode. ("stty extproc", or escape back to
177             to telnet and say "mode line".)
178
179          -u Specify the length of the hostname field in the utmp
180             file.  Hostname longer than this length will be put
181             into the utmp file in dotted decimal notation, rather
182             than putting in a truncated hostname.
183
184          -U Registered hosts only.  If a reverse hostname lookup
185             fails, the connection will be refused.
186
187          -f/-F
188             Allows forwarding of credentials for KRB5.
189
190Februrary 22, 1991:
191
192    Features:
193
194          This version of telnet/telnetd has support for both
195          the AUTHENTICATION and ENCRYPTION options.  The
196          AUTHENTICATION option is fairly well defined, and
197          an option number has been assigned to it.  The
198          ENCRYPTION option is still in a state of flux; an
199          option number has been assigned to, but it is still
200          subject to change.  The code is provided in this release
201          for experimental and testing purposes.
202
203          The telnet "send" command can now be used to send
204          do/dont/will/wont commands, with any telnet option
205          name.  The rules for when do/dont/will/wont are sent
206          are still followed, so just because the user requests
207          that one of these be sent doesn't mean that it will
208          be sent...
209
210          The telnet "getstatus" command no longer requires
211          that option printing be enabled to see the response
212          to the "DO STATUS" command.
213
214          A -n flag has been added to telnetd to disable
215          keepalives.
216
217          A new telnet command, "auth" has been added (if
218          AUTHENTICATE is defined).  It has four sub-commands,
219          "status", "disable", "enable" and "help".
220
221          A new telnet command, "encrypt" has been added (if
222          ENCRYPT is defined).  It has many sub-commands:
223          "enable", "type", "start", "stop", "input",
224          "-input", "output", "-output", "status", and "help".
225
226          The LOGOUT option is now supported by both telnet
227          and telnetd, a new command, "logout", was added
228          to support this.
229
230          Several new toggle options were added:
231              "autoencrypt", "autodecrypt", "autologin", "authdebug",
232              "encdebug", "skiprc", "verbose_encrypt"
233
234          An "rlogin" interface has been added.  If the program
235          is named "rlogin", or the "-r" flag is given, then
236          an rlogin type of interface will be used.
237                    ~.        Terminates the session
238                    ~<susp> Suspend the session
239                    ~^]       Escape to telnet command mode
240                    ~~        Pass through the ~.
241              BUG: If you type the rlogin escape character
242                     in the middle of a line while in rlogin
243                     mode, you cannot erase it or any characters
244                     before it.  Hopefully this can be fixed
245                     in a future release...
246
247    General changes:
248
249          A "libtelnet.a" has now been created.  This libraray
250          contains code that is common to both telnet and
251          telnetd.  This is also where library routines that
252          are needed, but are not in the standard C library,
253          are placed.
254
255          The makefiles have been re-done.  All of the site
256          specific configuration information has now been put
257          into a single "Config.generic" file, in the top level
258          directory.  Changing this one file will take care of
259          all three subdirectories.  Also, to add a new/local
260          definition, a "Config.local" file may be created
261          at the top level; if that file exists, the subdirectories
262          will use that file instead of "Config.generic".
263
264          Many 1-2 line functions in commands.c have been
265          removed, and just inserted in-line, or replaced
266          with a macro.
267
268    Bug Fixes:
269
270          The non-termio code in both telnet and telnetd was
271          setting/clearing CTLECH in the sg_flags word.  This
272          was incorrect, and has been changed to set/clear the
273          LCTLECH bit in the local mode word.
274
275          The SRCRT #define has been removed.  If IP_OPTIONS
276          and IPPROTO_IP are defined on the system, then the
277          source route code is automatically enabled.
278
279          The NO_GETTYTAB #define has been removed; there
280          is a compatibility routine that can be built into
281          libtelnet to achieve the same results.
282
283          The server, telnetd, has been switched to use getopt()
284          for parsing the argument list.
285
286          The code for getting the input/output speeds via
287          cfgetispeed()/cfgetospeed() was still not quite
288          right in telnet.  Posix says if the ispeed is 0,
289          then it is really equal to the ospeed.
290
291          The suboption processing code in telnet now has
292          explicit checks to make sure that we received
293          the entire suboption (telnetd was already doing this).
294
295          The telnet code for processing the terminal type
296          could cause a core dump if an existing connection
297          was closed, and a new connection opened without
298          exiting telnet.
299
300          Telnetd was doing a TCSADRAIN when setting the new
301          terminal settings;  This is not good, because it means
302          that the tcsetattr() will hang waiting for output to
303          drain, and telnetd is the only one that will drain
304          the output...  The fix is to use TCSANOW which does
305          not wait.
306
307          Telnetd was improperly setting/clearing the ISTRIP
308          flag in the c_lflag field, it should be using the
309          c_iflag field.
310
311          When the child process of telnetd was opening the
312          slave side of the pty, it was re-setting the EXTPROC
313          bit too early, and some of the other initialization
314          code was wiping it out.  This would cause telnetd
315          to go out of linemode and into single character mode.
316
317          One instance of leaving linemode in telnetd forgot
318          to send a WILL ECHO to the client, the net result
319          would be that the user would see double character
320          echo.
321
322          If the MODE was being changed several times very
323          quickly, telnetd could get out of sync with the
324          state changes and the returning acks; and wind up
325          being left in the wrong state.
326
327September 14, 1990:
328
329          Switch the client to use getopt() for parsing the
330          argument list.  The 4.3Reno getopt.c is included for
331          systems that don't have getopt().
332
333          Use the posix _POSIX_VDISABLE value for what value
334          to use when disabling special characters.  If this
335          is undefined, it defaults to 0x3ff.
336
337          For non-termio systems, TIOCSETP was being used to
338          change the state of the terminal.  This causes the
339          input queue to be flushed, which we don't want.  This
340          is now changed to TIOCSETN.
341
342          Take out the "#ifdef notdef" around the code in the
343          server that generates a "sync" when the pty oputput
344          is flushed.  The potential problem is that some older
345          telnet clients may go into an infinate loop when they
346          receive a "sync", if so, the server can be compiled
347          with "NO_URGENT" defined.
348
349          Fix the client where it was setting/clearing the OPOST
350          bit in the c_lflag field, not the c_oflag field.
351
352          Fix the client where it was setting/clearing the ISTRIP
353          bit in the c_lflag field, not the c_iflag field.  (On
354          4.3Reno, this is the ECHOPRT bit in the c_lflag field.)
355          The client also had its interpretation of WILL BINARY
356          and DO BINARY reversed.
357
358          Fix a bug in client that would cause a core dump when
359          attempting to remove the last environment variable.
360
361          In the client, there were a few places were switch()
362          was being passed a character, and if it was a negative
363          value, it could get sign extended, and not match
364          the 8 bit case statements.  The fix is to and the
365          switch value with 0xff.
366
367          Add a couple more printoption() calls in the client, I
368          don't think there are any more places were a telnet
369          command can be received and not printed out when
370          "options" is on.
371
372          A new flag has been added to the client, "-a".  Currently,
373          this just causes the USER name to be sent across, in
374          the future this may be used to signify that automatic
375          authentication is requested.
376
377          The USER variable is now only sent by the client if
378          the "-a" or "-l user" options are explicity used, or
379          if the user explicitly asks for the "USER" environment
380          variable to be exported.  In the server, if it receives
381          the "USER" environment variable, it won't print out the
382          banner message, so that only "Password:" will be printed.
383          This makes the symantics more like rlogin, and should be
384          more familiar to the user.  (People are not used to
385          getting a banner message, and then getting just a
386          "Password:" prompt.)
387
388          Re-vamp the code for starting up the child login
389          process.  The code was getting ugly, and it was
390          hard to tell what was really going on.  What we
391          do now is after the fork(), in the child:
392                    1) make sure we have no controlling tty
393                    2) open and initialize the tty
394                    3) do a setsid()/setpgrp()
395                    4) makes the tty our controlling tty.
396          On some systems, #2 makes the tty our controlling
397          tty, and #4 is a no-op.  The parent process does
398          a gets rid of any controlling tty after the child
399          is fork()ed.
400
401          Use the strdup() library routine in telnet, instead
402          of the local savestr() routine.  If you don't have
403          strdup(), you need to define NO_STRDUP.
404
405          Add support for ^T (SIGINFO/VSTATUS), found in the
406          4.3Reno distribution.  This maps to the AYT character.
407          You need a 4-line bugfix in the kernel to get this
408          to work properly:
409
410          > *** tty_pty.c.ORG Tue Sep 11 09:41:53 1990
411          > --- tty_pty.c     Tue Sep 11 17:48:03 1990
412          > ***************
413          > *** 609,613 ****
414          >                             if ((tp->t_lflag&NOFLSH) == 0)
415          >                                       ttyflush(tp, FREAD|FWRITE);
416          > !                           pgsignal(tp->t_pgrp, *(unsigned int *)data);
417          >                             return(0);
418          >                   }
419          > --- 609,616 ----
420          >                             if ((tp->t_lflag&NOFLSH) == 0)
421          >                                       ttyflush(tp, FREAD|FWRITE);
422          > !                           pgsignal(tp->t_pgrp, *(unsigned int *)data, 1);
423          > !                           if ((*(unsigned int *)data == SIGINFO) &&
424          > !                               ((tp->t_lflag&NOKERNINFO) == 0))
425          > !                                     ttyinfo(tp);
426          >                             return(0);
427          >                   }
428
429          The client is now smarter when setting the telnet escape
430          character; it only sets it to one of VEOL and VEOL2 if
431          one of them is undefined, and the other one is not already
432          defined to the telnet escape character.
433
434          Handle TERMIOS systems that have separate input and output
435          line speed settings imbedded in the flags.
436
437          Many other minor bug fixes.
438
439June 20, 1990:
440          Re-organize makefiles and source tree.  The telnet/Source
441          directory is now gone, and all the source that was in
442          telnet/Source is now just in the telnet directory.
443
444          Separate makefile for each system are now gone.  There
445          are two makefiles, Makefile and Makefile.generic.
446          The "Makefile" has the definitions for the various
447          system, and "Makefile.generic" does all the work.
448          There is a variable called "WHAT" that is used to
449          specify what to make.  For example, in the telnet
450          directory, you might say:
451                    make 4.4bsd WHAT=clean
452          to clean out the directory.
453
454          Add support for the ENVIRON and XDISPLOC options.
455          In order for the server to work, login has to have
456          the "-p" option to preserve environment variables.
457
458          Add the SOFT_TAB and LIT_ECHO modes in the LINEMODE support.
459
460          Add the "-l user" option to command line and open command
461          (This is passed through the ENVIRON option).
462
463          Add the "-e" command line option, for setting the escape
464          character.
465
466          Add the "-D", diagnostic, option to the server.  This allows
467          the server to print out debug information, which is very
468          useful when trying to debug a telnet that doesn't have any
469          debugging ability.
470
471          Turn off the literal next character when not in LINEMODE.
472
473          Don't recognize ^Y locally, just pass it through.
474
475          Make minor modifications for Sun4.0 and Sun4.1
476
477          Add support for both FORW1 and FORW2 characters.  The
478          telnet escpape character is set to whichever of the
479          two is not being used.  If both are in use, the escape
480          character is not set, so when in linemode the user will
481          have to follow the escape character with a <CR> or <EOF)
482          to get it passed through.
483
484          Commands can now be put in single and double quotes, and
485          a backslash is now an escape character.  This is needed
486          for allowing arbitrary strings to be assigned to environment
487          variables.
488
489          Switch telnetd to use macros like telnet for keeping
490          track of the state of all the options.
491
492          Fix telnetd's processing of options so that we always do
493          the right processing of the LINEMODE option, regardless
494          of who initiates the request to turn it on.  Also, make
495          sure that if the other side went "WILL ECHO" in response
496          to our "DO ECHO", that we send a "DONT ECHO" to get the
497          option turned back off!
498
499          Fix the TERMIOS setting of the terminal speed to handle both
500          BSD's separate fields, and the SYSV method of CBAUD bits.
501
502          Change how we deal with the other side refusing to enable
503          an option.  The sequence used to be: send DO option; receive
504          WONT option; send DONT option.  Now, the sequence is: send
505          DO option; receive WONT option.  Both should be valid
506          according to the spec, but there has been at least one
507          client implementation of telnet identified that can get
508          really confused by this.  (The exact sequence, from a trace
509          on the server side, is (numbers are number of responses that
510          we expect to get after that line...):
511
512                    send WILL ECHO      1 (initial request)
513                    send WONT ECHO      2 (server is changing state)
514                    recv DO ECHO        1 (first reply, ok.  expect DONT ECHO next)
515                    send WILL ECHO      2 (server changes state again)
516                    recv DONT ECHO      1 (second reply, ok.  expect DO ECHO next)
517                    recv DONT ECHO      0 (third reply, wrong answer. got DONT!!!)
518          ***       send WONT ECHO        (send WONT to acknowledge the DONT)
519                    send WILL ECHO      1 (ask again to enable option)
520                    recv DO ECHO        0
521
522                    recv DONT ECHO      0
523                    send WONT ECHO      1
524                    recv DONT ECHO      0
525                    recv DO ECHO        1
526                    send WILL ECHO      0
527                    (and the last 5 lines loop forever)
528
529          The line with the "***" is last of the WILL/DONT/WONT sequence.
530          The change to the server to not generate that makes this same
531          example become:
532
533                    send will ECHO      1
534                    send wont ECHO      2
535                    recv do ECHO        1
536                    send will ECHO      2
537                    recv dont ECHO      1
538                    recv dont ECHO      0
539                    recv do ECHO        1
540                    send will ECHO      0
541
542          There is other option negotiation going on, and not sending
543          the third part changes some of the timings, but this specific
544          example no longer gets stuck in a loop.  The "telnet.state"
545          file has been modified to reflect this change to the algorithm.
546
547          A bunch of miscellaneous bug fixes and changes to make
548          lint happier.
549
550          This version of telnet also has some KERBEROS stuff in
551          it. This has not been tested, it uses an un-authorized
552          telnet option number, and uses an out-of-date version
553          of the (still being defined) AUTHENTICATION option.
554          There is no support for this code, do not enable it.
555
556
557March 1, 1990:
558CHANGES/BUGFIXES SINCE LAST RELEASE:
559          Some support for IP TOS has been added.  Requires that the
560          kernel support the IP_TOS socket option (currently this
561          is only in UNICOS 6.0).
562
563          Both telnet and telnetd now use the cc_t typedef.  typedefs are
564          included for systems that don't have it (in termios.h).
565
566          SLC_SUSP was not supported properly before.  It is now.
567
568          IAC EOF was not translated  properly in telnetd for SYSV_TERMIO
569          when not in linemode.  It now saves a copy of the VEOF character,
570          so that when ICANON is turned off and we can't trust it anymore
571          (because it is now the VMIN character) we use the saved value.
572
573          There were two missing "break" commands in the linemode
574          processing code in telnetd.
575
576          Telnetd wasn't setting the kernel window size information
577          properly.  It was using the rows for both rows and columns...
578
579Questions/comments go to
580                    David Borman
581                    Cray Research, Inc.
582                    655F Lone Oak Drive
583                    Eagan, MN 55123
584                    dab@cray.com.
585
586README:   You are reading it.
587
588Config.generic:
589          This file contains all the OS specific definitions.  It
590          has pre-definitions for many common system types, and is
591          in standard makefile fromat.  See the comments at the top
592          of the file for more information.
593
594Config.local:
595          This is not part of the distribution, but if this file exists,
596          it is used instead of "Config.generic".  This allows site
597          specific configuration without having to modify the distributed
598          "Config.generic" file.
599
600kern.diff:
601          This file contains the diffs for the changes needed for the
602          kernel to support LINEMODE is the server.  These changes are
603          for a 4.3BSD system.  You may need to make some changes for
604          your particular system.
605
606          There is a new bit in the terminal state word, TS_EXTPROC.
607          When this bit is set, several aspects of the terminal driver
608          are disabled.  Input line editing, character echo, and
609          mapping of signals are all disabled.  This allows the telnetd
610          to turn of these functions when in linemode, but still keep
611          track of what state the user wants the terminal to be in.
612
613          New ioctl()s:
614
615                    TIOCEXT             Turn on/off the TS_EXTPROC bit
616                    TIOCGSTATE          Get t_state of tty to look at TS_EXTPROC bit
617                    TIOCSIG             Generate a signal to processes in the
618                                        current process group of the pty.
619
620          There is a new mode for packet driver, the TIOCPKT_IOCTL bit.
621          When packet mode is turned on in the pty, and the TS_EXTPROC
622          bit is set, then whenever the state of the pty is changed, the
623          next read on the master side of the pty will have the TIOCPKT_IOCTL
624          bit set, and the data will contain the following:
625                    struct xx {
626                              struct sgttyb a;
627                              struct tchars b;
628                              struct ltchars c;
629                              int t_state;
630                              int t_flags;
631                    }
632          This allows the process on the server side of the pty to know
633          when the state of the terminal has changed, and what the new
634          state is.
635
636          However, if you define USE_TERMIO or SYSV_TERMIO, the code will
637          expect that the structure returned in the TIOCPKT_IOCTL is
638          the termio/termios structure.
639
640stty.diff:
641          This file contains the changes needed for the stty(1) program
642          to report on the current status of the TS_EXTPROC bit.  It also
643          allows the user to turn on/off the TS_EXTPROC bit.  This is useful
644          because it allows the user to say "stty -extproc", and the
645          LINEMODE option will be automatically disabled, and saying "stty
646          extproc" will re-enable the LINEMODE option.
647
648telnet.state:
649          Both the client and server have code in them to deal
650          with option negotiation loops.  The algorithm that is
651          used is described in this file.
652
653telnet:
654          This directory contains the client code.  No kernel changes are
655          needed to use this code.
656
657telnetd:
658          This directory contains the server code.  If LINEMODE or KLUDGELINEMODE
659          are defined, then the kernel modifications listed above are needed.
660
661libtelnet:
662          This directory contains code that is common to both the client
663          and the server.
664
665arpa:
666          This directory has a new <arpa/telnet.h>
667
668libtelnet/Makefile.4.4:
669telnet/Makefile.4.4:
670telnetd/Makefile.4.4:
671          These are the makefiles that can be used on a 4.3Reno
672          system when this software is installed in /usr/src/lib/libtelnet,
673          /usr/src/libexec/telnetd, and /usr/src/usr.bin/telnet.
674
675
676The following TELNET options are supported:
677
678          LINEMODE:
679                    The LINEMODE option is supported as per RFC1116.  The
680                    FORWARDMASK option is not currently supported.
681
682          BINARY: The client has the ability to turn on/off the BINARY
683                    option in each direction.  Turning on BINARY from
684                    server to client causes the LITOUT bit to get set in
685                    the terminal driver on both ends,  turning on BINARY
686                    from the client to the server causes the PASS8 bit
687                    to get set in the terminal driver on both ends.
688
689          TERMINAL-TYPE:
690                    This is supported as per RFC1091.  On the server side,
691                    when a terminal type is received, termcap/terminfo
692                    is consulted to determine if it is a known terminal
693                    type.  It keeps requesting terminal types until it
694                    gets one that it recongnizes, or hits the end of the
695                    list.  The server side looks up the entry in the
696                    termcap/terminfo data base, and generates a list of
697                    names which it then passes one at a time to each
698                    request for a terminal type, duplicating the last
699                    entry in the list before cycling back to the beginning.
700
701          NAWS:     The Negotiate about Window Size, as per RFC 1073.
702
703          TERMINAL-SPEED:
704                    Implemented as per RFC 1079
705
706          TOGGLE-FLOW-CONTROL:
707                    Implemented as per RFC 1080
708
709          TIMING-MARK:
710                    As per RFC 860
711
712          SGA:      As per RFC 858
713
714          ECHO:     As per RFC 857
715
716          LOGOUT: As per RFC 727
717
718          STATUS:
719                    The server will send its current status upon
720                    request.  It does not ask for the clients status.
721                    The client will request the servers current status
722                    from the "send getstatus" command.
723
724          ENVIRON:
725                    This option is currently being defined by the IETF
726                    Telnet Working Group, and an RFC has not yet been
727                    issued, but should be in the near future...
728
729          X-DISPLAY-LOCATION:
730                    This functionality can be done through the ENVIRON
731                    option, it is added here for completeness.
732
733          AUTHENTICATION:
734                    This option is currently being defined by the IETF
735                    Telnet Working Group, and an RFC has not yet been
736                    issued.  The basic framework is pretty much decided,
737                    but the definitions for the specific authentication
738                    schemes is still in a state of flux.
739
740          ENCRYPTION:
741                    This option is currently being defined by the IETF
742                    Telnet Working Group, and an RFC has not yet been
743                    issued.  The draft RFC is still in a state of flux,
744                    so this code may change in the future.
745