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