NetBSD/sys/netinet
thorpej e0acb98b94 Fix an old and obscure TCP bug, brought to my attention by Bill Fenner,
fixed in FreeBSD by John Polstra:

Fix a bug (apparently very old) that can cause a TCP connection to
be dropped when it has an unusual traffic pattern.  For full details
as well as a test case that demonstrates the failure, see the
referenced PR (FreeBSD's kern/3998).

   Under certain circumstances involving the persist state, it is
   possible for the receive side's tp->rcv_nxt to advance beyond its
   tp->rcv_adv.  This causes (tp->rcv_adv - tp->rcv_nxt) to become
   negative.  However, in the code affected by this fix, that difference
   was interpreted as an unsigned number by max().  Since it was
   negative, it was taken as a huge unsigned number.  The effect was
   to cause the receiver to believe that its receive window had negative
   size, thereby rejecting all received segments including ACKs.  As
   the test case shows, this led to fruitless retransmissions and
   eventually to a dropped connection.  Even connections using the
   loopback interface could be dropped.  The fix substitutes the signed
   imax() for the unsigned max() function.

Bill informs me that his research indicates this bug appeared in Reno.
1997-07-06 07:04:34 +00:00
..
fil.c Restore original RCS IDs. 1997-07-06 05:29:13 +00:00
icmp_var.h
if_arp.c Allow revarpwhoami() to be called multiple times. 1997-05-27 23:14:44 +00:00
if_atm.c backout previous kprintf changes 1996-10-13 02:03:00 +00:00
if_atm.h
if_inarp.h New ARP system, supports IPv4 over any hardware link. 1997-03-15 18:09:08 +00:00
igmp.c Add in_nullhost() and in_hosteq() macros, to hide some protocol 1996-09-09 14:51:07 +00:00
igmp.h
igmp_var.h
in.c New ARP system, supports IPv4 over any hardware link. 1997-03-15 18:09:08 +00:00
in.h Add net.inet.ip.allowsrcrt option which allows/drops all source 1997-02-25 08:35:41 +00:00
in_cksum.c backout previous kprintf changes 1996-10-13 02:03:00 +00:00
in_pcb.c Return EAGAIN if binding with no specified port and the pool is empty. 1996-12-10 11:38:42 +00:00
in_pcb.h Implement the IP_RECVIF socket option: supply a datagram packet's incoming 1997-01-11 05:21:07 +00:00
in_proto.c - fix NSIP; it referenced non-existing functions. 1996-10-10 23:04:26 +00:00
in_systm.h
in_var.h
ip.h Minor change to a comment. 1996-12-11 01:55:50 +00:00
ip_auth.c The sheer number of #ifdef's around it should have been a hint that 1997-07-06 05:11:28 +00:00
ip_auth.h Import ip_auth.h from IPFilter 3.2beta1; this was missed during the 1997-07-06 04:58:52 +00:00
ip_compat.h Restore original RCS IDs. 1997-07-06 05:29:13 +00:00
ip_fil.c Restore original RCS IDs. 1997-07-06 05:29:13 +00:00
ip_fil.h Restore original RCS IDs. 1997-07-06 05:29:13 +00:00
ip_frag.c Restore original RCS IDs. 1997-07-06 05:29:13 +00:00
ip_frag.h Restore original RCS IDs. 1997-07-06 05:29:13 +00:00
ip_ftp_pxy.c fix conflicts from import 1997-07-05 05:38:14 +00:00
ip_icmp.c Increment icmpstat.icps_badlen for bad length of ICMP_MASKREQ, per 1997-06-24 01:26:19 +00:00
ip_icmp.h
ip_input.c Eliminate use of dtom() from the network code, allowing more flexible 1997-06-24 02:25:59 +00:00
ip_mroute.c backout previous kprintf changes 1996-10-13 02:03:00 +00:00
ip_mroute.h Rework the token bucket filter to use a list of packets rather than a static 1996-09-09 17:14:04 +00:00
ip_nat.c Restore original RCS IDs. 1997-07-06 05:29:13 +00:00
ip_nat.h Restore original RCS IDs. 1997-07-06 05:29:13 +00:00
ip_output.c Move the mtod calls *after* we've made sure that the packet has passed the 1997-04-15 00:41:52 +00:00
ip_proxy.c Restore original RCS IDs. 1997-07-06 05:29:13 +00:00
ip_proxy.h Restore original RCS IDs. 1997-07-06 05:29:13 +00:00
ip_state.c Restore original RCS IDs. 1997-07-06 05:29:13 +00:00
ip_state.h Restore original RCS IDs. 1997-07-06 05:29:13 +00:00
ip_var.h Eliminate use of dtom() from the network code, allowing more flexible 1997-06-24 02:25:59 +00:00
raw_ip.c Implement the IP_RECVIF socket option: supply a datagram packet's incoming 1997-01-11 05:21:07 +00:00
tcp.h
tcp_debug.c backout previous kprintf change 1996-10-13 16:50:51 +00:00
tcp_debug.h
tcp_fsm.h As per RFC 793, don't retransmit the FIN during a simultaneous close. 1997-06-18 10:05:44 +00:00
tcp_input.c Fix an old and obscure TCP bug, brought to my attention by Bill Fenner, 1997-07-06 07:04:34 +00:00
tcp_output.c Fix urgent pointer overflow problems when used with large windows 1997-06-03 16:17:09 +00:00
tcp_seq.h
tcp_subr.c Eliminate use of dtom() from the network code, allowing more flexible 1997-06-24 02:25:59 +00:00
tcp_timer.c Fix RTT scaling problems introduced with Brakmo and Peterson changes. 1996-12-10 18:20:19 +00:00
tcp_timer.h
tcp_usrreq.c Eliminate a superflouus `if' statement: when detaching the TCP protocol from 1997-06-12 18:41:14 +00:00
tcp_var.h Fix RTT scaling problems introduced with Brakmo and Peterson changes. 1996-12-10 18:20:19 +00:00
tcpip.h
udp.h Make length and offset fields unsigned. From Kevin M. Lahey <kml@nas.nasa.gov> 1996-10-25 06:22:24 +00:00
udp_usrreq.c Don't adjust ip->ip_len before calling icmp_error(); icmp_error() already 1997-06-24 19:31:34 +00:00
udp_var.h