svn commit: r341504 - stable/12/sys/netinet

Michael Tuexen tuexen at FreeBSD.org
Tue Dec 4 22:47:00 UTC 2018


Author: tuexen
Date: Tue Dec  4 22:46:58 2018
New Revision: 341504
URL: https://svnweb.freebsd.org/changeset/base/341504

Log:
  MFC r339989, r339991:
  
  Improve a comment to refer to the actual sections in the TCP
  specification for the comparisons made.
  Thanks to lstewart@ for the suggestion.
  
  Sponsored by:		Netflix, Inc.
  Differential Revision:	https://reviews.freebsd.org/D17595

Modified:
  stable/12/sys/netinet/tcp_syncache.c
Directory Properties:
  stable/12/   (props changed)

Modified: stable/12/sys/netinet/tcp_syncache.c
==============================================================================
--- stable/12/sys/netinet/tcp_syncache.c	Tue Dec  4 22:25:24 2018	(r341503)
+++ stable/12/sys/netinet/tcp_syncache.c	Tue Dec  4 22:46:58 2018	(r341504)
@@ -581,15 +581,28 @@ syncache_chkrst(struct in_conninfo *inc, struct tcphdr
 	/*
 	 * If the RST bit is set, check the sequence number to see
 	 * if this is a valid reset segment.
+	 *
 	 * RFC 793 page 37:
 	 *   In all states except SYN-SENT, all reset (RST) segments
 	 *   are validated by checking their SEQ-fields.  A reset is
 	 *   valid if its sequence number is in the window.
 	 *
-	 *   The sequence number in the reset segment is normally an
-	 *   echo of our outgoing acknowlegement numbers, but some hosts
-	 *   send a reset with the sequence number at the rightmost edge
-	 *   of our receive window, and we have to handle this case.
+	 * RFC 793 page 69:
+	 *   There are four cases for the acceptability test for an incoming
+	 *   segment:
+	 *
+	 * Segment Receive  Test
+	 * Length  Window
+	 * ------- -------  -------------------------------------------
+	 *    0       0     SEG.SEQ = RCV.NXT
+	 *    0      >0     RCV.NXT =< SEG.SEQ < RCV.NXT+RCV.WND
+	 *   >0       0     not acceptable
+	 *   >0      >0     RCV.NXT =< SEG.SEQ < RCV.NXT+RCV.WND
+	 *               or RCV.NXT =< SEG.SEQ+SEG.LEN-1 < RCV.NXT+RCV.WND
+	 *
+	 * Note that when receiving a SYN segment in the LISTEN state,
+	 * IRS is set to SEG.SEQ and RCV.NXT is set to SEG.SEQ+1, as
+	 * described in RFC 793, page 66.
 	 */
 	if ((SEQ_GEQ(th->th_seq, sc->sc_irs + 1) &&
 	    SEQ_LT(th->th_seq, sc->sc_irs + 1 + sc->sc_wnd)) ||


More information about the svn-src-stable-12 mailing list