Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 24 Oct 2004 06:38:59 GMT
From:      Peter Wemm <peter@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 63627 for review
Message-ID:  <200410240638.i9O6cxjY070010@repoman.freebsd.org>

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

Change 63627 by peter@peter_overcee on 2004/10/24 06:38:27

	IFC @63625

Affected files ...

.. //depot/projects/hammer/UPDATING#64 integrate
.. //depot/projects/hammer/etc/rc.d/devfs#10 integrate
.. //depot/projects/hammer/etc/rc.d/natd#3 integrate
.. //depot/projects/hammer/games/fortune/datfiles/fortunes#29 integrate
.. //depot/projects/hammer/lib/libpthread/thread/thr_create.c#17 integrate
.. //depot/projects/hammer/lib/libpthread/thread/thr_exit.c#10 integrate
.. //depot/projects/hammer/lib/libpthread/thread/thr_find_thread.c#6 integrate
.. //depot/projects/hammer/lib/libpthread/thread/thr_kern.c#34 integrate
.. //depot/projects/hammer/lib/libpthread/thread/thr_private.h#29 integrate
.. //depot/projects/hammer/lib/libpthread/thread/thr_sig.c#23 integrate
.. //depot/projects/hammer/release/scripts/print-cdrom-packages.sh#25 integrate
.. //depot/projects/hammer/sbin/ipfw/ipfw.8#31 integrate
.. //depot/projects/hammer/share/man/man4/aac.4#8 integrate
.. //depot/projects/hammer/share/man/man4/divert.4#6 integrate
.. //depot/projects/hammer/share/man/man4/inet.4#12 integrate
.. //depot/projects/hammer/share/man/man4/ng_device.4#3 integrate
.. //depot/projects/hammer/share/man/man4/tcp.4#13 integrate
.. //depot/projects/hammer/share/man/man5/rc.conf.5#39 integrate
.. //depot/projects/hammer/share/man/man7/firewall.7#8 integrate
.. //depot/projects/hammer/share/man/man9/bus_dma.9#12 integrate
.. //depot/projects/hammer/sys/boot/i386/libi386/biospci.c#3 integrate
.. //depot/projects/hammer/sys/boot/i386/libi386/libi386.h#7 integrate
.. //depot/projects/hammer/sys/boot/i386/loader/main.c#7 integrate
.. //depot/projects/hammer/sys/compat/freebsd32/freebsd32_proto.h#22 integrate
.. //depot/projects/hammer/sys/compat/freebsd32/freebsd32_syscall.h#20 integrate
.. //depot/projects/hammer/sys/compat/freebsd32/freebsd32_syscalls.c#20 integrate
.. //depot/projects/hammer/sys/compat/freebsd32/freebsd32_sysent.c#20 integrate
.. //depot/projects/hammer/sys/compat/freebsd32/syscalls.master#24 integrate
.. //depot/projects/hammer/sys/conf/files#88 integrate
.. //depot/projects/hammer/sys/contrib/dev/hptmv/access601.h#1 branch
.. //depot/projects/hammer/sys/contrib/dev/hptmv/array.h#1 branch
.. //depot/projects/hammer/sys/contrib/dev/hptmv/atapi.h#1 branch
.. //depot/projects/hammer/sys/contrib/dev/hptmv/command.h#1 branch
.. //depot/projects/hammer/sys/contrib/dev/hptmv/gui_lib.c#1 branch
.. //depot/projects/hammer/sys/contrib/dev/hptmv/hptproc.c#1 branch
.. //depot/projects/hammer/sys/contrib/dev/hptmv/i386-elf.raid.o.uu#1 branch
.. //depot/projects/hammer/sys/contrib/dev/hptmv/ioctl.c#1 branch
.. //depot/projects/hammer/sys/contrib/dev/hptmv/mvSata.h#1 branch
.. //depot/projects/hammer/sys/contrib/dev/hptmv/mvStorageDev.h#1 branch
.. //depot/projects/hammer/sys/contrib/dev/hptmv/raid5n.h#1 branch
.. //depot/projects/hammer/sys/contrib/dev/hptmv/readme.txt#1 branch
.. //depot/projects/hammer/sys/contrib/dev/hptmv/vdevice.h#1 branch
.. //depot/projects/hammer/sys/dev/bfe/if_bfe.c#12 integrate
.. //depot/projects/hammer/sys/dev/bfe/if_bfereg.h#5 integrate
.. //depot/projects/hammer/sys/dev/dcons/dcons.h#4 integrate
.. //depot/projects/hammer/sys/dev/fdc/fdc.c#21 integrate
.. //depot/projects/hammer/sys/dev/firewire/fwcrom.c#10 integrate
.. //depot/projects/hammer/sys/dev/firewire/iec13213.h#8 integrate
.. //depot/projects/hammer/sys/dev/hptmv/entry.c#1 branch
.. //depot/projects/hammer/sys/dev/hptmv/global.h#1 branch
.. //depot/projects/hammer/sys/dev/hptmv/hptintf.h#1 branch
.. //depot/projects/hammer/sys/dev/hptmv/mv.c#1 branch
.. //depot/projects/hammer/sys/dev/hptmv/mvOs.h#1 branch
.. //depot/projects/hammer/sys/dev/hptmv/osbsd.h#1 branch
.. //depot/projects/hammer/sys/dev/md/md.c#42 integrate
.. //depot/projects/hammer/sys/fs/devfs/devfs_vnops.c#15 integrate
.. //depot/projects/hammer/sys/fs/specfs/spec_vnops.c#27 delete
.. //depot/projects/hammer/sys/geom/geom.h#29 integrate
.. //depot/projects/hammer/sys/geom/geom_ctl.c#17 integrate
.. //depot/projects/hammer/sys/geom/geom_dev.c#27 integrate
.. //depot/projects/hammer/sys/geom/geom_event.c#20 integrate
.. //depot/projects/hammer/sys/geom/geom_subr.c#31 integrate
.. //depot/projects/hammer/sys/gnu/ext2fs/ext2_bmap.c#5 integrate
.. //depot/projects/hammer/sys/i386/acpica/acpi_machdep.c#21 integrate
.. //depot/projects/hammer/sys/i386/i386/busdma_machdep.c#18 integrate
.. //depot/projects/hammer/sys/ia64/ia64/sscdisk.c#9 integrate
.. //depot/projects/hammer/sys/kern/init_sysent.c#35 integrate
.. //depot/projects/hammer/sys/kern/kern_exit.c#38 integrate
.. //depot/projects/hammer/sys/kern/kern_xxx.c#11 integrate
.. //depot/projects/hammer/sys/kern/subr_trap.c#28 integrate
.. //depot/projects/hammer/sys/kern/syscalls.c#34 integrate
.. //depot/projects/hammer/sys/kern/syscalls.master#34 integrate
.. //depot/projects/hammer/sys/kern/sysv_ipc.c#5 integrate
.. //depot/projects/hammer/sys/kern/uipc_domain.c#8 integrate
.. //depot/projects/hammer/sys/kern/uipc_socket.c#41 integrate
.. //depot/projects/hammer/sys/kern/vfs_bio.c#42 integrate
.. //depot/projects/hammer/sys/kern/vfs_cluster.c#19 integrate
.. //depot/projects/hammer/sys/kern/vfs_mount.c#37 integrate
.. //depot/projects/hammer/sys/kern/vfs_subr.c#58 integrate
.. //depot/projects/hammer/sys/modules/hptmv/Makefile#1 branch
.. //depot/projects/hammer/sys/modules/netgraph/Makefile#12 integrate
.. //depot/projects/hammer/sys/netinet/ip_divert.c#24 integrate
.. //depot/projects/hammer/sys/netinet/ip_fw2.c#44 integrate
.. //depot/projects/hammer/sys/netinet/tcp_var.h#18 integrate
.. //depot/projects/hammer/sys/nfs4client/nfs4_vnops.c#10 integrate
.. //depot/projects/hammer/sys/nfsclient/nfs_bio.c#22 integrate
.. //depot/projects/hammer/sys/nfsclient/nfs_subs.c#18 integrate
.. //depot/projects/hammer/sys/nfsclient/nfs_vfsops.c#28 integrate
.. //depot/projects/hammer/sys/nfsclient/nfs_vnops.c#25 integrate
.. //depot/projects/hammer/sys/nfsserver/nfs_serv.c#17 integrate
.. //depot/projects/hammer/sys/pc98/pc98/fd.c#24 integrate
.. //depot/projects/hammer/sys/pc98/pc98/wd.c#14 integrate
.. //depot/projects/hammer/sys/security/mac/mac_internal.h#9 integrate
.. //depot/projects/hammer/sys/security/mac/mac_label.c#3 integrate
.. //depot/projects/hammer/sys/security/mac_biba/mac_biba.c#28 integrate
.. //depot/projects/hammer/sys/security/mac_bsdextended/mac_bsdextended.c#14 integrate
.. //depot/projects/hammer/sys/security/mac_test/mac_test.c#26 integrate
.. //depot/projects/hammer/sys/sys/buf.h#16 integrate
.. //depot/projects/hammer/sys/sys/ktr.h#7 integrate
.. //depot/projects/hammer/sys/sys/mac_policy.h#21 integrate
.. //depot/projects/hammer/sys/sys/proc.h#70 integrate
.. //depot/projects/hammer/sys/sys/syscall.h#34 integrate
.. //depot/projects/hammer/sys/sys/syscall.mk#34 integrate
.. //depot/projects/hammer/sys/sys/sysproto.h#34 integrate
.. //depot/projects/hammer/sys/sys/systm.h#25 integrate
.. //depot/projects/hammer/sys/sys/vnode.h#32 integrate
.. //depot/projects/hammer/sys/ufs/ffs/ffs_softdep.c#17 integrate
.. //depot/projects/hammer/sys/ufs/ufs/ufs_bmap.c#6 integrate
.. //depot/projects/hammer/sys/vm/swap_pager.c#31 integrate
.. //depot/projects/hammer/sys/vm/vm_page.c#36 integrate
.. //depot/projects/hammer/sys/vm/vm_page.h#19 integrate
.. //depot/projects/hammer/tools/regression/netinet/tcpconnect/tcpconnect.c#3 integrate
.. //depot/projects/hammer/tools/regression/netinet/tcpstream/tcpstream.c#2 integrate
.. //depot/projects/hammer/tools/regression/sockets/accept_fd_leak/accept_fd_leak.c#4 integrate
.. //depot/projects/hammer/tools/regression/sockets/accf_data_attach/accf_data_attach.c#2 integrate
.. //depot/projects/hammer/tools/regression/usr.bin/make/Makefile#9 integrate
.. //depot/projects/hammer/tools/tools/nanobsd/make.conf#5 integrate
.. //depot/projects/hammer/tools/tools/recoverdisk/recoverdisk.c#3 integrate
.. //depot/projects/hammer/usr.bin/du/du.1#5 integrate
.. //depot/projects/hammer/usr.bin/make/compat.c#8 integrate
.. //depot/projects/hammer/usr.bin/make/job.c#10 integrate
.. //depot/projects/hammer/usr.bin/make/job.h#7 integrate
.. //depot/projects/hammer/usr.bin/make/main.c#15 integrate
.. //depot/projects/hammer/usr.bin/mktemp/mktemp.1#3 integrate
.. //depot/projects/hammer/usr.sbin/fwcontrol/fwcontrol.8#9 integrate
.. //depot/projects/hammer/usr.sbin/fwcontrol/fwcontrol.c#10 integrate
.. //depot/projects/hammer/usr.sbin/rtadvd/config.c#7 integrate
.. //depot/projects/hammer/usr.sbin/rtadvd/timer.c#3 integrate

