tree bd9f07978a147838960e9d1a8942d01731aa4e30
parent 2e93a03dafe195c90b60fc3e8c279d7dc925cefc
author Andrew Geissler <geissonator@yahoo.com> 1635874091 -0500
committer Andrew Geissler <geissonator@yahoo.com> 1635874565 -0500

ssh-console: introduce reasonable timeout values

The obmc-console design is that it must successfully send its data to
all connected clients before it will process any new data. This
guarantees there are no data losses to clients.

The drawback to this design is that if a single client stops responding
or gets hung up in some way, all clients get hung up. At IBM, our test
teams utilize some fairly extensive perl/expect based test suites that
utilize the host virtual console extensively. We continue to see
intermittent issues when running these test suites where the virtual
console to our hypervisor becomes unusable. If we log in and start to
kill dropbear ssh console sessions, we eventually find the right one and
the console starts working again.

This commit introduces some parameters to dropbear to drop the bad
client connection if it becomes unresponsive:
  -I <idle_timeout>
  -K <keepalive>

For idle_timeout, it seems reasonable to give the client 30 minutes
(1800 seconds) of inactivity.

For keepalive, it seems reasonable to assume that a client connection
can be verified within 10 seconds.

Tested:
- The issue is somewhat difficult to recreate but we did patch a system
  which was having this issue and we were unable to recreate the problem
  with this change. The test suite appears to recover if it senses it
  has a dropped connection.

Signed-off-by: Andrew Geissler <geissonator@yahoo.com>
Change-Id: Iaa1182d52fb75762c47e515e43f1fc6352b5bdd1
