aboutsummaryrefslogtreecommitdiff
path: root/sys/netinet/tcp_stacks/tcp_rack.h
diff options
context:
space:
mode:
authorRandall Stewart <rrs@FreeBSD.org>2020-06-03 14:07:31 +0000
committerRandall Stewart <rrs@FreeBSD.org>2020-06-03 14:07:31 +0000
commitf1ea4e412039cea00267b3a3b0eb937f5a756ab7 (patch)
tree98f6482db18c1cb37a60c4612900767ade54a7a5 /sys/netinet/tcp_stacks/tcp_rack.h
parentd442a657333c865232942ed2d5d2bc4a37aa7794 (diff)
downloadsrc-f1ea4e412039cea00267b3a3b0eb937f5a756ab7.tar.gz
src-f1ea4e412039cea00267b3a3b0eb937f5a756ab7.zip
This fixes a couple of skyzaller crashes. Most
of them have to do with TFO. Even the default stack had one of the issues: 1) We need to make sure for rack that we don't advance snd_nxt beyond iss when we are not doing fast open. We otherwise can get a bunch of SYN's sent out incorrectly with the seq number advancing. 2) When we complete the 3-way handshake we should not ever append to reassembly if the tlen is 0, if TFO is enabled prior to this fix we could still call the reasemmbly. Note this effects all three stacks. 3) Rack like its cousin BBR should track if a SYN is on a send map entry. 4) Both bbr and rack need to only consider len incremented on a SYN if the starting seq is iss, otherwise we don't increment len which may mean we return without adding a sendmap entry. This work was done in collaberation with Michael Tuexen, thanks for all the testing! Sponsored by: Netflix Inc Differential Revision: https://reviews.freebsd.org/D25000
Notes
Notes: svn path=/head/; revision=361751
Diffstat (limited to 'sys/netinet/tcp_stacks/tcp_rack.h')
-rw-r--r--sys/netinet/tcp_stacks/tcp_rack.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/sys/netinet/tcp_stacks/tcp_rack.h b/sys/netinet/tcp_stacks/tcp_rack.h
index e8f74d65f788..f60e49b65e6c 100644
--- a/sys/netinet/tcp_stacks/tcp_rack.h
+++ b/sys/netinet/tcp_stacks/tcp_rack.h
@@ -39,6 +39,7 @@
#define RACK_RWND_COLLAPSED 0x0100/* The peer collapsed the rwnd on the segment */
#define RACK_APP_LIMITED 0x0200/* We went app limited after this send */
#define RACK_WAS_ACKED 0x0400/* a RTO undid the ack, but it already had a rtt calc done */
+#define RACK_HAS_SIN 0x0800/* SIN is on this guy */
#define RACK_NUM_OF_RETRANS 3
#define RACK_INITIAL_RTO 1000 /* 1 second in milli seconds */