Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 14 Nov 2003 14:03:19 -0800 (PST)
From:      Peter Wemm <peter@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 42388 for review
Message-ID:  <200311142203.hAEM3JTJ077888@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=42388

Change 42388 by peter@peter_daintree on 2003/11/14 14:02:39

	IFC @42387

Affected files ...

.. //depot/projects/hammer/sbin/idmapd/Makefile#1 branch
.. //depot/projects/hammer/sbin/idmapd/idmapd.8#1 branch
.. //depot/projects/hammer/sbin/idmapd/idmapd.c#1 branch
.. //depot/projects/hammer/sbin/mount_nfs4/Makefile#1 branch
.. //depot/projects/hammer/sbin/mount_nfs4/mount_nfs4.8#1 branch
.. //depot/projects/hammer/sbin/mount_nfs4/mount_nfs4.c#1 branch
.. //depot/projects/hammer/share/man/man4/Makefile#26 integrate
.. //depot/projects/hammer/share/man/man4/idt.4#1 branch
.. //depot/projects/hammer/sys/conf/files#37 integrate
.. //depot/projects/hammer/sys/dev/acpica/acpi_pci_link.c#8 integrate
.. //depot/projects/hammer/sys/dev/acpica/acpi_pcib.c#10 integrate
.. //depot/projects/hammer/sys/i386/i386/intr_machdep.c#3 integrate
.. //depot/projects/hammer/sys/i386/i386/mptable.c#5 integrate
.. //depot/projects/hammer/sys/i386/isa/atpic.c#5 integrate
.. //depot/projects/hammer/sys/i386/isa/atpic_vector.s#3 integrate
.. //depot/projects/hammer/sys/modules/if_gre/Makefile#5 integrate
.. //depot/projects/hammer/sys/net/if_arcsubr.c#7 integrate
.. //depot/projects/hammer/sys/net/if_ef.c#6 integrate
.. //depot/projects/hammer/sys/net/if_ethersubr.c#19 integrate
.. //depot/projects/hammer/sys/net/if_fddisubr.c#8 integrate
.. //depot/projects/hammer/sys/net/if_gre.c#8 integrate
.. //depot/projects/hammer/sys/net/if_iso88025subr.c#7 integrate
.. //depot/projects/hammer/sys/net/if_ppp.c#10 integrate
.. //depot/projects/hammer/sys/netatm/ipatm/ipatm_vcm.c#6 integrate
.. //depot/projects/hammer/sys/netinet/in_rmx.c#7 integrate
.. //depot/projects/hammer/sys/netinet/in_var.h#4 integrate
.. //depot/projects/hammer/sys/netinet/ip_fastfwd.c#1 branch
.. //depot/projects/hammer/sys/netinet/ip_flow.c#5 delete
.. //depot/projects/hammer/sys/netinet/ip_flow.h#3 delete
.. //depot/projects/hammer/sys/netinet/ip_fw2.c#18 integrate
.. //depot/projects/hammer/sys/netinet/ip_icmp.c#10 integrate
.. //depot/projects/hammer/sys/netinet/ip_input.c#21 integrate
.. //depot/projects/hammer/sys/netinet/ip_output.c#22 integrate
.. //depot/projects/hammer/sys/netinet/ip_var.h#13 integrate
.. //depot/projects/hammer/sys/nfs/nfsproto.h#2 integrate
.. //depot/projects/hammer/sys/nfs/rpcv2.h#2 integrate
.. //depot/projects/hammer/sys/nfs4client/nfs4.h#1 branch
.. //depot/projects/hammer/sys/nfs4client/nfs4_dev.c#1 branch
.. //depot/projects/hammer/sys/nfs4client/nfs4_dev.h#1 branch
.. //depot/projects/hammer/sys/nfs4client/nfs4_idmap.c#1 branch
.. //depot/projects/hammer/sys/nfs4client/nfs4_idmap.h#1 branch
.. //depot/projects/hammer/sys/nfs4client/nfs4_socket.c#1 branch
.. //depot/projects/hammer/sys/nfs4client/nfs4_subs.c#1 branch
.. //depot/projects/hammer/sys/nfs4client/nfs4_vfs.h#1 branch
.. //depot/projects/hammer/sys/nfs4client/nfs4_vfs_subs.c#1 branch
.. //depot/projects/hammer/sys/nfs4client/nfs4_vfsops.c#1 branch
.. //depot/projects/hammer/sys/nfs4client/nfs4_vn.h#1 branch
.. //depot/projects/hammer/sys/nfs4client/nfs4_vn_subs.c#1 branch
.. //depot/projects/hammer/sys/nfs4client/nfs4_vnops.c#1 branch
.. //depot/projects/hammer/sys/nfs4client/nfs4m_subs.h#1 branch
.. //depot/projects/hammer/sys/nfsclient/bootp_subr.c#10 integrate
.. //depot/projects/hammer/sys/nfsclient/krpc_subr.c#5 integrate
.. //depot/projects/hammer/sys/nfsclient/nfs.h#4 integrate
.. //depot/projects/hammer/sys/nfsclient/nfs_bio.c#11 integrate
.. //depot/projects/hammer/sys/nfsclient/nfs_diskless.c#6 integrate
.. //depot/projects/hammer/sys/nfsclient/nfs_lock.c#11 integrate
.. //depot/projects/hammer/sys/nfsclient/nfs_nfsiod.c#5 integrate
.. //depot/projects/hammer/sys/nfsclient/nfs_node.c#9 integrate
.. //depot/projects/hammer/sys/nfsclient/nfs_socket.c#10 integrate
.. //depot/projects/hammer/sys/nfsclient/nfs_subs.c#8 integrate
.. //depot/projects/hammer/sys/nfsclient/nfs_vfsops.c#19 integrate
.. //depot/projects/hammer/sys/nfsclient/nfs_vnops.c#15 integrate
.. //depot/projects/hammer/sys/nfsclient/nfsargs.h#2 integrate
.. //depot/projects/hammer/sys/nfsclient/nfsm_subs.h#2 integrate
.. //depot/projects/hammer/sys/nfsclient/nfsmount.h#3 integrate
.. //depot/projects/hammer/sys/nfsclient/nfsnode.h#3 integrate
.. //depot/projects/hammer/sys/rpc/rpcclnt.c#1 branch
.. //depot/projects/hammer/sys/rpc/rpcclnt.h#1 branch
.. //depot/projects/hammer/sys/rpc/rpcm_subs.h#1 branch
.. //depot/projects/hammer/sys/rpc/rpcv2.h#1 branch
.. //depot/projects/hammer/sys/security/mac/mac_internal.h#5 integrate
.. //depot/projects/hammer/sys/sparc64/conf/GENERIC#18 integrate
.. //depot/projects/hammer/sys/sys/mbuf.h#14 integrate
.. //depot/projects/hammer/sys/sys/reboot.h#3 integrate
.. //depot/projects/hammer/sys/sys/sysctl.h#12 integrate

