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