Differences ...

==== //depot/projects/hammer/UPDATING#64 (text+ko) ====

@@ -23,6 +23,11 @@
 	developers choose to disable these features on build machines
 	to maximize performance.
 
+20041022:
+	The size of struct tcpcb has changed.  You have to recompile
+	userland programs that read kmem for tcp sockets directly
+	(netstat, sockstat, etc.)
+
 20041018:
 	A major sweep over the tty drivers to elimnate approx 3100
 	lines of copy&pasted code have been performed.  As a part of
@@ -1951,4 +1956,4 @@
 Contact Warner Losh if you have any questions about your use of
 this document.
 
-$FreeBSD: src/UPDATING,v 1.375 2004/10/18 21:24:21 phk Exp $
+$FreeBSD: src/UPDATING,v 1.376 2004/10/22 19:55:04 andre Exp $

==== //depot/projects/hammer/etc/rc.d/devfs#10 (text+ko) ====

@@ -1,11 +1,11 @@
 #!/bin/sh
 #
-# $FreeBSD: src/etc/rc.d/devfs,v 1.9 2004/10/07 13:55:25 mtm Exp $
+# $FreeBSD: src/etc/rc.d/devfs,v 1.10 2004/10/23 06:50:50 mtm Exp $
 #
 
 # PROVIDE: devfs
-# REQUIRE: LOGIN
-# BEFORE:  securelevel
+# REQUIRE: rcconf mountcritremote
+# BEFORE:  SERVERS securelevel
 # KEYWORD: nojail
 
 . /etc/rc.subr

==== //depot/projects/hammer/etc/rc.d/natd#3 (text+ko) ====

@@ -1,6 +1,6 @@
 #!/bin/sh
 #