Differences ...

==== //depot/projects/hammer/share/man/man4/Makefile#26 (text+ko) ====

@@ -1,5 +1,5 @@
 #	@(#)Makefile	8.1 (Berkeley) 6/18/93
-# $FreeBSD: src/share/man/man4/Makefile,v 1.239 2003/11/11 18:48:02 trhodes Exp $
+# $FreeBSD: src/share/man/man4/Makefile,v 1.240 2003/11/14 20:29:12 bms Exp $
 
 MAN=	aac.4 \
 	acpi.4 \
@@ -82,6 +82,7 @@
 	icmp.4 \
 	icmp6.4 \
 	ida.4 \
+	idt.4 \
 	ieee80211.4 \
 	ifmib.4 \
 	iic.4 \
@@ -332,6 +333,7 @@
 MLINKS+=gx.4 if_gx.4
 MLINKS+=hatm.4 if_hatm.4
 MLINKS+=hme.4 if_hme.4
+MLINKS+=idt.4 if_idt.4
 MLINKS+=ipfirewall.4 ipacct.4 ipfirewall.4 ipaccounting.4 ipfirewall.4 ipfw.4
 MLINKS+=kue.4 if_kue.4
 MLINKS+=lge.4 if_lge.4

==== //depot/projects/hammer/sys/conf/files#37 (text+ko) ====

@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/conf/files,v 1.850 2003/11/12 04:22:36 ume Exp $
+# $FreeBSD: src/sys/conf/files,v 1.852 2003/11/14 21:02:22 andre Exp $
 #
 # The long compile-with and dependency lines are required because of
 # limitations in config: backslash-newline doesn't work in strings, and
@@ -1448,7 +1448,7 @@
 netinet/ip_ecn.c	optional inet6
 netinet/ip_encap.c	optional inet
 netinet/ip_encap.c	optional inet6
-netinet/ip_flow.c	optional inet
+netinet/ip_fastfwd.c	optional inet
 netinet/ip_fw2.c	optional ipfirewall
 netinet/ip_icmp.c	optional inet
 netinet/ip_input.c	optional inet
@@ -1562,6 +1562,15 @@
 nfsclient/nfs_vfsops.c		optional nfsclient
 nfsclient/nfs_vnops.c		optional nfsclient
 nfsclient/nfs_lock.c		optional nfsclient
+nfs4client/nfs4_socket.c	optional nfsclient
+nfs4client/nfs4_vfsops.c	optional nfsclient
+nfs4client/nfs4_vnops.c		optional nfsclient
+nfs4client/nfs4_subs.c		optional nfsclient
+nfs4client/nfs4_vfs_subs.c	optional nfsclient
+nfs4client/nfs4_vn_subs.c	optional nfsclient
+nfs4client/nfs4_dev.c		optional nfsclient
+nfs4client/nfs4_idmap.c		optional nfsclient
+rpc/rpcclnt.c			optional nfsclient
 nfsserver/nfs_serv.c		optional nfsserver
 nfsserver/nfs_srvsock.c		optional nfsserver
 nfsserver/nfs_srvcache.c	optional nfsserver

==== //depot/projects/hammer/sys/dev/acpica/acpi_pci_link.c#8 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/acpica/acpi_pci_link.c,v 1.8 2003/11/12 19:46:17 jhb Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/acpica/acpi_pci_link.c,v 1.9 2003/11/14 21:36:09 jhb Exp $");
 
 #include "opt_acpi.h"
 #include <sys/param.h>

==== //depot/projects/hammer/sys/dev/acpica/acpi_pcib.c#10 (text+ko) ====

@@ -26,7 +26,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/acpica/acpi_pcib.c,v 1.32 2003/08/24 17:48:01 obrien Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/acpica/acpi_pcib.c,v 1.33 2003/11/14 21:36:09 jhb Exp $");
 
 #include "opt_acpi.h"
 #include <sys/param.h>

