PERFORCE change 164830 for review

Andre Oppermann andre at FreeBSD.org
Sun Jun 21 20:45:59 UTC 2009


http://perforce.freebsd.org/chv.cgi?CH=164830

Change 164830 by andre at andre_t61 on 2009/06/21 20:45:25

	Undo the following changes which happend before the branch point
	of tcp_new.  The original version was correct based on a full
	reading of RFC1323 and the consesus of IETF TCPM.  Eventually
	the problem this was supposed to solve had a different origin.
	See mainling list archives.
	
	svn r173771 silby
	Comment out the syncache's test which ensures that hosts which negotiate TCP
	timestamps in the initial SYN packet actually use them in the rest of the
	connection.  Unfortunately, during the 7.0 testing cycle users have already
	found network devices that violate this constraint.
	
	RFC 1323 states 'and may send a TSopt in other segments' rather than
	'and MUST send', so we must allow it.
	
	svn r174545 kmacy
	Remove spurious timestamp check. RFC 1323 explicitly states that timestamps MAY
	be transmitted if negotiated.

Affected files ...

.. //depot/projects/tcp_new/netinet/tcp_syncache.c#3 edit

Differences ...

==== //depot/projects/tcp_new/netinet/tcp_syncache.c#3 (text+ko) ====

@@ -917,12 +917,24 @@
 		goto failed;
 	}
 
+	/*
+	 * 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.
+	 */
+	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 missing, "
+			    "segment rejected\n", s, __func__);
+		goto failed;
+	}
 	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__);
 		goto failed;
 	}
+
 	/*
 	 * If timestamps were negotiated the reflected timestamp
 	 * must be equal to what we actually sent in the SYN|ACK.


More information about the p4-projects mailing list