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)) ||
_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "[email protected]"

Reply via email to