-# $FreeBSD: src/etc/rc.d/natd,v 1.2 2004/10/07 13:55:26 mtm Exp $
+# $FreeBSD: src/etc/rc.d/natd,v 1.3 2004/10/22 19:36:03 andre Exp $
 #
 
 # PROVIDE: natd
@@ -12,8 +12,21 @@
 name="natd"
 rcvar=`set_rcvar`
 command="/sbin/${name}"
+start_precmd="natd_precmd"
 start_cmd="natd_start"
 
+natd_precmd()
+{
+	if ! ${SYSCTL} net.inet.divert > /dev/null 2>&1; then
+		if ! kldload ipdivert; then
+			warn unable to load IPDIVERT module.
+			return 1
+		fi
+	fi
+
+	return 0
+}
+
 natd_start()
 {
 	dhcp_list="`list_net_interfaces dhcp`"

==== //depot/projects/hammer/games/fortune/datfiles/fortunes#29 (text+ko) ====

@@ -1,5 +1,5 @@
 This fortune brought to you by:
-$FreeBSD: src/games/fortune/datfiles/fortunes,v 1.143 2004/08/23 11:00:20 blackend Exp $
+$FreeBSD: src/games/fortune/datfiles/fortunes,v 1.145 2004/10/22 19:59:37 phk Exp $
 
 %
 			-- Gifts for Children --
@@ -629,6 +629,10 @@
 So the Cleaning Personnel Don't Steal It", etc.
 		-- Dave Barry, "In Search of Excellence"
 %
+Wall Street indices predicted nine out of the last five recessions 
+		-- Paul A. Samuelson, Nobel laureate in economics.
+		   (Newsweek, Science and Stocks, 19 Sep. 1966.)
+%
 	Festivity Level 1: Your guests are chatting amiably with each
 other, admiring your Christmas-tree ornaments, singing carols around
 the upright piano, sipping at their drinks and nibbling hors

==== //depot/projects/hammer/lib/libpthread/thread/thr_create.c#17 (text+ko) ====

@@ -30,7 +30,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/lib/libpthread/thread/thr_create.c,v 1.57 2004/08/12 12:12:12 deischen Exp $
+ * $FreeBSD: src/lib/libpthread/thread/thr_create.c,v 1.58 2004/10/23 23:28:36 davidxu Exp $
  */
 #include <errno.h>
 #include <stdlib.h>
@@ -234,6 +234,7 @@
 			new_thread->specific_data_count = 0;
 			new_thread->cleanup = NULL;
 			new_thread->flags = 0;
+			new_thread->tlflags = 0;
 			new_thread->continuation = NULL;
 			new_thread->wakeup_time.tv_sec = -1;
 			new_thread->lock_switch = 0;

==== //depot/projects/hammer/lib/libpthread/thread/thr_exit.c#10 (text+ko) ====

@@ -29,7 +29,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/lib/libpthread/thread/thr_exit.c,v 1.38 2004/08/12 12:12:12 deischen Exp $
+ * $FreeBSD: src/lib/libpthread/thread/thr_exit.c,v 1.39 2004/10/23 23:37:54 davidxu Exp $
  */
 #include <errno.h>
 #include <unistd.h>
@@ -105,7 +105,20 @@
 	THR_SCHED_LOCK(curthread, curthread);
 	curthread->flags |= THR_FLAGS_EXITING;
 	THR_SCHED_UNLOCK(curthread, curthread);
-
+	
+	/*
+	 * To avoid signal-lost problem, if signals had already been
+	 * delivered to us, handle it. we have already set EXITING flag
+	 * so no new signals should be delivered to us.
+	 * XXX this is not enough if signal was delivered just before
+	 * thread called sigprocmask and masked it! in this case, we
+	 * might have to re-post the signal by kill() if the signal
+	 * is targeting process (not for a specified thread).
+	 * Kernel has same signal-lost problem, a signal may be delivered
+	 * to a thread which is on the way to call sigprocmask or thr_exit()!
+	 */
+	if (curthread->check_pending)
+		_thr_sig_check_pending(curthread);
 	/* Save the return value: */
 	curthread->ret = status;
 	while (curthread->cleanup != NULL) {

==== //depot/projects/hammer/lib/libpthread/thread/thr_find_thread.c#6 (text+ko) ====

@@ -30,7 +30,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/lib/libpthread/thread/thr_find_thread.c,v 1.13 2003/07/17 23:02:30 davidxu Exp $
+ * $FreeBSD: src/lib/libpthread/thread/thr_find_thread.c,v 1.14 2004/10/23 23:28:36 davidxu Exp $
  */
 #include <errno.h>
 #include <pthread.h>
@@ -90,7 +90,7 @@
 		if (curthread != NULL)
 			curthread->critical_count--;
 		if ((thread->refcount == 0) &&
-		    (thread->flags & THR_FLAGS_GC_SAFE) != 0)
+		    (thread->tlflags & TLFLAGS_GC_SAFE) != 0)
 			THR_GCLIST_ADD(thread);
 		KSE_LOCK_RELEASE(curkse, &_thread_list_lock);
 		_kse_critical_leave(crit);

==== //depot/projects/hammer/lib/libpthread/thread/thr_kern.c#34 (text+ko) ====

@@ -33,7 +33,7 @@
  *
  */
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/lib/libpthread/thread/thr_kern.c,v 1.114 2004/10/08 22:57:30 davidxu Exp $");
+__FBSDID("$FreeBSD: src/lib/libpthread/thread/thr_kern.c,v 1.115 2004/10/23 23:28:36 davidxu Exp $");
 
 #include <sys/types.h>
 #include <sys/kse.h>
@@ -139,6 +139,9 @@
 static struct thread_hash_head	thr_hashtable[THREAD_HASH_QUEUES];
 #define	THREAD_HASH(thrd)	((unsigned long)thrd % THREAD_HASH_QUEUES)
 
+/* Lock for thread tcb constructor/destructor */
+static pthread_mutex_t		_tcb_mutex;
+
 #ifdef DEBUG_THREAD_KERN
 static void	dump_queues(struct kse *curkse);
 #endif
@@ -166,7 +169,7 @@
 		    struct pthread_sigframe *psf);
 static int	thr_timedout(struct pthread *thread, struct timespec *curtime);
 static void	thr_unlink(struct pthread *thread);
-static void	thr_destroy(struct pthread *thread);
+static void	thr_destroy(struct pthread *curthread, struct pthread *thread);
 static void	thread_gc(struct pthread *thread);
 static void	kse_gc(struct pthread *thread);
 static void	kseg_gc(struct pthread *thread);
@@ -240,7 +243,7 @@
 			_thr_stack_free(&thread->attr);
 			if (thread->specific != NULL)
 				free(thread->specific);
-			thr_destroy(thread);
+			thr_destroy(curthread, thread);
 		}
 	}
 
