Local software flow control

Grigoriy A. Sitkarev sitkarev at komitex.ru
Sun Dec 10 10:17:43 EST 2006


Good day time!

Using openssh with a serial attached terminal figures with a problem 
with flow control when serial terminal has printer connected to it etc. 
because ssh disables xon/xoff on associated terminal. At present ssh 
client always disables xon/xoff on associated terminal device, regarding 
of it's previous state, e.g. ixon and ixoff options were set or not.

By searching the google i've found some posts where people complained 
about sshing somewhere and getting disabled xon/xoff on their devices 
and thus they had to use rlogin because it handles local flow control 
correctly for them. An easy and quick/dirty method was to remove IXON & 
IXOFF flags from sshtty.c:enter_raw_mode(), but it can easily brake 
transparency. Another standart method to use was a must.

According to IETF RFC4254 ssh server can provide client an idea of doing 
the control flow at the client side. A special SSH_MSG_CHANNEL_REQUEST 
message with "xon-xoff" string MUST be used, and client MAY ignore this 
message. This feature is not implemented in OpenSSH, nor in client nor 
in the server.

As we have a great need in using software flow control on the local side 
with ssh connection to server, i have decided to implement these options 
in ssh server and client. The patch must be applied to the openssh 4.5p1 
release.

The patch adds two boolean options in ssh and sshd correspondingly 
"IgnoreFlowControl" and "UseFlowControl". Defaults don't change the 
usual behaviour of neither ssh and sshd.

When "IgnoreLocalFlow" is set to "no" within ssh client, it handles 
"xon-xoff" message from sshd and enables or disables local flow control 
ONLY if it was previously set before ssh was started and associated with 
terminal device. If no ixon or ixoff option was set on terminal device 
everything is left as is.

When UseLocalFlow is set to "yes" within sshd server, it requests to 
enable "xon-xoff" after the client's request of pty allocation succeeds.

Now we can use printers attached to serial terminals and other devices.

In spite of the reason, that patch works well for me, i suppose it might 
be better but i need developers advice.

Best wishes,
Grigoriy A. Sitkarev

-------------- next part --------------
A non-text attachment was scrubbed...
Name: openssh-4.5p1_localflow.patch
Type: text/x-patch
Size: 6127 bytes
Desc: not available
Url : http://lists.mindrot.org/pipermail/openssh-unix-dev/attachments/20061209/24d3faab/attachment.bin 


More information about the openssh-unix-dev mailing list