==== //depot/projects/hammer/sys/i386/i386/intr_machdep.c#3 (text+ko) ====

@@ -26,7 +26,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/i386/i386/intr_machdep.c,v 1.2 2003/11/12 18:13:57 jhb Exp $
+ * $FreeBSD: src/sys/i386/i386/intr_machdep.c,v 1.3 2003/11/14 21:00:32 jhb Exp $
  */
 
 /*
@@ -171,7 +171,10 @@
 	atomic_add_int(&cnt.v_intr, 1);
 
 	it = isrc->is_ithread;
-	ih = TAILQ_FIRST(&it->it_handlers);
+	if (it == NULL)
+		ih = NULL;
+	else
+		ih = TAILQ_FIRST(&it->it_handlers);
 
 	/*
 	 * XXX: We assume that IRQ 0 is only used for the ISA timer

==== //depot/projects/hammer/sys/i386/i386/mptable.c#5 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/i386/i386/mptable.c,v 1.225 2003/11/11 21:19:43 jhb Exp $");
+__FBSDID("$FreeBSD: src/sys/i386/i386/mptable.c,v 1.226 2003/11/14 20:51:07 peter Exp $");
 
 #include "opt_mptable_force_htt.h"
 #include <sys/param.h>
@@ -237,7 +237,7 @@
 			goto found;
 	} else {
 		/* last 1K of base memory, effective 'top of base' passed in */
-		target = (u_int32_t) (basemem - 0x400);
+		target = (u_int32_t) ((basemem * 1024) - 0x400);
 		if ((x = search_for_sig(target, 1024 / 4)) >= 0)
 			goto found;
 	}

==== //depot/projects/hammer/sys/i386/isa/atpic.c#5 (text+ko) ====

@@ -32,7 +32,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/i386/isa/atpic.c,v 1.4 2003/11/14 19:13:06 jhb Exp $");
+__FBSDID("$FreeBSD: src/sys/i386/isa/atpic.c,v 1.5 2003/11/14 21:02:49 jhb Exp $");
 
 #include "opt_auto_eoi.h"
 #include "opt_isa.h"
@@ -215,16 +215,6 @@
 static void
 atpic_enable_intr(struct intsrc *isrc)
 {
-	struct atpic_intsrc *ai = (struct atpic_intsrc *)isrc;
-	struct atpic *ap = (struct atpic *)isrc->is_pic;
-	register_t eflags;
-
-	mtx_lock_spin(&icu_lock);
-	eflags = intr_disable();
-	setidt(ap->at_intbase + ai->at_irq, ai->at_intr, SDT_SYS386IGT,
-	    SEL_KPL, GSEL(GCODE_SEL, SEL_KPL));
-	intr_restore(eflags);
-	mtx_unlock_spin(&icu_lock);
 }
 
 static int
@@ -326,6 +316,9 @@
 		if (i == ICU_SLAVEID)
 			continue;
 		ai = &atintrs[i];
+		setidt(((struct atpic *)ai->at_intsrc.is_pic)->at_intbase +
+		    ai->at_irq, ai->at_intr, SDT_SYS386IGT, SEL_KPL,
+		    GSEL(GCODE_SEL, SEL_KPL));
 		intr_register_source(&ai->at_intsrc);
 	}
 }

==== //depot/projects/hammer/sys/i386/isa/atpic_vector.s#3 (text+ko) ====

@@ -32,7 +32,7 @@
  * SUCH DAMAGE.
  *
  *	from: vector.s, 386BSD 0.1 unknown origin
- * $FreeBSD: src/sys/i386/isa/atpic_vector.s,v 1.39 2003/11/12 18:13:57 jhb Exp $
+ * $FreeBSD: src/sys/i386/isa/atpic_vector.s,v 1.40 2003/11/14 20:06:24 peter Exp $
  */
 
 /*
@@ -40,8 +40,6 @@
  * master and slave interrupt controllers.
  */
 
-#include "opt_auto_eoi.h"
-
 #include <machine/asmacros.h>
 #include <i386/isa/icu.h>
 #ifdef PC98

==== //depot/projects/hammer/sys/modules/if_gre/Makefile#5 (text+ko) ====

@@ -1,13 +1,16 @@
 # $FreeBSD$
 
-.PATH: ${.CURDIR}/../../net ${.CURDIR}/../../netinet 
+.PATH: ${.CURDIR}/../../net ${.CURDIR}/../../netinet ${.CURDIR}/../../netinet6
 
 KMOD=	if_gre
-SRCS=	if_gre.c ip_gre.c opt_inet.h opt_atalk.h
+SRCS=	if_gre.c ip_gre.c opt_inet.h opt_inet6.h opt_atalk.h
 
 opt_inet.h:
 	echo "#define INET 1" > ${.TARGET}
 
+opt_inet6.h:
+	echo "#define INET6 1" > ${.TARGET}
+
 opt_atalk.h:
 	echo "#define NETATALK 1" > ${.TARGET}
 

==== //depot/projects/hammer/sys/net/if_arcsubr.c#7 (text+ko) ====

@@ -1,5 +1,5 @@
 /*	$NetBSD: if_arcsubr.c,v 1.36 2001/06/14 05:44:23 itojun Exp $	*/
