[comp.protocols.tcp-ip] Telnet source code

dab@BERSERKLY.CRAY.COM (David Borman) (11/15/89)

The latest copy of source for both telnet and telnetd are now available
for anonymous ftp from ucbarpa.berkeley.edu.  There is a single
compressed tar file, pub/telnet.tar.Z, which has both the client
and the server code.  This file also has diffs from the 4.3BSD
pty/terminal driver to add the necessary support needed to run
a server telnetd that supports linemode.  If you had previously gotten
a copy of the telnet from ucbarpa, you should get this new copy.

This is the basis for both telnet and telnetd that will be released
in 4.4BSD.  These new versions have support for both SysV termio
structures, and POSIX termios structures.  Attached is the README
file that is included in the tar file.

		-Dave Borman, dab@cray.com

November 14, 1989

This is a distribution of both client and server telnet.  These programs
have been compiled and run on BSD4.3, BSD4.4, and Cray UNICOS 5.0/5.1.
In addition, the telnet client source has been compiled an run on
SunOS 3.5 and DYNIX V3.0.12

Questions/comments go to
		Dave Borman
		Cray Research, Inc.
		1440 Northland Drive
		Mendota Heights, MN 55120
		dab@cray.com.

README:	You are reading it.

kern.diff:
	This file contains the diffs for the changes needed for the
	kernel to support LINEMODE is the server.

	There is a new bit in the terminal state word, TS_EXTPROC.
	When this bit is set, several aspects of the terminal driver
	are disabled.  Input line editing, character echo, and
	mapping of signals are all disabled.  This allows the telnetd
	to turn of these functions when in linemode, but still keep
	track of what state the user wants the terminal to be in.

	New ioctl()s:

		TIOCEXT		Turn on/off the TS_EXTPROC bit
		TIOCGSTATE	Get t_state of tty to look at TS_EXTPROC bit
		TIOCSIG		Generate a signal to processes in the
				current process group of the pty.

	There is a new mode for packet driver, the TIOCPKT_IOCTL bit.
	When packet mode is turned on in the pty, and the TS_EXTPROC
	bit is set, then whenever the state of the pty is changed, the
	next read on the master side of the pty will have the TIOCPKT_IOCTL
	bit set, and the data will contain the following:
		struct xx {
			struct sgttyb a;
			struct tchars b;
			struct ltchars c;
			int t_state;
			int t_flags;
		}
	This allows the process on the server side of the pty to know
	when the state of the terminal has changed, and what the new
	state is.

stty.diff:
	This file contains the changes needed for the stty(1) program
	to report on the current status of the TS_EXTPROC bit.  It also
	allows the user to turn on/off the TS_EXTPROC bit.  This is useful
	because it allows the user to say "stty -extproc", and the
	LINEMODE option will be automatically disabled, and saying "stty
	extproc" will re-enable the LINEMODE option.

telnet.state:
	Both the client and server have code in them to deal
	with option negotiation loops.  The algorithm that is
	used is described in this file.

telnet:
	This directory contains the client code.  No kernel changes are
	needed to use this code.

telnetd:
	This directory contains the server code.  If LINEMODE or KLUDGELINEMODE
	are defined, then the kernel modifications listed above are needed.

arpa:
	This directory has a new <arpa/telnet.h>


The following TELNET options are supported:

	LINEMODE:
		The LINEMODE option is supported as per RFC1116.  The
		FORWARDMASK option is not currently supported.

	BINARY: The client has the ability to turn on/off the BINARY
		option in each direction.  Turning on BINARY from
		server to client causes the LITOUT bit to get set in
		the terminal driver on both ends,  turning on BINARY
		from the client to the server causes the PASS8 bit
		to get set in the terminal driver on both ends.

	TERMINAL-TYPE:
		This is supported as per RFC1091.  On the server side,
		when a terminal type is received, termcap/terminfo
		is consulted to determine if it is a known terminal
		type.  It keeps requesting terminal types until it
		gets one that it recongnizes, or hits the end of the
		list.  The server side looks up the entry in the
		termcap/terminfo data base, and generates a list of
		names which it then passes one at a time to each
		request for a terminal type, duplicating the last
		entry in the list before cycling back to the beginning.

	NAWS:	The Negotiate about Window Size, as per RFC 1073.

	TERMINAL-SPEED:
		Implemented as per RFC 1079

	TOGGLE-FLOW-CONTROL:
		Implemented as per RFC 1080

	TIMING-MARK:
		As per RFC 860

	SGA:	As per RFC 858

	ECHO:	As per RFC 857

	STATUS:
		The server will send its current status upon
		request.  It does not ask for the clients status.
		The client will request the servers current status
		from the "send getstatus" command.

	The X-DISPLAY-LOCATION option is not supported.

Look at the Makefile for comments about #define paramaters that need
to be set up for your individual site.

adnan@sgtech.UUCP (Adnan Yaqub) (11/21/89)

In article <8911141933.AA13055@berserkly.cray.com> dab@BERSERKLY.CRAY.COM (David Borman) writes:

   The latest copy of source for both telnet and telnetd are now available
   for anonymous ftp from ucbarpa.berkeley.edu.  There is a single
   compressed tar file, pub/telnet.tar.Z, which has both the client
   and the server code.  This file also has diffs from the 4.3BSD

I would be very interested in looking at this source code.
Unfortunately, I don't have FTP access.  Could someone mail this to me
or maybe it could be placed in an anonymous UUCP archive? (osu-cis,
Karl?)
--
Adnan Yaqub
Star Gate Technologies, 29300 Aurora Rd., Solon, OH, USA, +1 216 349 1860
...cwjcc!ncoast!sgtech!adnan ...uunet!abvax!sgtech!adnan