- djm@cvs.openbsd.org 2010/01/26 01:28:35
     [channels.c channels.h clientloop.c clientloop.h mux.c nchan.c ssh.c]
     rewrite ssh(1) multiplexing code to a more sensible protocol.

     The new multiplexing code uses channels for the listener and
     accepted control sockets to make the mux master non-blocking, so
     no stalls when processing messages from a slave.

     avoid use of fatal() in mux master protocol parsing so an errant slave
     process cannot take down a running master.

     implement requesting of port-forwards over multiplexed sessions. Any
     port forwards requested by the slave are added to those the master has
     established.

     add support for stdio forwarding ("ssh -W host:port ...") in mux slaves.

     document master/slave mux protocol so that other tools can use it to
     control a running ssh(1). Note: there are no guarantees that this
     protocol won't be incompatibly changed (though it is versioned).

     feedback Salvador Fandino, dtucker@
     channel changes ok markus@
8 files changed
tree: 3c9d794dcf7fca1d880ffd9db24b20038d3f800b
  1. .cvsignore
  2. CREDITS
  3. ChangeLog
  4. INSTALL
  5. LICENCE
  6. Makefile.in
  7. OVERVIEW
  8. PROTOCOL
  9. PROTOCOL.agent
  10. README
  11. README.dns
  12. README.platform
  13. README.privsep
  14. README.smartcard
  15. README.tun
  16. TODO
  17. WARNING.RNG
  18. aclocal.m4
  19. acss.c
  20. acss.h
  21. addrmatch.c
  22. atomicio.c
  23. atomicio.h
  24. audit-bsm.c
  25. audit.c
  26. audit.h
  27. auth-bsdauth.c
  28. auth-chall.c
  29. auth-krb5.c
  30. auth-options.c
  31. auth-options.h
  32. auth-pam.c
  33. auth-pam.h
  34. auth-passwd.c
  35. auth-rh-rsa.c
  36. auth-rhosts.c
  37. auth-rsa.c
  38. auth-shadow.c
  39. auth-sia.c
  40. auth-sia.h
  41. auth-skey.c
  42. auth.c
  43. auth.h
  44. auth1.c
  45. auth2-chall.c
  46. auth2-gss.c
  47. auth2-hostbased.c
  48. auth2-jpake.c
  49. auth2-kbdint.c
  50. auth2-none.c
  51. auth2-passwd.c
  52. auth2-pubkey.c
  53. auth2.c
  54. authfd.c
  55. authfd.h
  56. authfile.c
  57. authfile.h
  58. bufaux.c
  59. bufbn.c
  60. buffer.c
  61. buffer.h
  62. buildpkg.sh.in
  63. canohost.c
  64. canohost.h
  65. channels.c
  66. channels.h
  67. cipher-3des1.c
  68. cipher-acss.c
  69. cipher-aes.c
  70. cipher-bf1.c
  71. cipher-ctr.c
  72. cipher.c
  73. cipher.h
  74. cleanup.c
  75. clientloop.c
  76. clientloop.h
  77. compat.c
  78. compat.h
  79. compress.c
  80. compress.h
  81. config.guess
  82. config.sub
  83. configure.ac
  84. contrib/
  85. crc32.c
  86. crc32.h
  87. deattack.c
  88. deattack.h
  89. defines.h
  90. dh.c
  91. dh.h
  92. dispatch.c
  93. dispatch.h
  94. dns.c
  95. dns.h
  96. entropy.c
  97. entropy.h
  98. fatal.c
  99. fixpaths
  100. fixprogs
  101. groupaccess.c
  102. groupaccess.h
  103. gss-genr.c
  104. gss-serv-krb5.c
  105. gss-serv.c
  106. hostfile.c
  107. hostfile.h
  108. includes.h
  109. install-sh
  110. jpake.c
  111. jpake.h
  112. kex.c
  113. kex.h
  114. kexdh.c
  115. kexdhc.c
  116. kexdhs.c
  117. kexgex.c
  118. kexgexc.c
  119. kexgexs.c
  120. key.c
  121. key.h
  122. log.c
  123. log.h
  124. loginrec.c
  125. loginrec.h
  126. logintest.c
  127. mac.c
  128. mac.h
  129. match.c
  130. match.h
  131. md-sha256.c
  132. md5crypt.c
  133. md5crypt.h
  134. mdoc2man.awk
  135. misc.c
  136. misc.h
  137. mkinstalldirs
  138. moduli
  139. moduli.5
  140. moduli.c
  141. monitor.c
  142. monitor.h
  143. monitor_fdpass.c
  144. monitor_fdpass.h
  145. monitor_mm.c
  146. monitor_mm.h
  147. monitor_wrap.c
  148. monitor_wrap.h
  149. msg.c
  150. msg.h
  151. mux.c
  152. myproposal.h
  153. nchan.c
  154. nchan.ms
  155. nchan2.ms
  156. openbsd-compat/
  157. openssh.xml.in
  158. opensshd.init.in
  159. packet.c
  160. packet.h
  161. pathnames.h
  162. platform.c
  163. platform.h
  164. progressmeter.c
  165. progressmeter.h
  166. readconf.c
  167. readconf.h
  168. readpass.c
  169. regress/
  170. rijndael.c
  171. rijndael.h
  172. roaming.h
  173. roaming_client.c
  174. roaming_common.c
  175. roaming_dummy.c
  176. roaming_serv.c
  177. rsa.c
  178. rsa.h
  179. scard-opensc.c
  180. scard.c
  181. scard.h
  182. scard/
  183. schnorr.c
  184. schnorr.h
  185. scp.1
  186. scp.c
  187. servconf.c
  188. servconf.h
  189. serverloop.c
  190. serverloop.h
  191. session.c
  192. session.h
  193. sftp-client.c
  194. sftp-client.h
  195. sftp-common.c
  196. sftp-common.h
  197. sftp-glob.c
  198. sftp-server-main.c
  199. sftp-server.8
  200. sftp-server.c
  201. sftp.1
  202. sftp.c
  203. sftp.h
  204. ssh-add.1
  205. ssh-add.c
  206. ssh-agent.1
  207. ssh-agent.c
  208. ssh-dss.c
  209. ssh-gss.h
  210. ssh-keygen.1
  211. ssh-keygen.c
  212. ssh-keyscan.1
  213. ssh-keyscan.c
  214. ssh-keysign.8
  215. ssh-keysign.c
  216. ssh-rand-helper.8
  217. ssh-rand-helper.c
  218. ssh-rsa.c
  219. ssh.1
  220. ssh.c
  221. ssh.h
  222. ssh1.h
  223. ssh2.h
  224. ssh_config
  225. ssh_config.5
  226. ssh_prng_cmds.in
  227. sshconnect.c
  228. sshconnect.h
  229. sshconnect1.c
  230. sshconnect2.c
  231. sshd.8
  232. sshd.c
  233. sshd_config
  234. sshd_config.5
  235. sshlogin.c
  236. sshlogin.h
  237. sshpty.c
  238. sshpty.h
  239. sshtty.c
  240. survey.sh.in
  241. ttymodes.c
  242. ttymodes.h
  243. uidswap.c
  244. uidswap.h
  245. umac.c
  246. umac.h
  247. uuencode.c
  248. uuencode.h
  249. version.h
  250. xmalloc.c
  251. xmalloc.h