Subject: Re: CVS commit: syssrc/sys/netinet
To: None <itojun@netbsd.org>
From: enami tsugutomo <enami@sm.sony.co.jp>
List: source-changes
Date: 03/22/2002 13:26:51
Jun-ichiro itojun Hagino <itojun@netbsd.org> writes:

> Modified Files:
> 	syssrc/sys/netinet: tcp_input.c
> 
> Log Message:
> make sure we don't touch "ip" in IPv6 path
> 
> To generate a diff of this commit:
> cvs rdiff -r1.137 -r1.138 syssrc/sys/netinet/tcp_input.c

I don't think this is a right fix.  Since all jumps before the first
destaddr check are either the `return' or `goto drop', the second
check (which is added in rev. 1.137) shouldn't be necessary.  I
propose following change instead.  Note that FreeBSD's tcp_input() has
some paths to the label `dropwithreset:' before the first check.

enami.

Index: tcp_input.c
===================================================================
RCS file: /cvsroot/syssrc/sys/netinet/tcp_input.c,v
retrieving revision 1.138
diff -u -r1.138 tcp_input.c
--- tcp_input.c	2002/03/22 03:21:13	1.138
+++ tcp_input.c	2002/03/22 04:07:56
@@ -2250,11 +2250,6 @@
 	if (tiflags & TH_RST)
 		goto drop;
 
-	if (af == AF_INET &&
-	    (IN_MULTICAST(ip->ip_dst.s_addr) ||
-	     in_broadcast(ip->ip_dst, m->m_pkthdr.rcvif)))
-		goto drop;
-
     {
 	/*
 	 * need to recover version # field, which was overwritten on