patch-2.4.2 linux/net/ipv4/tcp.c

Next file: linux/net/ipv4/tcp_input.c
Previous file: linux/net/ipv4/syncookies.c
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.4.1/linux/net/ipv4/tcp.c linux/net/ipv4/tcp.c
@@ -245,175 +245,6 @@
  *	TCP_CLOSE		socket is finished
  */
 
-/*
- * RFC1122 status:
- * NOTE: I'm not going to be doing comments in the code for this one except
- * for violations and the like.  tcp.c is just too big... If I say something
- * "does?" or "doesn't?", it means I'm not sure, and will have to hash it out
- * with Alan. -- MS 950903
- * [Note: Most of the TCP code has been rewriten/redesigned since this 
- *  RFC1122 check. It is probably not correct anymore. It should be redone 
- *  before 2.2. -AK]
- *
- * Use of PSH (4.2.2.2)
- *   MAY aggregate data sent without the PSH flag. (does)
- *   MAY queue data received without the PSH flag. (does)
- *   SHOULD collapse successive PSH flags when it packetizes data. (doesn't)
- *   MAY implement PSH on send calls. (doesn't, thus:)
- *     MUST NOT buffer data indefinitely (doesn't [1 second])
- *     MUST set PSH on last segment (does)
- *   MAY pass received PSH to application layer (doesn't)
- *   SHOULD send maximum-sized segment whenever possible. (almost always does)
- *
- * Window Size (4.2.2.3, 4.2.2.16)
- *   MUST treat window size as an unsigned number (does)
- *   SHOULD treat window size as a 32-bit number (does not)
- *   MUST NOT shrink window once it is offered (does not normally)
- *
- * Urgent Pointer (4.2.2.4)
- * **MUST point urgent pointer to last byte of urgent data (not right
- *     after). (doesn't, to be like BSD. That's configurable, but defaults
- *	to off)
- *   MUST inform application layer asynchronously of incoming urgent
- *     data. (does)
- *   MUST provide application with means of determining the amount of
- *     urgent data pending. (does)
- * **MUST support urgent data sequence of arbitrary length. (doesn't, but
- *   it's sort of tricky to fix, as urg_ptr is a 16-bit quantity)
- *	[Follows BSD 1 byte of urgent data]
- *
- * TCP Options (4.2.2.5)
- *   MUST be able to receive TCP options in any segment. (does)
- *   MUST ignore unsupported options (does)
- *
- * Maximum Segment Size Option (4.2.2.6)
- *   MUST implement both sending and receiving MSS. (does, but currently
- *	only uses the smaller of both of them)
- *   SHOULD send an MSS with every SYN where receive MSS != 536 (MAY send
- *     it always). (does, even when MSS == 536, which is legal)
- *   MUST assume MSS == 536 if no MSS received at connection setup (does)
- *   MUST calculate "effective send MSS" correctly:
- *     min(physical_MTU, remote_MSS+20) - sizeof(tcphdr) - sizeof(ipopts)
- *     (does - but allows operator override)
- *
- * TCP Checksum (4.2.2.7)
- *   MUST generate and check TCP checksum. (does)
- *
- * Initial Sequence Number Selection (4.2.2.8)
- *   MUST use the RFC 793 clock selection mechanism.  (doesn't, but it's
- *     OK: RFC 793 specifies a 250KHz clock, while we use 1MHz, which is
- *     necessary for 10Mbps networks - and harder than BSD to spoof!
- *     With syncookies we don't)
- *
- * Simultaneous Open Attempts (4.2.2.10)
- *   MUST support simultaneous open attempts (does)
- *
- * Recovery from Old Duplicate SYN (4.2.2.11)
- *   MUST keep track of active vs. passive open (does)
- *
- * RST segment (4.2.2.12)
- *   SHOULD allow an RST segment to contain data (does, but doesn't do
- *     anything with it, which is standard)
- *
- * Closing a Connection (4.2.2.13)
- *   MUST inform application of whether connection was closed by RST or
- *     normal close. (does)
- *   MAY allow "half-duplex" close (treat connection as closed for the
- *     local app, even before handshake is done). (does)
- *   MUST linger in TIME_WAIT for 2 * MSL (does)
- *
- * Retransmission Timeout (4.2.2.15)
- *   MUST implement Jacobson's slow start and congestion avoidance
- *     stuff. (does)
- *
- * Probing Zero Windows (4.2.2.17)
- *   MUST support probing of zero windows. (does)
- *   MAY keep offered window closed indefinitely. (does)
- *   MUST allow remote window to stay closed indefinitely. (does)
- *
- * Passive Open Calls (4.2.2.18)
- *   MUST NOT let new passive open affect other connections. (doesn't)
- *   MUST support passive opens (LISTENs) concurrently. (does)
- *
- * Time to Live (4.2.2.19)
- *   MUST make TCP TTL configurable. (does - IP_TTL option)
- *
- * Event Processing (4.2.2.20)
- *   SHOULD queue out-of-order segments. (does)
- *   MUST aggregate ACK segments whenever possible. (does but badly)
- *
- * Retransmission Timeout Calculation (4.2.3.1)
- *   MUST implement Karn's algorithm and Jacobson's algorithm for RTO
- *     calculation. (does, or at least explains them in the comments 8*b)
- *  SHOULD initialize RTO to 0 and RTT to 3. (does)
- *
- * When to Send an ACK Segment (4.2.3.2)
- *   SHOULD implement delayed ACK. (does)
- *   MUST keep ACK delay < 0.5 sec. (does)
- *
- * When to Send a Window Update (4.2.3.3)
- *   MUST implement receiver-side SWS. (does)
- *
- * When to Send Data (4.2.3.4)
- *   MUST implement sender-side SWS. (does)
- *   SHOULD implement Nagle algorithm. (does)
- *
- * TCP Connection Failures (4.2.3.5)
- *  MUST handle excessive retransmissions "properly" (see the RFC). (does)
- *   SHOULD inform application layer of soft errors. (does)
- *
- * TCP Keep-Alives (4.2.3.6)
- *   MAY provide keep-alives. (does)
- *   MUST make keep-alives configurable on a per-connection basis. (does)
- *   MUST default to no keep-alives. (does)
- *   MUST make keep-alive interval configurable. (does)
- *   MUST make default keep-alive interval > 2 hours. (does)
- *   MUST NOT interpret failure to ACK keep-alive packet as dead
- *     connection. (doesn't)
- *   SHOULD send keep-alive with no data. (does)
- *
- * TCP Multihoming (4.2.3.7)
- *   MUST get source address from IP layer before sending first
- *     SYN. (does)
- *   MUST use same local address for all segments of a connection. (does)
- *
- * IP Options (4.2.3.8)
- *   MUST ignore unsupported IP options. (does)
- *   MAY support Time Stamp and Record Route. (does)
- *   MUST allow application to specify a source route. (does)
- *   MUST allow received Source Route option to set route for all future
- *     segments on this connection. (does not (security issues))
- *
- * ICMP messages (4.2.3.9)
- *   MUST act on ICMP errors. (does)
- *   MUST slow transmission upon receipt of a Source Quench. (doesn't anymore 
- *   because that is deprecated now by the IETF, can be turned on)
- *   MUST NOT abort connection upon receipt of soft Destination
- *     Unreachables (0, 1, 5), Time Exceededs and Parameter
- *     Problems. (doesn't)
- *   SHOULD report soft Destination Unreachables etc. to the
- *     application. (does, except during SYN_RECV and may drop messages
- *     in some rare cases before accept() - ICMP is unreliable)	
- *   SHOULD abort connection upon receipt of hard Destination Unreachable
- *     messages (2, 3, 4). (does, but see above)
- *
- * Remote Address Validation (4.2.3.10)
- *   MUST reject as an error OPEN for invalid remote IP address. (does)
- *   MUST ignore SYN with invalid source address. (does)
- *   MUST silently discard incoming SYN for broadcast/multicast
- *     address. (does)
- *
- * Asynchronous Reports (4.2.4.1)
- * MUST provide mechanism for reporting soft errors to application
- *     layer. (does)
- *
- * Type of Service (4.2.4.2)
- *   MUST allow application layer to set Type of Service. (does IP_TOS)
- *
- * (Whew. -- MS 950903)
- * (Updated by AK, but not complete yet.)
- **/
-
 #include <linux/config.h>
 #include <linux/types.h>
 #include <linux/fcntl.h>
@@ -425,6 +256,7 @@
 #include <net/tcp.h>
 
 #include <asm/uaccess.h>
+#include <asm/ioctls.h>
 
 int sysctl_tcp_fin_timeout = TCP_FIN_TIMEOUT;
 

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)