@@ -285,14 +288,14 @@
 	/* Free the free threads. */
 	while ((thread = TAILQ_FIRST(&free_threadq)) != NULL) {
 		TAILQ_REMOVE(&free_threadq, thread, tle);
-		thr_destroy(thread);
+		thr_destroy(curthread, thread);
 	}
 	free_thread_count = 0;
 
 	/* Free the to-be-gc'd threads. */
 	while ((thread = TAILQ_FIRST(&_thread_gc_list)) != NULL) {
 		TAILQ_REMOVE(&_thread_gc_list, thread, gcle);
-		thr_destroy(thread);
+		thr_destroy(curthread, thread);
 	}
 	TAILQ_INIT(&gc_ksegq);
 	_gc_count = 0;
@@ -381,6 +384,7 @@
 		if (_lock_init(&_thread_list_lock, LCK_ADAPTIVE,
 		    _kse_lock_wait, _kse_lock_wakeup) != 0)
 			PANIC("Unable to initialize thread list lock");
+		_pthread_mutex_init(&_tcb_mutex, NULL);
 		active_kse_count = 0;
 		active_kseg_count = 0;
 		_gc_count = 0;
@@ -1207,7 +1211,6 @@
 		thread->kseg = _kse_initial->k_kseg;
 		thread->kse = _kse_initial;
 	}
