Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 2 Nov 2012 22:17:10 +0000 (UTC)
From:      Andre Oppermann <andre@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-user@freebsd.org
Subject:   svn commit: r242498 - user/andre/tcp_workqueue/sys/netinet
Message-ID:  <201211022217.qA2MHAGS013567@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: andre
Date: Fri Nov  2 22:17:10 2012
New Revision: 242498
URL: http://svn.freebsd.org/changeset/base/242498

Log:
  Reintroduce the SACK required test in syncache_expand() but make it
  non-fatal and for informative logging only.  This way a better overview
  of real-world behavior can be gained.
  
  A previous version of this change slipped into an integrate from head.

Modified:
  user/andre/tcp_workqueue/sys/netinet/tcp_syncache.c

Modified: user/andre/tcp_workqueue/sys/netinet/tcp_syncache.c
==============================================================================
--- user/andre/tcp_workqueue/sys/netinet/tcp_syncache.c	Fri Nov  2 22:07:45 2012	(r242497)
+++ user/andre/tcp_workqueue/sys/netinet/tcp_syncache.c	Fri Nov  2 22:17:10 2012	(r242498)
@@ -991,28 +991,32 @@ syncache_expand(struct in_conninfo *inc,
 			    "rejected\n", s, __func__, th->th_seq, sc->sc_irs);
 		goto failed;
 	}
+
 	/*
-	 * If timestamps were not negotiated we don't expect them.
+	 * If timestamps were present in the SYN and we accepted
+	 * them in our SYN|ACK we require them to be present from
+	 * now on. And vice versa.
+	 *  RFC1323, Section 3.2
 	 */
-	if (!(sc->sc_flags & SCF_TIMESTAMP) && (to->to_flags & TOF_TS)) {
+	if ((sc->sc_flags & SCF_TIMESTAMP) && !(to->to_flags & TOF_TS)) {
 		if ((s = tcp_log_addrs(inc, th, NULL, NULL)))
-			log(LOG_DEBUG, "%s; %s: Timestamp not expected, "
-			    "segment rejected\n", s, __func__);
+			log(LOG_DEBUG, "%s; %s: Timestamp missing, "
+			    "rfc violation ignored\n", s, __func__);
+#if 0
 		goto failed;
+#endif
 	}
+
 	/*
-	 * If timestamps were negotiated every packet is required
-	 * to carry them.
-	 *  RFC1323, Section X
+	 * If timestamps were not negotiated we don't expect them.
 	 */
-	if ((sc->sc_flags & SCF_TIMESTAMP) && !(to->to_flags & TOF_TS)) {
+	if (!(sc->sc_flags & SCF_TIMESTAMP) && (to->to_flags & TOF_TS)) {
 		if ((s = tcp_log_addrs(inc, th, NULL, NULL)))
-			log(LOG_DEBUG, "%s; %s: Timestamp expected, "
-			    "rfc violation ignored\n", s, __func__);
-#if 0
+			log(LOG_DEBUG, "%s; %s: Timestamp not expected, "
+			    "segment rejected\n", s, __func__);
 		goto failed;
-#endif
 	}
+
 	/*
 	 * If timestamps were negotiated the reflected timestamp
 	 * must be equal to what we actually sent in the SYN|ACK.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201211022217.qA2MHAGS013567>