From: loverso@coltsfoot.osf.org (John Robert LoVerso)
Subject: Re: Seeking 8-bit clean connection from Annex to Sun
Organization: OSF Research Institute, Cambridge MA
Date: Fri, 6 Nov 1992 16:02:15 GMT

How exactly is telnet getting in the way?  By default, telnet does various
translations on a data stream into and out of "network virtual terminal" to
allow wildy different host architectures to intercommunicate.  Most
of these can be elided.

The Annex CLI rlogin has always been 8-bit (it predates the -8 switch to BSD
rlogin).  Assuming you were using XON/XOFF flow control, then this macro
should work:

	# UUCP dialin macro via rlogin
	alias "uucp dialin"
		keyin   /uucp-r/  1-6@dialin-annex
	}
	<stty attn undef
	<stty iflow none oflow none
	<stty -break -lbreak
	<rlogin uucp-host
	}

I.e., clear the CLI attn character, XON/XOFF flow control state, and
just use rlogin.

OOPS: that won't work under R6.2 and later, as the CLI attn character
became a string.  Use
	stty attn ""

(of course, if you use "" for any other stty character, you'll get the
character to a single double quote!!  You can still use stty attn ^@, I guess)

If you are alrady using EIA flow control, then you needn't change it.

You might be able to use CLI telnet, but you have a few more things to
set up:

	+ Disable CLI telnet escape character.
	+ Select binary mode
	+ Possibly play with TELNET CRLF translation.

That latter depends upon whether the remote telnet daemon you are connecting
to is "broken" or not.  That is, TELNET NVT dictates that bare CRs in the
data stream be quoted as CR-NUL, but some older telnetd's don't do the
right thing and send CR-LF.  Thankfully, there is now a port option that
will help select this, but there is no easy way to force CLI telnet binary
mode!

In the past, I've found the best way to run UUCP through an Annex is to
avoid an rlogin/telnet into a host, which causes uucico to be run over
a pty (lots of host overhead!).  Instead, the Annex can directly contact
the BSD uucpd with this:

	# UUCP dialin macro via telnet
	alias "uucp dialin"
		keyin   /uucp-t/  1-6@dialin-annex
		keyin   /uucp/    1-6@dialin-annex
	{
	<stty attn ""
	<stty iflow none oflow none
	<stty -break -lbreak
	<stty tesc ^]
	<telnet -r uucp-host uucp
	<^]mode char remote
	<^]tog crlf
	<^]set esc U
	}

Notice the rather gross way of setting appropriate telnet command options!
I had hoped that this would have been fixed by Xylogics by now, but...

Anyway, I'm using "telnet -r" there.  This is a pseudo-telnet mode that
still does some character mapping/echoing.  It is roughly equivalent to
what happens in 4.3BSD telnet when you specify a TCP port other than
"telnet".  In terms of the Annex, it avoid SOME overhead of the per-character
processing dictated by the TELNET protocol, but not all.  The internal
Annex CLI telnet implementation was quite ugly the last time I worked on
it (R5.0 or so).

"telnet -t" is something Xylogics recently added that (apparently) does
nothing more than open a raw TCP stream to the destination.  Hopefully,
it avoids all the normal CLI telnet internals, since it doesn't really
have any need for them.  It should take much less Annex CPU to pump
high numbers of characters through.

[There is one botch I've be snagged by with "telnet -t" - it requires
that you enter a TCP port number.  I don't have a problem with it
wanting a port, but it apparently goes though some pain to make sure
you cannot enter a symbolic name.  I.e.,
	gizmo v1# telnet -t coltsfoot smtp
	Port number required!
SIGH!]

To get an 8-bit path under a "normal" telnet login session talking to
a typical 4BSD telnetd,, it should be sufficient to remove the CLI
attention character, "tog binary" at the telnet command prompt,
and then unset the telnet escape character.

John
Newsgroups: comp.dcom.servers