-	thread->flags |= THR_FLAGS_GC_SAFE;
 
 	/*
 	 * We can't hold the thread list lock while holding the
@@ -1216,6 +1219,7 @@
 	KSE_SCHED_UNLOCK(curkse, curkse->k_kseg);
 	DBG_MSG("Adding thread %p to GC list\n", thread);
 	KSE_LOCK_ACQUIRE(curkse, &_thread_list_lock);
+	thread->tlflags |= TLFLAGS_GC_SAFE;
 	THR_GCLIST_ADD(thread);
 	KSE_LOCK_RELEASE(curkse, &_thread_list_lock);
 	if (sys_scope) {
@@ -1255,7 +1259,7 @@
 	/* Check the threads waiting for GC. */
 	for (td = TAILQ_FIRST(&_thread_gc_list); td != NULL; td = td_next) {
 		td_next = TAILQ_NEXT(td, gcle);
-		if ((td->flags & THR_FLAGS_GC_SAFE) == 0)
+		if ((td->tlflags & TLFLAGS_GC_SAFE) == 0)
 			continue;
 		else if (((td->attr.flags & PTHREAD_SCOPE_SYSTEM) != 0) &&
 		    ((td->kse->k_kcb->kcb_kmbx.km_flags & KMF_DONE) == 0)) {
@@ -2384,7 +2388,14 @@
 	if ((thread == NULL) &&
 	    ((thread = malloc(sizeof(struct pthread))) != NULL)) {
 		bzero(thread, sizeof(struct pthread));
-		if ((thread->tcb = _tcb_ctor(thread, curthread == NULL)) == NULL) {
+		if (curthread) {
+			_pthread_mutex_lock(&_tcb_mutex);
+			thread->tcb = _tcb_ctor(thread, 0 /* not initial tls */);
+			_pthread_mutex_unlock(&_tcb_mutex);
+		} else {
+			thread->tcb = _tcb_ctor(thread, 1 /* initial tls */);
+		}
+		if (thread->tcb == NULL) {
 			free(thread);
 			thread = NULL;
 		} else {
@@ -2420,7 +2431,7 @@
 		thread->name = NULL;
 	}
 	if ((curthread == NULL) || (free_thread_count >= MAX_CACHED_THREADS)) {
-		thr_destroy(thread);
+		thr_destroy(curthread, thread);
 	} else {
 		/* Add the thread to the free thread list. */
 		crit = _kse_critical_enter();
@@ -2433,14 +2444,20 @@
 }
 
 static void
-thr_destroy(struct pthread *thread)
+thr_destroy(struct pthread *curthread, struct pthread *thread)
 {
 	int i;
 
 	for (i = 0; i < MAX_THR_LOCKLEVEL; i++)
 		_lockuser_destroy(&thread->lockusers[i]);
 	_lock_destroy(&thread->lock);
-	_tcb_dtor(thread->tcb);
+	if (curthread) {
+		_pthread_mutex_lock(&_tcb_mutex);
+		_tcb_dtor(thread->tcb);
+		_pthread_mutex_unlock(&_tcb_mutex);
+	} else {
+		_tcb_dtor(thread->tcb);
+	}
 	free(thread->siginfo);
 	free(thread);
 }

==== //depot/projects/hammer/lib/libpthread/thread/thr_private.h#29 (text+ko) ====

@@ -31,7 +31,7 @@
  *
  * Private thread definitions for the uthread kernel.
  *
- * $FreeBSD: src/lib/libpthread/thread/thr_private.h,v 1.118 2004/08/07 15:15:38 deischen Exp $
+ * $FreeBSD: src/lib/libpthread/thread/thr_private.h,v 1.119 2004/10/23 23:28:36 davidxu Exp $
  */
 
 #ifndef _THR_PRIVATE_H
@@ -753,9 +753,13 @@
 #define THR_FLAGS_IN_RUNQ	0x0004	/* in run queue using pqe link */
 #define	THR_FLAGS_EXITING	0x0008	/* thread is exiting */
 #define	THR_FLAGS_SUSPENDED	0x0010	/* thread is suspended */
-#define	THR_FLAGS_GC_SAFE	0x0020	/* thread safe for cleaning */
-#define	THR_FLAGS_IN_TDLIST	0x0040	/* thread in all thread list */
-#define	THR_FLAGS_IN_GCLIST	0x0080	/* thread in gc list */
+
+	/* Thread list flags; only set with thread list lock held. */
+#define	TLFLAGS_GC_SAFE		0x0001	/* thread safe for cleaning */
+#define	TLFLAGS_IN_TDLIST	0x0002	/* thread in all thread list */
+#define	TLFLAGS_IN_GCLIST	0x0004	/* thread in gc list */
+	int			tlflags;
+
 	/*
 	 * Base priority is the user setable and retrievable priority
 	 * of the thread.  It is only affected by explicit calls to
@@ -897,30 +901,30 @@
  * the gc list.
  */
 #define	THR_LIST_ADD(thrd) do {					\
-	if (((thrd)->flags & THR_FLAGS_IN_TDLIST) == 0) {	\
+	if (((thrd)->tlflags & TLFLAGS_IN_TDLIST) == 0) {	\
 		TAILQ_INSERT_HEAD(&_thread_list, thrd, tle);	\
 		_thr_hash_add(thrd);				\
-		(thrd)->flags |= THR_FLAGS_IN_TDLIST;		\
+		(thrd)->tlflags |= TLFLAGS_IN_TDLIST;		\
 	}							\
 } while (0)
 #define	THR_LIST_REMOVE(thrd) do {				\
-	if (((thrd)->flags & THR_FLAGS_IN_TDLIST) != 0) {	\
+	if (((thrd)->tlflags & TLFLAGS_IN_TDLIST) != 0) {	\
 		TAILQ_REMOVE(&_thread_list, thrd, tle);		\
 		_thr_hash_remove(thrd);				\
-		(thrd)->flags &= ~THR_FLAGS_IN_TDLIST;		\
+		(thrd)->tlflags &= ~TLFLAGS_IN_TDLIST;		\
 	}							\
 } while (0)
 #define	THR_GCLIST_ADD(thrd) do {				\
-	if (((thrd)->flags & THR_FLAGS_IN_GCLIST) == 0) {	\
+	if (((thrd)->tlflags & TLFLAGS_IN_GCLIST) == 0) {	\
 		TAILQ_INSERT_HEAD(&_thread_gc_list, thrd, gcle);\
-		(thrd)->flags |= THR_FLAGS_IN_GCLIST;		\
+		(thrd)->tlflags |= TLFLAGS_IN_GCLIST;		\
 		_gc_count++;					\
 	}							\
 } while (0)
 #define	THR_GCLIST_REMOVE(thrd) do {				\
-	if (((thrd)->flags & THR_FLAGS_IN_GCLIST) != 0) {	\
+	if (((thrd)->tlflags & TLFLAGS_IN_GCLIST) != 0) {	\
 		TAILQ_REMOVE(&_thread_gc_list, thrd, gcle);	\
-		(thrd)->flags &= ~THR_FLAGS_IN_GCLIST;		\
+		(thrd)->tlflags &= ~TLFLAGS_IN_GCLIST;		\
 		_gc_count--;					\
 	}							\
 } while (0)

==== //depot/projects/hammer/lib/libpthread/thread/thr_sig.c#23 (text+ko) ====

@@ -29,7 +29,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/lib/libpthread/thread/thr_sig.c,v 1.80 2004/10/21 03:42:24 davidxu Exp $
+ * $FreeBSD: src/lib/libpthread/thread/thr_sig.c,v 1.81 2004/10/23 23:28:36 davidxu Exp $
  */
 #include <sys/param.h>
 #include <sys/types.h>
@@ -1199,8 +1199,7 @@
 thr_sigframe_save(struct pthread *thread, struct pthread_sigframe *psf)
 {
 	/* This has to initialize all members of the sigframe. */
-	psf->psf_flags =
-	    thread->flags & (THR_FLAGS_PRIVATE | THR_FLAGS_IN_TDLIST);
+	psf->psf_flags = thread->flags & THR_FLAGS_PRIVATE;
 	psf->psf_interrupted = thread->interrupted;
 	psf->psf_timeout = thread->timeout;
 	psf->psf_state = thread->state;

==== //depot/projects/hammer/release/scripts/print-cdrom-packages.sh#25 (text+ko) ====

@@ -2,7 +2,7 @@
 #
 # Author:	Jordan Hubbard
 # Date:		Mon Jul 10 01:18:20 2000
-# Version:	$FreeBSD: src/release/scripts/print-cdrom-packages.sh,v 1.67 2004/10/17 21:05:40 marcel Exp $
+# Version:	$FreeBSD: src/release/scripts/print-cdrom-packages.sh,v 1.69 2004/10/23 19:54:18 scottl Exp $
 #
 # MAINTAINER:	re
 #
@@ -67,93 +67,109 @@
 
 
 ## Start of set for CDROM #1
-# This is the set required by sysinstall.
 CDROM_SET_1=""
-if [ "X${PKG_ARCH}" = "Xalpha" ]; then
-CDROM_SET_1="${CDROM_SET_1} emulators/osf1_base"
-elif [ "X${PKG_ARCH}" = "Xi386" ]; then
-CDROM_SET_1="${CDROM_SET_1} emulators/linux_base"
-fi
-CDROM_SET_1="${CDROM_SET_1} lang/perl5.8"
-CDROM_SET_1="${CDROM_SET_1} mail/exim"
-CDROM_SET_1="${CDROM_SET_1} mail/postfix"
-CDROM_SET_1="${CDROM_SET_1} net/pcnfsd"
-CDROM_SET_1="${CDROM_SET_1} x11-fonts/xorg-fonts-100dpi"
-CDROM_SET_1="${CDROM_SET_1} x11-fonts/xorg-fonts-75dpi"
-CDROM_SET_1="${CDROM_SET_1} x11-fonts/xorg-fonts-cyrillic"
-CDROM_SET_1="${CDROM_SET_1} x11-fonts/xorg-fonts-encodings"
-CDROM_SET_1="${CDROM_SET_1} x11-fonts/xorg-fonts-miscbitmaps"
-CDROM_SET_1="${CDROM_SET_1} x11-fonts/xorg-fonts-truetype"
-CDROM_SET_1="${CDROM_SET_1} x11-fonts/xorg-fonts-type1"
-CDROM_SET_1="${CDROM_SET_1} x11-servers/xorg-fontserver"
-CDROM_SET_1="${CDROM_SET_1} x11-servers/xorg-nestserver"
-CDROM_SET_1="${CDROM_SET_1} x11-servers/xorg-printserver"
-CDROM_SET_1="${CDROM_SET_1} x11-servers/xorg-server"
-CDROM_SET_1="${CDROM_SET_1} x11-servers/xorg-vfbserver"
-CDROM_SET_1="${CDROM_SET_1} x11-wm/afterstep"
-CDROM_SET_1="${CDROM_SET_1} x11-wm/enlightenment"
-CDROM_SET_1="${CDROM_SET_1} x11-wm/fvwm2"
-CDROM_SET_1="${CDROM_SET_1} x11-wm/sawfish2"
-CDROM_SET_1="${CDROM_SET_1} x11-wm/windowmaker"
-CDROM_SET_1="${CDROM_SET_1} x11/xorg"
-CDROM_SET_1="${CDROM_SET_1} x11/xorg-clients"
-CDROM_SET_1="${CDROM_SET_1} x11/xorg-documents"
-CDROM_SET_1="${CDROM_SET_1} x11/xorg-libraries"
-CDROM_SET_1="${CDROM_SET_1} x11/xorg-manpages"
-CDROM_SET_1="${CDROM_SET_1} x11/gnome2-lite"
-CDROM_SET_1="${CDROM_SET_1} x11/kde-lite"
-CDROM_SET_1="${CDROM_SET_1} www/links"
+if [ "X${PKG_ARCH}" = "Xia64" ]; then
+	CDROM_SET_1="${CDROM_SET_1} archivers/unzip"
+	CDROM_SET_1="${CDROM_SET_1} devel/gmake"
+	CDROM_SET_1="${CDROM_SET_1} lang/perl5.8"
+	CDROM_SET_1="${CDROM_SET_1} security/sudo"
+	CDROM_SET_1="${CDROM_SET_1} shells/bash2"
+	CDROM_SET_1="${CDROM_SET_1} shells/pdksh"
+	CDROM_SET_1="${CDROM_SET_1} shells/zsh"
+	CDROM_SET_1="${CDROM_SET_1} x11/gnome2-lite"
+	CDROM_SET_1="${CDROM_SET_1} x11/kde-lite"
+	CDROM_SET_1="${CDROM_SET_1} x11/xorg"
+	CDROM_SET_1="${CDROM_SET_1} x11/xorg-manpages"
+else
+	# This is the set required by sysinstall.
+	if [ "X${PKG_ARCH}" = "Xalpha" ]; then
+		CDROM_SET_1="${CDROM_SET_1} emulators/osf1_base"
+	elif [ "X${PKG_ARCH}" = "Xi386" ]; then
+		CDROM_SET_1="${CDROM_SET_1} emulators/linux_base"
+	fi
+	CDROM_SET_1="${CDROM_SET_1} lang/perl5.8"
+	CDROM_SET_1="${CDROM_SET_1} mail/exim"
+	CDROM_SET_1="${CDROM_SET_1} mail/postfix"
+	CDROM_SET_1="${CDROM_SET_1} net/pcnfsd"
+	CDROM_SET_1="${CDROM_SET_1} x11-fonts/xorg-fonts-100dpi"
+	CDROM_SET_1="${CDROM_SET_1} x11-fonts/xorg-fonts-75dpi"
+	CDROM_SET_1="${CDROM_SET_1} x11-fonts/xorg-fonts-cyrillic"
+	CDROM_SET_1="${CDROM_SET_1} x11-fonts/xorg-fonts-encodings"
+	CDROM_SET_1="${CDROM_SET_1} x11-fonts/xorg-fonts-miscbitmaps"
+	CDROM_SET_1="${CDROM_SET_1} x11-fonts/xorg-fonts-truetype"
+	CDROM_SET_1="${CDROM_SET_1} x11-fonts/xorg-fonts-type1"
+	CDROM_SET_1="${CDROM_SET_1} x11-servers/xorg-fontserver"
+	CDROM_SET_1="${CDROM_SET_1} x11-servers/xorg-nestserver"
+	CDROM_SET_1="${CDROM_SET_1} x11-servers/xorg-printserver"
+	CDROM_SET_1="${CDROM_SET_1} x11-servers/xorg-server"
+	CDROM_SET_1="${CDROM_SET_1} x11-servers/xorg-vfbserver"
+	CDROM_SET_1="${CDROM_SET_1} x11-wm/afterstep"
+	CDROM_SET_1="${CDROM_SET_1} x11-wm/enlightenment"
+	CDROM_SET_1="${CDROM_SET_1} x11-wm/fvwm2"
+	CDROM_SET_1="${CDROM_SET_1} x11-wm/sawfish2"
+	CDROM_SET_1="${CDROM_SET_1} x11-wm/windowmaker"
+	CDROM_SET_1="${CDROM_SET_1} x11/xorg"
+	CDROM_SET_1="${CDROM_SET_1} x11/xorg-clients"
+	CDROM_SET_1="${CDROM_SET_1} x11/xorg-documents"
+	CDROM_SET_1="${CDROM_SET_1} x11/xorg-libraries"
+	CDROM_SET_1="${CDROM_SET_1} x11/xorg-manpages"
+	if [ "X${PKG_ARCH}" = "Xi386" ]; then
+		CDROM_SET_1="${CDROM_SET_1} x11/gnome2-lite"
+	else
+		CDROM_SET_1="${CDROM_SET_1} x11/gnome2"
+	fi
+	CDROM_SET_1="${CDROM_SET_1} x11/kde-lite"
+	CDROM_SET_1="${CDROM_SET_1} www/links"
 
-# This is the set of "people really want these" packages.  Please add to
-# this list.
-CDROM_SET_1="${CDROM_SET_1} astro/xearth"
-CDROM_SET_1="${CDROM_SET_1} editors/emacs"
-CDROM_SET_1="${CDROM_SET_1} editors/vim"
-CDROM_SET_1="${CDROM_SET_1} editors/vim-lite"
-CDROM_SET_1="${CDROM_SET_1} emulators/mtools"
-CDROM_SET_1="${CDROM_SET_1} graphics/xv"
-CDROM_SET_1="${CDROM_SET_1} irc/xchat2"
-CDROM_SET_1="${CDROM_SET_1} mail/fetchmail"
-CDROM_SET_1="${CDROM_SET_1} mail/mutt"
-CDROM_SET_1="${CDROM_SET_1} mail/pine4"
-CDROM_SET_1="${CDROM_SET_1} mail/popd"
-CDROM_SET_1="${CDROM_SET_1} mail/xfmail"
-CDROM_SET_1="${CDROM_SET_1} misc/bsdiff"
-CDROM_SET_1="${CDROM_SET_1} net/cvsup"
-CDROM_SET_1="${CDROM_SET_1} net/rsync"
-CDROM_SET_1="${CDROM_SET_1} net/samba"
-CDROM_SET_1="${CDROM_SET_1} news/slrn"
-CDROM_SET_1="${CDROM_SET_1} news/tin"
-CDROM_SET_1="${CDROM_SET_1} print/a2ps-letter"
-if [ "X${PKG_ARCH}" = "Xi386" ]; then
-CDROM_SET_1="${CDROM_SET_1} print/acroread5"
-fi
-CDROM_SET_1="${CDROM_SET_1} print/apsfilter"
-CDROM_SET_1="${CDROM_SET_1} print/ghostscript-gnu-nox11"
-CDROM_SET_1="${CDROM_SET_1} print/gv"
-CDROM_SET_1="${CDROM_SET_1} print/psutils-letter"
-if [ ! "X${PKG_ARCH}" = "Xia64" ]; then
-CDROM_SET_1="${CDROM_SET_1} security/freebsd-update"
-fi
-CDROM_SET_1="${CDROM_SET_1} security/sudo"
-CDROM_SET_1="${CDROM_SET_1} shells/bash2"
-CDROM_SET_1="${CDROM_SET_1} shells/pdksh"
-CDROM_SET_1="${CDROM_SET_1} shells/zsh"
-CDROM_SET_1="${CDROM_SET_1} sysutils/portupgrade"
-CDROM_SET_1="${CDROM_SET_1} www/lynx"
-if [ "X${PKG_ARCH}" = "Xi386" ]; then
-CDROM_SET_1="${CDROM_SET_1} www/opera"
-fi
-CDROM_SET_1="${CDROM_SET_1} x11/rxvt"
+	# This is the set of "people really want these" packages.  Please
+	# add to this list.
+	CDROM_SET_1="${CDROM_SET_1} astro/xearth"
+	CDROM_SET_1="${CDROM_SET_1} editors/emacs"
+	CDROM_SET_1="${CDROM_SET_1} editors/vim"
+	CDROM_SET_1="${CDROM_SET_1} editors/vim-lite"
+	CDROM_SET_1="${CDROM_SET_1} emulators/mtools"
+	CDROM_SET_1="${CDROM_SET_1} graphics/xv"
+	CDROM_SET_1="${CDROM_SET_1} irc/xchat2"
+	CDROM_SET_1="${CDROM_SET_1} mail/fetchmail"
+	CDROM_SET_1="${CDROM_SET_1} mail/mutt"
+	CDROM_SET_1="${CDROM_SET_1} mail/pine4"
+	CDROM_SET_1="${CDROM_SET_1} mail/popd"
+	CDROM_SET_1="${CDROM_SET_1} mail/xfmail"
+	CDROM_SET_1="${CDROM_SET_1} misc/bsdiff"
+	CDROM_SET_1="${CDROM_SET_1} net/cvsup"
+	CDROM_SET_1="${CDROM_SET_1} net/rsync"
+	CDROM_SET_1="${CDROM_SET_1} net/samba"
+	CDROM_SET_1="${CDROM_SET_1} news/slrn"
+	CDROM_SET_1="${CDROM_SET_1} news/tin"
+	CDROM_SET_1="${CDROM_SET_1} print/a2ps-letter"
+	if [ "X${PKG_ARCH}" = "Xi386" ]; then
+		CDROM_SET_1="${CDROM_SET_1} print/acroread5"
+		CDROM_SET_1="${CDROM_SET_1} comms/ltmdm"
+	fi
+	CDROM_SET_1="${CDROM_SET_1} print/apsfilter"
+	CDROM_SET_1="${CDROM_SET_1} print/ghostscript-gnu-nox11"
+	CDROM_SET_1="${CDROM_SET_1} print/gv"
+	CDROM_SET_1="${CDROM_SET_1} print/psutils-letter"
+	CDROM_SET_1="${CDROM_SET_1} security/freebsd-update"
+	CDROM_SET_1="${CDROM_SET_1} security/sudo"
+	CDROM_SET_1="${CDROM_SET_1} shells/bash2"
+	CDROM_SET_1="${CDROM_SET_1} shells/pdksh"
+	CDROM_SET_1="${CDROM_SET_1} shells/zsh"
+	CDROM_SET_1="${CDROM_SET_1} sysutils/portupgrade"
+	CDROM_SET_1="${CDROM_SET_1} www/lynx"
+	if [ "X${PKG_ARCH}" = "Xi386" ]; then
+		CDROM_SET_1="${CDROM_SET_1} www/opera"
+	fi
+	CDROM_SET_1="${CDROM_SET_1} x11/rxvt"
 
-# VERY common build dependencies
-CDROM_SET_1="${CDROM_SET_1} archivers/unzip"
-CDROM_SET_1="${CDROM_SET_1} devel/gmake"
-CDROM_SET_1="${CDROM_SET_1} graphics/png"
-if [ "X${PKG_ARCH}" = "Xi386" -o "X${PKG_ARCH}" = "Xalpha" ]; then
-CDROM_SET_1="${CDROM_SET_1} misc/compat4x"
+	# VERY common build dependencies
+	CDROM_SET_1="${CDROM_SET_1} archivers/unzip"
+	CDROM_SET_1="${CDROM_SET_1} devel/gmake"
+	CDROM_SET_1="${CDROM_SET_1} graphics/png"
+	if [ "X${PKG_ARCH}" = "Xi386" -o "X${PKG_ARCH}" = "Xalpha" ]; then
+		CDROM_SET_1="${CDROM_SET_1} misc/compat4x"
+	fi
 fi
-
 ## End of set for CDROM #1
 
 ## Start of set for CDROM #2

==== //depot/projects/hammer/sbin/ipfw/ipfw.8#31 (text+ko) ====

@@ -1,7 +1,7 @@
 .\"
-.\" $FreeBSD: src/sbin/ipfw/ipfw.8,v 1.157 2004/10/09 20:07:33 csjp Exp $
+.\" $FreeBSD: src/sbin/ipfw/ipfw.8,v 1.158 2004/10/22 19:12:01 andre Exp $
 .\"
-.Dd September 19, 2004
+.Dd October 22, 2004
 .Dt IPFW 8
 .Os
 .Sh NAME
@@ -1812,9 +1812,9 @@
 .Xr divert 4
 socket bound to the specified port will receive all packets
 diverted to that port.
-If no socket is bound to the destination port, or if the kernel
-wasn't compiled with divert socket support, the packets are
-dropped.
+If no socket is bound to the destination port, or if the divert module is
+not loaded, or if the kernel wasn't compiled with divert socket support,
+the packets are dropped.
 .Sh SYSCTL VARIABLES
 A set of
 .Xr sysctl 8

==== //depot/projects/hammer/share/man/man4/aac.4#8 (text+ko) ====

@@ -22,7 +22,7 @@
 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 .\" SUCH DAMAGE.
 .\"
-.\" $FreeBSD: src/share/man/man4/aac.4,v 1.25 2004/08/13 03:55:35 scottl Exp $
+.\" $FreeBSD: src/share/man/man4/aac.4,v 1.26 2004/10/22 04:17:28 scottl Exp $
 .Dd Augyst 12, 2004
 .Dt AAC 4
 .Os
@@ -109,6 +109,8 @@
 .It
 Adaptec SCSI RAID 2810SA
 .It
+Adaptec SCSI RAID 21610SA
+.It
 Adaptec SCSI RAID 5400S
 .It
 Dell CERC SATA RAID 2

==== //depot/projects/hammer/share/man/man4/divert.4#6 (text+ko) ====

@@ -1,6 +1,6 @@
-.\" $FreeBSD: src/share/man/man4/divert.4,v 1.30 2004/09/14 09:35:10 andre Exp $
+.\" $FreeBSD: src/share/man/man4/divert.4,v 1.31 2004/10/22 19:12:01 andre Exp $
 .\"
-.Dd September 14, 2004
+.Dd October 22, 2004
 .Dt DIVERT 4
 .Os
 .Sh NAME
@@ -115,12 +115,22 @@
 same rule.
 .Sh DETAILS
 To enable divert sockets, your kernel must be compiled with the option
-.Dv IPDIVERT .
+.Dv IPDIVERT
+or you have to load the
+.Dv IPDIVERT
+module.
+.Pp
+You can load the
+.Dv IPDIVERT
+module at runtime by issuing the following command:
+.Bd -literal -offset indent
+kldload ipdivert
+.Ed
 .Pp
 If a packet is diverted but no socket is bound to the
 port, or if
 .Dv IPDIVERT
-is not enabled in the kernel, the packet is dropped.
+is not enabled or loaded in the kernel, the packet is dropped.
 .Pp
 Incoming packet fragments which get diverted are fully reassembled
 before delivery; the diversion of any one fragment causes the entire

==== //depot/projects/hammer/share/man/man4/inet.4#12 (text+ko) ====

@@ -30,9 +30,9 @@
 .\" SUCH DAMAGE.
 .\"
 .\"     From: @(#)inet.4	8.1 (Berkeley) 6/5/93
-.\" $FreeBSD: src/share/man/man4/inet.4,v 1.32 2004/08/16 06:30:58 maxim Exp $
+.\" $FreeBSD: src/share/man/man4/inet.4,v 1.33 2004/10/23 18:45:53 andre Exp $
 .\"
-.Dd August 15, 2004
+.Dd October 23, 2004
 .Dt INET 4
 .Os
 .Sh NAME
@@ -151,69 +151,6 @@
 .It Dv SIOCGIFNETMASK
 Get interface network mask.
 .El
-.Sh ROUTING
-The current implementation of Internet protocols includes some routing-table
-adaptations to provide enhanced caching of certain end-to-end
-information necessary for Transaction TCP and Path MTU Discovery.
-The
-following changes are the most significant:
-.Bl -enum
-.It
-All IP routes, except those with the
-.Dv RTF_CLONING
-flag and those to multicast destinations, have the
-.Dv RTF_PRCLONING
-flag forcibly enabled (they are thus said to be
-.Dq "protocol cloning" ) .
-.It
-When the last reference to an IP route is dropped, the route is
-examined to determine if it was created by cloning such a route.
-If this is the case, the
-.Dv RTF_PROTO3
-flag is turned on, and the expiration timer is initialized to go off
-in net.inet.ip.rtexpire seconds.
-If such a route is re-referenced,
-the flag and expiration timer are reset.
-.It
-A kernel timeout runs once every ten minutes, or sooner if there are
-soon-to-expire routes in the kernel routing table, and deletes the
-expired routes.
-.El
-.Pp
-A dynamic process is in place to modify the value of
-net.inet.ip.rtexpire if the number of cached routes grows too large.
-If after an expiration run there are still more than
-net.inet.ip.rtmaxcache unreferenced routes remaining, the rtexpire
-value is multiplied by 3/4, and any routes which have longer
-expiration times have those times adjusted.
-This process is damped somewhat by specification of a minimum rtexpire value
-(net.inet.ip.rtminexpire), and by restricting the reduction to once in
-a ten-minute period.
-.Pp
-If some external process deletes the original route from which a
-protocol-cloned route was generated, the
-.Dq child route
-is deleted.
-(This is actually a generic mechanism in the routing code support for
-protocol-requested cloning.)
-.Pp
-No attempt is made to manage routes which were not created by protocol
-cloning; these are assumed to be static, under the management of an
-external routing process, or under the management of a link layer
-(e.g.,
-.Tn ARP
-for Ethernets).
-.Pp
-Only certain types of network activity will result in the cloning of a
-route using this mechanism.
-Specifically, those protocols (such as
-.Tn TCP
-and
-.Tn UDP )
-which themselves cache a long-lasting reference to route for a destination
-will trigger the mechanism; whereas raw
-.Tn IP
-packets, whether locally-generated or forwarded, will not.
 .Ss MIB Variables
 A number of variables are implemented in the net.inet branch of the
 .Xr sysctl 3
@@ -228,22 +165,32 @@
 Defaults to off.
 .It Dv IPCTL_FASTFORWARDING
 .Pq ip.fastforwarding
-Boolean: enable/disable the use of fast IP forwarding code.
+Boolean: enable/disable the use of
+.Tn fast IP forwarding
+code.
 Defaults to off.
-When fast forwarding is enabled, IP packets are forwarded directly to
-the appropriate network interface with a minimal validity checking, which
-greatly improves the throughput.
-On the other hand, they bypass the
-standard procedures, such as IP option processing and
-.Xr ipfirewall 4
-checking.
-It is not guaranteed that every packet will be fast-forwarded.
+When
+.Tn fast IP forwarding
+is enabled, IP packets are forwarded directly to the appropriate network
+interface with direct processing to completion, which greatly improves
+the throughput.
+All packets for local IP addresses, non-unicast, or with IP options are
+handled by the normal IP input processing path.
+All features of the normal (slow) IP forwarding path are supported
+including firewall (through
+.Xr pfil 9
+hooks) checking, except
+.Xr IPSEC 4
+tunnel brokering.
+The
+.Tn IP fastforwarding
+path does not generate ICMP redirect or source quench messages.
 .It Dv IPCTL_SENDREDIRECTS
 .Pq ip.redirect
 Boolean: enable/disable sending of ICMP redirects in response to
-unforwardable
 .Tn IP
-packets.
+packets for which a better, and for the sender directly reachable, route
+and next hop is known.
 Defaults to on.
 .It Dv IPCTL_DEFTTL
 .Pq ip.ttl
@@ -310,9 +257,11 @@
 .Xr intro 4 ,
 .Xr ip 4 ,
 .Xr ipfirewall 4 ,
+.Xr route 4 ,
 .Xr tcp 4 ,
 .Xr ttcp 4 ,
-.Xr udp 4
+.Xr udp 4,
+.Xr pfil 9
 .Rs
 .%T "An Introductory 4.3 BSD Interprocess Communication Tutorial"
 .%B PS1

==== //depot/projects/hammer/share/man/man4/ng_device.4#3 (text+ko) ====

@@ -22,9 +22,9 @@
 .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
 .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 .\"
-.\" $FreeBSD: src/share/man/man4/ng_device.4,v 1.2 2002/12/12 15:27:26 ru Exp $
+.\" $FreeBSD: src/share/man/man4/ng_device.4,v 1.3 2004/10/23 11:14:30 glebius Exp $
 .\"
-.Dd June 15, 2002
+.Dd October 19, 2004
 .Dt NG_DEVICE 4
 .Os
 .Sh NAME
@@ -51,64 +51,38 @@
 all subsequent nodes
 .Pa /dev/ngd1 , /dev/ngd2 ,
 etc.
-The only way a
-.Nm device
-node can be created is by a connection to the main
-.Nm device
-node by another type of
-.Xr netgraph 4
-node.
-.Pp
-When a node is shut down, the corresponding device is removed
-and the device name becomes available for reuse by future
-.Nm device
-nodes.
-.Pp
+.Sh HOOKS
 A
 .Nm device
-node has a single hook to which it connects to the requesting
-.Xr netgraph 4

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



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