Module Name:    src
Committed By:   martin
Date:           Sun Apr 12 08:39:42 UTC 2020

Modified Files:
        src/sys/external/bsd/ipf/netinet [netbsd-9]: fil.c ip_frag.c

Log Message:
Pull up following revision(s) (requested by christos in ticket #827):

        sys/external/bsd/ipf/netinet/fil.c: revision 1.32
        sys/external/bsd/ipf/netinet/fil.c: revision 1.33
        sys/external/bsd/ipf/netinet/ip_frag.c: revision 1.8

PR/55137: Kouichi Hashikawa: ipfstat -f incorrect output
Fix incorrect byte order.

PR/55137: Kouichi Hashikawa: ipfstat -f incorrect output
- make sure frag is initialized to 0
- initialize ipfr_p field

PR/55149: Kouichi Hashikawa: Get morefrag before we strip it out from off


To generate a diff of this commit:
cvs rdiff -u -r1.29.2.2 -r1.29.2.3 src/sys/external/bsd/ipf/netinet/fil.c
cvs rdiff -u -r1.7 -r1.7.6.1 src/sys/external/bsd/ipf/netinet/ip_frag.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/external/bsd/ipf/netinet/fil.c
diff -u src/sys/external/bsd/ipf/netinet/fil.c:1.29.2.2 src/sys/external/bsd/ipf/netinet/fil.c:1.29.2.3
--- src/sys/external/bsd/ipf/netinet/fil.c:1.29.2.2	Thu Oct  3 17:18:32 2019
+++ src/sys/external/bsd/ipf/netinet/fil.c	Sun Apr 12 08:39:42 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: fil.c,v 1.29.2.2 2019/10/03 17:18:32 martin Exp $	*/
+/*	$NetBSD: fil.c,v 1.29.2.3 2020/04/12 08:39:42 martin Exp $	*/
 
 /*
  * Copyright (C) 2012 by Darren Reed.
@@ -141,7 +141,7 @@ extern struct timeout ipf_slowtimer_ch;
 #if !defined(lint)
 #if defined(__NetBSD__)
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: fil.c,v 1.29.2.2 2019/10/03 17:18:32 martin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: fil.c,v 1.29.2.3 2020/04/12 08:39:42 martin Exp $");
 #else
 static const char sccsid[] = "@(#)fil.c	1.36 6/5/96 (C) 1993-2000 Darren Reed";
 static const char rcsid[] = "@(#)Id: fil.c,v 1.1.1.2 2012/07/22 13:45:07 darrenr Exp $";
@@ -1696,7 +1696,7 @@ ipf_pr_ipv4hdr(fr_info_t *fin)
 	fi->fi_p = p;
 	fin->fin_crc = p;
 	fi->fi_tos = ip->ip_tos;
-	fin->fin_id = ip->ip_id;
+	fin->fin_id = ntohs(ip->ip_id);
 	off = ntohs(ip->ip_off);
 
 	/* Get both TTL and protocol */
@@ -1724,11 +1724,10 @@ ipf_pr_ipv4hdr(fr_info_t *fin)
 	 */
 	off &= IP_MF|IP_OFFMASK;
 	if (off != 0) {
+		int morefrag = off & IP_MF;
 		fi->fi_flx |= FI_FRAG;
 		off &= IP_OFFMASK;
 		if (off != 0) {
-			int morefrag = off & IP_MF;
-
 			if (off == 1 && p == IPPROTO_TCP) {
 				fin->fin_flx |= FI_SHORT;       /* RFC 3128 */
 				DT1(ipf_fi_tcp_frag_off_1, fr_info_t *, fin);

Index: src/sys/external/bsd/ipf/netinet/ip_frag.c
diff -u src/sys/external/bsd/ipf/netinet/ip_frag.c:1.7 src/sys/external/bsd/ipf/netinet/ip_frag.c:1.7.6.1
--- src/sys/external/bsd/ipf/netinet/ip_frag.c:1.7	Sun Jun  3 10:37:23 2018
+++ src/sys/external/bsd/ipf/netinet/ip_frag.c	Sun Apr 12 08:39:42 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: ip_frag.c,v 1.7 2018/06/03 10:37:23 maxv Exp $	*/
+/*	$NetBSD: ip_frag.c,v 1.7.6.1 2020/04/12 08:39:42 martin Exp $	*/
 
 /*
  * Copyright (C) 2012 by Darren Reed.
@@ -86,7 +86,7 @@ struct file;
 #if !defined(lint)
 #if defined(__NetBSD__)
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ip_frag.c,v 1.7 2018/06/03 10:37:23 maxv Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ip_frag.c,v 1.7.6.1 2020/04/12 08:39:42 martin Exp $");
 #else
 static const char sccsid[] = "@(#)ip_frag.c	1.11 3/24/96 (C) 1993-2000 Darren Reed";
 static const char rcsid[] = "@(#)Id: ip_frag.c,v 1.1.1.2 2012/07/22 13:45:17 darrenr Exp";
@@ -393,6 +393,7 @@ ipfr_frag_new(
 		}
 	}
 
+	memset(&frag, 0, sizeof(frag));
 	frag.ipfr_v = fin->fin_v;
 	idx = fin->fin_v;
 	frag.ipfr_p = fin->fin_p;
@@ -441,6 +442,7 @@ ipfr_frag_new(
 		FBUMPD(ifs_nomem);
 		return NULL;
 	}
+	memset(fran, 0, sizeof(*fran));
 
 	WRITE_ENTER(lock);
 
@@ -478,6 +480,7 @@ ipfr_frag_new(
 	table[idx] = fra;
 	bcopy((char *)&frag.ipfr_ifp, (char *)&fra->ipfr_ifp, IPFR_CMPSZ);
 	fra->ipfr_v = fin->fin_v;
+	fra->ipfr_p = fin->fin_p;
 	fra->ipfr_ttl = softc->ipf_ticks + softf->ipfr_ttl;
 	fra->ipfr_firstend = frag.ipfr_firstend;
 
@@ -655,6 +658,7 @@ ipf_frag_lookup(
 	 *
 	 * build up a hash value to index the table with.
 	 */
+	memset(&frag, 0, sizeof(frag));
 	frag.ipfr_v = fin->fin_v;
 	idx = fin->fin_v;
 	frag.ipfr_p = fin->fin_p;

Reply via email to