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
- Lines: 184
- Date:
Fri Feb 9 11:34:13 2001
- Orig file:
v2.4.1/linux/net/ipv4/tcp.c
- Orig date:
Sat Feb 3 19:51:33 2001
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)