-/*	$FreeBSD: src/sys/net/if_arcsubr.c,v 1.14 2003/10/31 18:32:08 brooks Exp $ */
+/*	$FreeBSD: src/sys/net/if_arcsubr.c,v 1.15 2003/11/14 21:02:22 andre Exp $ */
 
 /*
  * Copyright (c) 1994, 1995 Ignatios Souvatzis
@@ -543,14 +543,14 @@
 #ifdef INET
 	case ARCTYPE_IP:
 		m_adj(m, ARC_HDRNEWLEN);
-		if (ipflow_fastforward(m))
+		if (ip_fastforward(m))
 			return;
 		isr = NETISR_IP;
 		break;
 
 	case ARCTYPE_IP_OLD:
 		m_adj(m, ARC_HDRLEN);
-		if (ipflow_fastforward(m))
+		if (ip_fastforward(m))
 			return;
 		isr = NETISR_IP;
 		break;

==== //depot/projects/hammer/sys/net/if_ef.c#6 (text+ko) ====

@@ -23,7 +23,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/net/if_ef.c,v 1.26 2003/10/31 18:32:08 brooks Exp $
+ * $FreeBSD: src/sys/net/if_ef.c,v 1.27 2003/11/14 21:02:22 andre Exp $
  */
 
 #include "opt_inet.h"
@@ -253,7 +253,7 @@
 #endif
 #ifdef INET
 	case ETHERTYPE_IP:
-		if (ipflow_fastforward(m))
+		if (ip_fastforward(m))
 			return (0);
 		isr = NETISR_IP;
 		break;

==== //depot/projects/hammer/sys/net/if_ethersubr.c#19 (text+ko) ====

