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