README
上传用户:sddyfurun
上传日期:2007-01-04
资源大小:525k
文件大小:26k
源码类别:

代理服务器

开发平台:

Unix_Linux

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