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