@@ -31,7 +31,7 @@
  * SUCH DAMAGE.
  *
  *	@(#)if_ethersubr.c	8.1 (Berkeley) 6/10/93
- * $FreeBSD: src/sys/net/if_ethersubr.c,v 1.154 2003/10/31 18:32:08 brooks Exp $
+ * $FreeBSD: src/sys/net/if_ethersubr.c,v 1.155 2003/11/14 21:02:22 andre Exp $
  */
 
 #include "opt_atalk.h"
@@ -714,7 +714,7 @@
 	switch (ether_type) {
 #ifdef INET
 	case ETHERTYPE_IP:
-		if (ipflow_fastforward(m))
+		if (ip_fastforward(m))
 			return;
 		isr = NETISR_IP;
 		break;

==== //depot/projects/hammer/sys/net/if_fddisubr.c#8 (text+ko) ====

@@ -33,7 +33,7 @@
  * SUCH DAMAGE.
  *
  *	from: if_ethersubr.c,v 1.5 1994/12/13 22:31:45 wollman Exp
- * $FreeBSD: src/sys/net/if_fddisubr.c,v 1.86 2003/10/23 17:47:55 imp Exp $
+ * $FreeBSD: src/sys/net/if_fddisubr.c,v 1.87 2003/11/14 21:02:22 andre Exp $
  */
 
 #include "opt_atalk.h"
@@ -471,7 +471,7 @@
 		switch (type) {
 #ifdef INET
 		case ETHERTYPE_IP:
-			if (ipflow_fastforward(m))
+			if (ip_fastforward(m))
 				return;
 			isr = NETISR_IP;
 			break;

==== //depot/projects/hammer/sys/net/if_gre.c#8 (text+ko) ====

@@ -48,6 +48,7 @@
 
 #include "opt_atalk.h"
 #include "opt_inet.h"
+#include "opt_inet6.h"
 
 #include <sys/param.h>
 #include <sys/kernel.h>
@@ -585,6 +586,9 @@
 		memcpy(&lifr->dstaddr, &si, sizeof(si));
 		break;
 	case SIOCGIFPSRCADDR:
+#ifdef INET6
+	case SIOCGIFPSRCADDR_IN6:
+#endif
 		if (sc->g_src.s_addr == INADDR_ANY) {
 			error = EADDRNOTAVAIL;
 			break;
@@ -596,6 +600,9 @@
 		bcopy(&si, &ifr->ifr_addr, sizeof(ifr->ifr_addr));
 		break;
 	case SIOCGIFPDSTADDR:
+#ifdef INET6
+	case SIOCGIFPDSTADDR_IN6:
+#endif
 		if (sc->g_dst.s_addr == INADDR_ANY) {
 			error = EADDRNOTAVAIL;
 			break;

==== //depot/projects/hammer/sys/net/if_iso88025subr.c#7 (text+ko) ====

@@ -30,7 +30,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/net/if_iso88025subr.c,v 1.57 2003/09/14 02:32:31 mdodd Exp $
+ * $FreeBSD: src/sys/net/if_iso88025subr.c,v 1.58 2003/11/14 21:02:22 andre Exp $
  *
  */
 
@@ -556,7 +556,7 @@
 #ifdef INET
 		case ETHERTYPE_IP:
 			th->iso88025_shost[0] &= ~(TR_RII); 
-			if (ipflow_fastforward(m))
+			if (ip_fastforward(m))
 				return;
 			isr = NETISR_IP;
 			break;

==== //depot/projects/hammer/sys/net/if_ppp.c#10 (text+ko) ====

@@ -69,7 +69,7 @@
  * Paul Mackerras (paulus@cs.anu.edu.au).
  */
 
-/* $FreeBSD: src/sys/net/if_ppp.c,v 1.93 2003/11/08 22:28:39 sam Exp $ */
+/* $FreeBSD: src/sys/net/if_ppp.c,v 1.94 2003/11/14 21:02:22 andre Exp $ */
 /* from if_sl.c,v 1.11 84/10/04 12:54:47 rick Exp */
 /* from NetBSD: if_ppp.c,v 1.15.2.2 1994/07/28 05:17:58 cgd Exp */
 
@@ -1537,7 +1537,7 @@
 	m->m_pkthdr.len -= PPP_HDRLEN;
 	m->m_data += PPP_HDRLEN;
 	m->m_len -= PPP_HDRLEN;
-	if (ipflow_fastforward(m))
+	if (ip_fastforward(m))
 	    return;
 	isr = NETISR_IP;
 	break;

==== //depot/projects/hammer/sys/netatm/ipatm/ipatm_vcm.c#6 (text+ko) ====

@@ -31,19 +31,20 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/netatm/ipatm/ipatm_vcm.c,v 1.16 2003/07/25 08:35:26 harti Exp $");
+__FBSDID("$FreeBSD: src/sys/netatm/ipatm/ipatm_vcm.c,v 1.17 2003/11/14 21:02:10 bde Exp $");
 
 #include <sys/param.h>
-#include <sys/types.h>
 #include <sys/systm.h>
-#include <sys/errno.h>
-#include <sys/time.h>
+#include <sys/malloc.h>
 #include <sys/socket.h>
 #include <sys/socketvar.h>
 #include <sys/syslog.h>
+
 #include <net/if.h>
+
 #include <netinet/in.h>
 #include <netinet/in_var.h>
+
 #include <netatm/port.h>
 #include <netatm/queue.h>
 #include <netatm/atm.h>
@@ -59,6 +60,7 @@
 #include <netatm/ipatm/ipatm_var.h>
 #include <netatm/ipatm/ipatm_serv.h>
 
+#include <vm/uma.h>
 
 Atm_attributes	ipatm_aal5llc = {
 	NULL,			/* nif */

==== //depot/projects/hammer/sys/netinet/in_rmx.c#7 (text+ko) ====

@@ -26,7 +26,7 @@
  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/netinet/in_rmx.c,v 1.48 2003/11/03 06:11:44 sam Exp $
+ * $FreeBSD: src/sys/netinet/in_rmx.c,v 1.49 2003/11/14 21:48:56 andre Exp $
  */
 
 /*
@@ -134,13 +134,6 @@
 		}
 	}
 
-	/*
-	 * If the new route created successfully, and we are forwarding,
-	 * flush any cached routes to avoid using a stale value.
-	 */
-	if (ret != NULL && ipforwarding)
-		ip_forward_cacheinval();
-
 	return ret;
 }
 

==== //depot/projects/hammer/sys/netinet/in_var.h#4 (text+ko) ====

@@ -31,7 +31,7 @@
  * SUCH DAMAGE.
  *
  *	@(#)in_var.h	8.2 (Berkeley) 1/9/95
- * $FreeBSD: src/sys/netinet/in_var.h,v 1.47 2003/08/20 17:09:01 rwatson Exp $
+ * $FreeBSD: src/sys/netinet/in_var.h,v 1.48 2003/11/14 21:02:21 andre Exp $
  */
 
 #ifndef _NETINET_IN_VAR_H_
@@ -230,9 +230,7 @@
 void	ip_input(struct mbuf *);
 int	in_ifadown(struct ifaddr *ifa, int);
 void	in_ifscrub(struct ifnet *, struct in_ifaddr *);
-int	ipflow_fastforward(struct mbuf *);
-void	ipflow_create(const struct route *, struct mbuf *);
-void	ipflow_slowtimo(void);
+int	ip_fastforward(struct mbuf *);
 
 #endif /* _KERNEL */
 

==== //depot/projects/hammer/sys/netinet/ip_fw2.c#18 (text+ko) ====

@@ -22,7 +22,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/netinet/ip_fw2.c,v 1.43 2003/11/07 23:26:57 sam Exp $
+ * $FreeBSD: src/sys/netinet/ip_fw2.c,v 1.44 2003/11/14 21:48:56 andre Exp $
  */
 
 #define        DEB(x)
@@ -1160,7 +1160,6 @@
 	struct mbuf *m;
 	struct ip *ip;
 	struct tcphdr *tcp;
-	struct route sro;	/* fake route */
 
 	MGETHDR(m, M_DONTWAIT, MT_HEADER);
 	if (m == 0)
@@ -1226,12 +1225,8 @@
 	 */
 	ip->ip_ttl = ip_defttl;
 	ip->ip_len = m->m_pkthdr.len;
-	bzero (&sro, sizeof (sro));
-	ip_rtaddr(ip->ip_dst, &sro);
 	m->m_flags |= M_SKIP_FIREWALL;
-	ip_output(m, NULL, &sro, 0, NULL, NULL);
-	if (sro.ro_rt)
-		RTFREE(sro.ro_rt);
+	ip_output(m, NULL, NULL, 0, NULL, NULL);
 }
 
 /*

==== //depot/projects/hammer/sys/netinet/ip_icmp.c#10 (text+ko) ====

@@ -31,7 +31,7 @@
  * SUCH DAMAGE.
  *
  *	@(#)ip_icmp.c	8.2 (Berkeley) 1/4/94
- * $FreeBSD: src/sys/netinet/ip_icmp.c,v 1.82 2003/11/13 00:32:13 andre Exp $
+ * $FreeBSD: src/sys/netinet/ip_icmp.c,v 1.83 2003/11/14 21:48:57 andre Exp $
  */
 
 #include "opt_ipsec.h"
@@ -120,7 +120,7 @@
 #endif
 
 static void	icmp_reflect(struct mbuf *);
-static void	icmp_send(struct mbuf *, struct mbuf *, struct route *);
+static void	icmp_send(struct mbuf *, struct mbuf *);
 static int	ip_next_mtu(int, int);
 
 extern	struct protosw inetsw[];
@@ -615,7 +615,6 @@
 	struct in_addr t;
 	struct mbuf *opts = 0;
 	int optlen = (ip->ip_hl << 2) - sizeof(struct ip);
-	struct route *ro = NULL, rt;
 
 	if (!in_canforward(ip->ip_src) &&
 	    ((ntohl(ip->ip_src.s_addr) & IN_CLASSA_NET) !=
@@ -626,8 +625,6 @@
 	}
 	t = ip->ip_dst;
 	ip->ip_dst = ip->ip_src;
-	ro = &rt;
-	bzero(ro, sizeof(*ro));
 	/*
 	 * If the incoming packet was addressed directly to us,
 	 * use dst as the src for the reply.  Otherwise (broadcast
@@ -648,7 +645,7 @@
 				goto match;
 		}
 	}
-	ia = ip_rtaddr(ip->ip_dst, ro);
+	ia = ip_rtaddr(ip->ip_dst);
 	/* We need a route to do anything useful. */
 	if (ia == NULL) {
 		m_freem(m);
@@ -738,12 +735,10 @@
 	}
 	m_tag_delete_nonpersistent(m);
 	m->m_flags &= ~(M_BCAST|M_MCAST);
-	icmp_send(m, opts, ro);
+	icmp_send(m, opts);
 done:
 	if (opts)
 		(void)m_free(opts);
-	if (ro && ro->ro_rt)
-		RTFREE(ro->ro_rt);
 }
 
 /*
@@ -751,10 +746,9 @@
  * after supplying a checksum.
  */
 static void
-icmp_send(m, opts, rt)
+icmp_send(m, opts)
 	register struct mbuf *m;
 	struct mbuf *opts;
-	struct route *rt;
 {
 	register struct ip *ip = mtod(m, struct ip *);
 	register int hlen;
@@ -777,7 +771,7 @@
 		       buf, inet_ntoa(ip->ip_src));
 	}
 #endif
-	(void) ip_output(m, opts, rt, 0, NULL, NULL);
+	(void) ip_output(m, opts, NULL, 0, NULL, NULL);
 }
 
 n_time

==== //depot/projects/hammer/sys/netinet/ip_input.c#21 (text+ko) ====

@@ -31,7 +31,7 @@
  * SUCH DAMAGE.
  *
  *	@(#)ip_input.c	8.2 (Berkeley) 1/4/94
- * $FreeBSD: src/sys/netinet/ip_input.c,v 1.252 2003/11/08 23:36:31 sam Exp $
+ * $FreeBSD: src/sys/netinet/ip_input.c,v 1.254 2003/11/14 21:48:57 andre Exp $
  */
 
 #include "opt_bootp.h"
@@ -213,52 +213,6 @@
 ip_dn_io_t *ip_dn_io_ptr;
 
 /*
- * One deep route cache for ip forwarding.  This is done
- * very inefficiently.  We don't care as it's about to be
- * replaced by something better.
- */
-static struct rtcache {
-	struct route	rc_ro;		/* most recently used route */
-	struct mtx	rc_mtx;		/* update lock for cache */
-} ip_fwdcache;
-
-#define	RTCACHE_LOCK()		mtx_lock(&ip_fwdcache.rc_mtx)
-#define	RTCACHE_UNLOCK()	mtx_unlock(&ip_fwdcache.rc_mtx)
-#define	RTCACHE_LOCK_INIT() \
-	mtx_init(&ip_fwdcache.rc_mtx, "route cache", NULL, MTX_DEF)
-#define	RTCACHE_LOCK_ASSERT()	mtx_assert(&ip_fwdcache.rc_mtx, MA_OWNED)
-
-/*
- * Get a copy of the current route cache contents.
- */
-#define	RTCACHE_GET(_ro) do {					\
-	struct rtentry *rt;					\
-	RTCACHE_LOCK();						\
-	*(_ro) = ip_fwdcache.rc_ro;				\
-	if ((rt = (_ro)->ro_rt) != NULL) {			\
-		RT_LOCK(rt);					\
-		RT_ADDREF(rt);					\
-		RT_UNLOCK(rt);					\
-	}							\
-	RTCACHE_UNLOCK();					\
-} while (0)
-
-/*
- * Update the cache contents.
- */
-#define	RTCACHE_UPDATE(_ro) do {				\
-	struct rtentry *rt;					\
-	RTCACHE_LOCK();						\
-	rt = ip_fwdcache.rc_ro.ro_rt;				\
-	if ((_ro)->ro_rt != rt) {				\
-		ip_fwdcache.rc_ro = *(_ro);			\
-		if (rt)						\
-			RTFREE(rt);				\
-	}							\
-	RTCACHE_UNLOCK();					\
-} while (0)
-
-/*
  * XXX this is ugly -- the following two global variables are
  * used to store packet state while it travels through the stack.
  * Note that the code even makes assumptions on the size and
@@ -282,7 +236,7 @@
 static void	save_rte(u_char *, struct in_addr);
 static int	ip_dooptions(struct mbuf *m, int,
 			struct sockaddr_in *next_hop);
-static void	ip_forward(struct mbuf *m, struct route *, int srcrt,
+static void	ip_forward(struct mbuf *m, int srcrt,
 			struct sockaddr_in *next_hop);
 static void	ip_freef(struct ipqhead *, struct ipq *);
 static struct	mbuf *ip_reass(struct mbuf *, struct ipqhead *,
@@ -323,9 +277,6 @@
 	for (i = 0; i < IPREASS_NHASH; i++)
 	    TAILQ_INIT(&ipq[i]);
 
-	bzero(&ip_fwdcache, sizeof(ip_fwdcache));
-	RTCACHE_LOCK_INIT();
-
 	maxnipq = nmbclusters / 32;
 	maxfragsperpacket = 16;
 
@@ -338,39 +289,23 @@
 }
 
 /*
- * Invalidate any cached route used for forwarding.
- */
-void
-ip_forward_cacheinval(void)
-{
-	struct rtentry *rt;
-
-	RTCACHE_LOCK();
-	rt = ip_fwdcache.rc_ro.ro_rt;
-	ip_fwdcache.rc_ro.ro_rt = 0;
-	if (rt != NULL)
-		RTFREE(rt);
-	RTCACHE_UNLOCK();
-}
-
-/*
  * Ip input routine.  Checksum and byte swap header.  If fragmented
  * try to reassemble.  Process options.  Pass to next level.
  */
 void
 ip_input(struct mbuf *m)
 {
-	struct ip *ip;
+	struct ip *ip = NULL;
 	struct ipq *fp;
 	struct in_ifaddr *ia = NULL;
 	struct ifaddr *ifa;
-	int    i, hlen, checkif;
+	int    i, checkif, hlen = 0;
+	int    ours = 0;
 	u_short sum;
 	struct in_addr pkt_dst;
 	u_int32_t divert_info = 0;		/* packet divert/tee info */
 	struct ip_fw_args args;
-	struct route cro;			/* copy of cached route */
-	int srcrt = 0;				/* forward by ``src routing'' */
+	int dchg = 0;				/* dest changed after fw */
 #ifdef PFIL_HOOKS
 	struct in_addr odst;			/* original dst address */
 #endif
@@ -387,8 +322,18 @@
 	args.divert_rule = 0;			/* divert cookie */
 	args.next_hop = NULL;
 
-	/* Grab info from MT_TAG mbufs prepended to the chain.	*/
-	for (; m && m->m_type == MT_TAG; m = m->m_next) {
+	/*
+	 * Grab info from MT_TAG mbufs prepended to the chain.
+	 *
+	 * XXX: This is ugly. These pseudo mbuf prepend tags should really
+	 * be real m_tags.  Before these have always been allocated on the
+	 * callers stack, so we didn't have to free them.  Now with
+	 * ip_fastforward they are true mbufs and we have to free them
+	 * otherwise we have a leak.  Must rewrite ipfw to use m_tags.
+	 */
+	for (; m && m->m_type == MT_TAG;) {
+		struct mbuf *m0;
+
 		switch(m->_m_tag_id) {
 		default:
 			printf("ip_input: unrecognised MT_TAG tag %d\n",
@@ -406,11 +351,24 @@
 		case PACKET_TAG_IPFORWARD:
 			args.next_hop = (struct sockaddr_in *)m->m_hdr.mh_data;
 			break;
+
+		case PACKET_TAG_IPFASTFWD_OURS:
+			ours = 1;
+			break;
 		}
+
+		m0 = m;
+		m = m->m_next;
+		/* XXX: This is set by ip_fastforward */
+		if (m0->m_nextpkt == (struct mbuf *)1)
+			m_free(m0);
 	}
 
 	M_ASSERTPKTHDR(m);
 
+	if (ours)		/* ip_fastforward firewall changed dest to local */
+		goto ours;
+
 	if (args.rule) {	/* dummynet already filtered us */
 		ip = mtod(m, struct ip *);
 		hlen = ip->ip_hl << 2;
@@ -542,7 +500,7 @@
 	if (m == NULL)			/* consumed by filter */
 		return;
 	ip = mtod(m, struct ip *);
-	srcrt = (odst.s_addr != ip->ip_dst.s_addr);
+	dchg = (odst.s_addr != ip->ip_dst.s_addr);
 #endif /* PFIL_HOOKS */
 
 	if (fw_enable && IPFW_LOADED) {
@@ -778,8 +736,7 @@
 			goto bad;
 		}
 #endif /* FAST_IPSEC */
-		RTCACHE_GET(&cro);
-		ip_forward(m, &cro, srcrt, args.next_hop);
+		ip_forward(m, dchg, args.next_hop);
 	}
 	return;
 
@@ -1350,7 +1307,6 @@
 		}
 	}
 	IPQ_UNLOCK();
-	ipflow_slowtimo();
 	splx(s);
 }
 
@@ -1396,14 +1352,6 @@
 	struct in_addr *sin, dst;
 	n_time ntime;
 	struct	sockaddr_in ipaddr = { sizeof(ipaddr), AF_INET };
-	struct route cro;			/* copy of cached route */
-
-	/*
-	 * Grab a copy of the route cache in case we need
-	 * to update to reflect source routing or the like.
-	 * Could optimize this to do it later...
-	 */
-	RTCACHE_GET(&cro);
 
 	dst = ip->ip_dst;
 	cp = (u_char *)(ip + 1);
@@ -1523,7 +1471,7 @@
 			    if ((ia = (INA)ifa_ifwithdstaddr((SA)&ipaddr)) == 0)
 				ia = (INA)ifa_ifwithnet((SA)&ipaddr);
 			} else
-				ia = ip_rtaddr(ipaddr.sin_addr, &cro);
+				ia = ip_rtaddr(ipaddr.sin_addr);
 			if (ia == 0) {
 				type = ICMP_UNREACH;
 				code = ICMP_UNREACH_SRCFAIL;
@@ -1565,7 +1513,7 @@
 			 * use the incoming interface (should be same).
 			 */
 			if ((ia = (INA)ifa_ifwithaddr((SA)&ipaddr)) == 0 &&
-			    (ia = ip_rtaddr(ipaddr.sin_addr, &cro)) == 0) {
+			    (ia = ip_rtaddr(ipaddr.sin_addr)) == 0) {
 				type = ICMP_UNREACH;
 				code = ICMP_UNREACH_HOST;
 				goto bad;
@@ -1645,7 +1593,7 @@
 		}
 	}
 	if (forward && ipforwarding) {
-		ip_forward(m, &cro, 1, next_hop);
+		ip_forward(m, 1, next_hop);
 		return (1);
 	}
 	return (0);
@@ -1660,30 +1608,26 @@
  * return internet address info of interface to be used to get there.
  */
 struct in_ifaddr *
-ip_rtaddr(dst, rt)
+ip_rtaddr(dst)
 	struct in_addr dst;
-	struct route *rt;
 {
-	register struct sockaddr_in *sin;
+	struct sockaddr_in *sin;
+	struct in_ifaddr *ifa;
+	struct route ro;
 
-	sin = (struct sockaddr_in *)&rt->ro_dst;
+	bzero(&ro, sizeof(ro));
+	sin = (struct sockaddr_in *)&ro.ro_dst;
+	sin->sin_family = AF_INET;
+	sin->sin_len = sizeof(*sin);
+	sin->sin_addr = dst;
+	rtalloc_ign(&ro, (RTF_PRCLONING | RTF_CLONING));
 
-	if (rt->ro_rt == 0 ||
-	    !(rt->ro_rt->rt_flags & RTF_UP) ||
-	    dst.s_addr != sin->sin_addr.s_addr) {
-		if (rt->ro_rt) {
-			RTFREE(rt->ro_rt);
-			rt->ro_rt = 0;
-		}
-		sin->sin_family = AF_INET;
-		sin->sin_len = sizeof(*sin);
-		sin->sin_addr = dst;
+	if (ro.ro_rt == 0)
+		return ((struct in_ifaddr *)0);
 
-		rtalloc_ign(rt, RTF_PRCLONING);
-	}
-	if (rt->ro_rt == 0)
-		return ((struct in_ifaddr *)0);
-	return (ifatoia(rt->ro_rt->rt_ifa));
+	ifa = ifatoia(ro.ro_rt->rt_ifa);
+	RTFREE(ro.ro_rt);
+	return ifa;
 }
 
 /*
@@ -1830,11 +1774,10 @@
  * via a source route.
  */
 static void
-ip_forward(struct mbuf *m, struct route *ro,
-	int srcrt, struct sockaddr_in *next_hop)
+ip_forward(struct mbuf *m, int srcrt, struct sockaddr_in *next_hop)
 {
 	struct ip *ip = mtod(m, struct ip *);
-	struct rtentry *rt;
+	struct in_ifaddr *ia;
 	int error, type = 0, code = 0;
 	struct mbuf *mcopy;
 	n_long dest;
@@ -1844,7 +1787,6 @@
 	struct ifnet dummyifp;
 #endif
 
-	dest = 0;
 	/*
 	 * Cache the destination address of the packet; this may be
 	 * changed by use of 'ipfw fwd'.
@@ -1869,18 +1811,17 @@
 #endif
 		if (ip->ip_ttl <= IPTTLDEC) {
 			icmp_error(m, ICMP_TIMXCEED, ICMP_TIMXCEED_INTRANS,
-			    dest, 0);
+			    0, 0);
 			return;
 		}
 #ifdef IPSTEALTH
 	}
 #endif
 
-	if (ip_rtaddr(pkt_dst, ro) == 0) {
-		icmp_error(m, ICMP_UNREACH, ICMP_UNREACH_HOST, dest, 0);
+	if ((ia = ip_rtaddr(pkt_dst)) == 0) {
+		icmp_error(m, ICMP_UNREACH, ICMP_UNREACH_HOST, 0, 0);
 		return;
-	} else
-		rt = ro->ro_rt;
+	}
 
 	/*
 	 * Save the IP header and at most 8 bytes of the payload,
@@ -1931,27 +1872,44 @@
 	 * Also, don't send redirect if forwarding using a default route
 	 * or a route modified by a redirect.
 	 */
-	if (rt->rt_ifp == m->m_pkthdr.rcvif &&
-	    (rt->rt_flags & (RTF_DYNAMIC|RTF_MODIFIED)) == 0 &&
-	    satosin(rt_key(rt))->sin_addr.s_addr != 0 &&
-	    ipsendredirects && !srcrt && !next_hop) {

>>> TRUNCATED FOR MAIL (1000 lines) <<<



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200311142203.hAEM3JTJ077888>