upstream commit

refactor activation of rekeying

This makes automatic rekeying internal to the packet code (previously
the server and client loops needed to assist). In doing to it makes
application of rekey limits more accurate by accounting for packets
about to be sent as well as packets queued during rekeying events
themselves.

Based on a patch from dtucker@ which was in turn based on a patch
Aleksander Adamowski in bz#2521; ok markus@

Upstream-ID: a441227fd64f9739850ca97b4cf794202860fcd8
7 files changed
tree: a87286b290fcd540635890856fbcafef74341ec0
  1. contrib/
  2. openbsd-compat/
  3. regress/
  4. scard/
  5. .cvsignore
  6. aclocal.m4
  7. addrmatch.c
  8. atomicio.c
  9. atomicio.h
  10. audit-bsm.c
  11. audit-linux.c
  12. audit.c
  13. audit.h
  14. auth-bsdauth.c
  15. auth-chall.c
  16. auth-krb5.c
  17. auth-options.c
  18. auth-options.h
  19. auth-pam.c
  20. auth-pam.h
  21. auth-passwd.c
  22. auth-rh-rsa.c
  23. auth-rhosts.c
  24. auth-rsa.c
  25. auth-shadow.c
  26. auth-sia.c
  27. auth-sia.h
  28. auth-skey.c
  29. auth.c
  30. auth.h
  31. auth1.c
  32. auth2-chall.c
  33. auth2-gss.c
  34. auth2-hostbased.c
  35. auth2-kbdint.c
  36. auth2-none.c
  37. auth2-passwd.c
  38. auth2-pubkey.c
  39. auth2.c
  40. authfd.c
  41. authfd.h
  42. authfile.c
  43. authfile.h
  44. bitmap.c
  45. bitmap.h
  46. blocks.c
  47. bufaux.c
  48. bufbn.c
  49. bufec.c
  50. buffer.c
  51. buffer.h
  52. buildpkg.sh.in
  53. canohost.c
  54. canohost.h
  55. chacha.c
  56. chacha.h
  57. channels.c
  58. channels.h
  59. cipher-3des1.c
  60. cipher-aes.c
  61. cipher-aesctr.c
  62. cipher-aesctr.h
  63. cipher-bf1.c
  64. cipher-chachapoly.c
  65. cipher-chachapoly.h
  66. cipher-ctr.c
  67. cipher.c
  68. cipher.h
  69. cleanup.c
  70. clientloop.c
  71. clientloop.h
  72. compat.c
  73. compat.h
  74. config.guess
  75. config.sub
  76. configure.ac
  77. crc32.c
  78. crc32.h
  79. CREDITS
  80. crypto_api.h
  81. deattack.c
  82. deattack.h
  83. defines.h
  84. dh.c
  85. dh.h
  86. digest-libc.c
  87. digest-openssl.c
  88. digest.h
  89. dispatch.c
  90. dispatch.h
  91. dns.c
  92. dns.h
  93. ed25519.c
  94. entropy.c
  95. entropy.h
  96. fatal.c
  97. fe25519.c
  98. fe25519.h
  99. fixalgorithms
  100. fixpaths
  101. fixprogs
  102. ge25519.c
  103. ge25519.h
  104. ge25519_base.data
  105. groupaccess.c
  106. groupaccess.h
  107. gss-genr.c
  108. gss-serv-krb5.c
  109. gss-serv.c
  110. hash.c
  111. hmac.c
  112. hmac.h
  113. hostfile.c
  114. hostfile.h
  115. includes.h
  116. INSTALL
  117. install-sh
  118. kex.c
  119. kex.h
  120. kexc25519.c
  121. kexc25519c.c
  122. kexc25519s.c
  123. kexdh.c
  124. kexdhc.c
  125. kexdhs.c
  126. kexecdh.c
  127. kexecdhc.c
  128. kexecdhs.c
  129. kexgex.c
  130. kexgexc.c
  131. kexgexs.c
  132. key.c
  133. key.h
  134. krl.c
  135. krl.h
  136. LICENCE
  137. log.c
  138. log.h
  139. loginrec.c
  140. loginrec.h
  141. logintest.c
  142. mac.c
  143. mac.h
  144. Makefile.in
  145. match.c
  146. match.h
  147. md-sha256.c
  148. md5crypt.c
  149. md5crypt.h
  150. mdoc2man.awk
  151. misc.c
  152. misc.h
  153. mkinstalldirs
  154. moduli
  155. moduli.5
  156. moduli.c
  157. monitor.c
  158. monitor.h
  159. monitor_fdpass.c
  160. monitor_fdpass.h
  161. monitor_mm.c
  162. monitor_mm.h
  163. monitor_wrap.c
  164. monitor_wrap.h
  165. msg.c
  166. msg.h
  167. mux.c
  168. myproposal.h
  169. nchan.c
  170. nchan.ms
  171. nchan2.ms
  172. opacket.c
  173. opacket.h
  174. openssh.xml.in
  175. opensshd.init.in
  176. OVERVIEW
  177. packet.c
  178. packet.h
  179. pathnames.h
  180. pkcs11.h
  181. platform-pledge.c
  182. platform.c
  183. platform.h
  184. poly1305.c
  185. poly1305.h
  186. progressmeter.c
  187. progressmeter.h
  188. PROTOCOL
  189. PROTOCOL.agent
  190. PROTOCOL.certkeys
  191. PROTOCOL.chacha20poly1305
  192. PROTOCOL.key
  193. PROTOCOL.krl
  194. PROTOCOL.mux
  195. readconf.c
  196. readconf.h
  197. README
  198. README.dns
  199. README.platform
  200. README.privsep
  201. README.tun
  202. readpass.c
  203. rijndael.c
  204. rijndael.h
  205. roaming.h
  206. rsa.c
  207. rsa.h
  208. sandbox-capsicum.c
  209. sandbox-darwin.c
  210. sandbox-null.c
  211. sandbox-pledge.c
  212. sandbox-rlimit.c
  213. sandbox-seccomp-filter.c
  214. sandbox-solaris.c
  215. sandbox-systrace.c
  216. sc25519.c
  217. sc25519.h
  218. scp.1
  219. scp.c
  220. servconf.c
  221. servconf.h
  222. serverloop.c
  223. serverloop.h
  224. session.c
  225. session.h
  226. sftp-client.c
  227. sftp-client.h
  228. sftp-common.c
  229. sftp-common.h
  230. sftp-glob.c
  231. sftp-server-main.c
  232. sftp-server.8
  233. sftp-server.c
  234. sftp.1
  235. sftp.c
  236. sftp.h
  237. smult_curve25519_ref.c
  238. ssh-add.1
  239. ssh-add.c
  240. ssh-agent.1
  241. ssh-agent.c
  242. ssh-dss.c
  243. ssh-ecdsa.c
  244. ssh-ed25519.c
  245. ssh-gss.h
  246. ssh-keygen.1
  247. ssh-keygen.c
  248. ssh-keyscan.1
  249. ssh-keyscan.c
  250. ssh-keysign.8
  251. ssh-keysign.c
  252. ssh-pkcs11-client.c
  253. ssh-pkcs11-helper.8
  254. ssh-pkcs11-helper.c
  255. ssh-pkcs11.c
  256. ssh-pkcs11.h
  257. ssh-rsa.c
  258. ssh-sandbox.h
  259. ssh.1
  260. ssh.c
  261. ssh.h
  262. ssh1.h
  263. ssh2.h
  264. ssh_api.c
  265. ssh_api.h
  266. ssh_config
  267. ssh_config.5
  268. sshbuf-getput-basic.c
  269. sshbuf-getput-crypto.c
  270. sshbuf-misc.c
  271. sshbuf.c
  272. sshbuf.h
  273. sshconnect.c
  274. sshconnect.h
  275. sshconnect1.c
  276. sshconnect2.c
  277. sshd.8
  278. sshd.c
  279. sshd_config
  280. sshd_config.5
  281. ssherr.c
  282. ssherr.h
  283. sshkey.c
  284. sshkey.h
  285. sshlogin.c
  286. sshlogin.h
  287. sshpty.c
  288. sshpty.h
  289. sshtty.c
  290. survey.sh.in
  291. TODO
  292. ttymodes.c
  293. ttymodes.h
  294. uidswap.c
  295. uidswap.h
  296. umac.c
  297. umac.h
  298. uuencode.c
  299. uuencode.h
  300. verify.c
  301. version.h
  302. xmalloc.c
  303. xmalloc.h