From owner-svn-src-projects@FreeBSD.ORG Mon Sep 6 16:33:46 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9100710656C1; Mon, 6 Sep 2010 16:33:46 +0000 (UTC) (envelope-from attilio@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 7DF518FC13; Mon, 6 Sep 2010 16:33:46 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o86GXkvW056406; Mon, 6 Sep 2010 16:33:46 GMT (envelope-from attilio@svn.freebsd.org) Received: (from attilio@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o86GXkTe056392; Mon, 6 Sep 2010 16:33:46 GMT (envelope-from attilio@svn.freebsd.org) Message-Id: <201009061633.o86GXkTe056392@svn.freebsd.org> From: Attilio Rao Date: Mon, 6 Sep 2010 16:33:46 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r212259 - in projects/sv/sys: amd64/amd64 arm/arm geom i386/i386 ia64/ia64 net powerpc/powerpc sparc64/sparc64 sun4v/sun4v sys X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 06 Sep 2010 16:33:46 -0000 Author: attilio Date: Mon Sep 6 16:33:46 2010 New Revision: 212259 URL: http://svn.freebsd.org/changeset/base/212259 Log: Rever r212142. Discussed with: emaste, rstone Modified: projects/sv/sys/amd64/amd64/dump_machdep.c projects/sv/sys/amd64/amd64/minidump_machdep.c projects/sv/sys/arm/arm/dump_machdep.c projects/sv/sys/arm/arm/minidump_machdep.c projects/sv/sys/geom/geom_disk.c projects/sv/sys/i386/i386/dump_machdep.c projects/sv/sys/i386/i386/minidump_machdep.c projects/sv/sys/ia64/ia64/dump_machdep.c projects/sv/sys/net/netdump_client.c projects/sv/sys/powerpc/powerpc/dump_machdep.c projects/sv/sys/sparc64/sparc64/dump_machdep.c projects/sv/sys/sun4v/sun4v/dump_machdep.c projects/sv/sys/sys/conf.h Modified: projects/sv/sys/amd64/amd64/dump_machdep.c ============================================================================== --- projects/sv/sys/amd64/amd64/dump_machdep.c Mon Sep 6 15:48:06 2010 (r212258) +++ projects/sv/sys/amd64/amd64/dump_machdep.c Mon Sep 6 16:33:46 2010 (r212259) @@ -297,17 +297,12 @@ dumpsys(struct dumperinfo *di) hdrgap = fileofs - DEV_ALIGN(hdrsz); /* Determine dump offset on device. */ - if ((di->flags & DIF_NET) != 0) - dumplo = 0; - else { - if (di->mediasize < - SIZEOF_METADATA + dumpsize + sizeof(kdh) * 2) { - error = ENOSPC; - goto fail; - } - dumplo = di->mediaoffset + di->mediasize - dumpsize; - dumplo -= sizeof(kdh) * 2; + if (di->mediasize < SIZEOF_METADATA + dumpsize + sizeof(kdh) * 2) { + error = ENOSPC; + goto fail; } + dumplo = di->mediaoffset + di->mediasize - dumpsize; + dumplo -= sizeof(kdh) * 2; mkdumpheader(&kdh, KERNELDUMPMAGIC, KERNELDUMP_AMD64_VERSION, dumpsize, di->blocksize); Modified: projects/sv/sys/amd64/amd64/minidump_machdep.c ============================================================================== --- projects/sv/sys/amd64/amd64/minidump_machdep.c Mon Sep 6 15:48:06 2010 (r212258) +++ projects/sv/sys/amd64/amd64/minidump_machdep.c Mon Sep 6 16:33:46 2010 (r212259) @@ -243,17 +243,12 @@ minidumpsys(struct dumperinfo *di) dumpsize += PAGE_SIZE; /* Determine dump offset on device. */ - if ((di->flags & DIF_NET) != 0) - dumplo = 0; - else { - if (di->mediasize < - SIZEOF_METADATA + dumpsize + sizeof(kdh) * 2) { - error = ENOSPC; - goto fail; - } - dumplo = di->mediaoffset + di->mediasize - dumpsize; - dumplo -= sizeof(kdh) * 2; + if (di->mediasize < SIZEOF_METADATA + dumpsize + sizeof(kdh) * 2) { + error = ENOSPC; + goto fail; } + dumplo = di->mediaoffset + di->mediasize - dumpsize; + dumplo -= sizeof(kdh) * 2; progress = dumpsize; /* Initialize mdhdr */ Modified: projects/sv/sys/arm/arm/dump_machdep.c ============================================================================== --- projects/sv/sys/arm/arm/dump_machdep.c Mon Sep 6 15:48:06 2010 (r212258) +++ projects/sv/sys/arm/arm/dump_machdep.c Mon Sep 6 16:33:46 2010 (r212259) @@ -304,17 +304,12 @@ dumpsys(struct dumperinfo *di) hdrgap = fileofs - DEV_ALIGN(hdrsz); /* Determine dump offset on device. */ - if ((di->flags & DIF_NET) != 0) - dumplo = 0; - else { - if (di->mediasize < - SIZEOF_METADATA + dumpsize + sizeof(kdh) * 2) { - error = ENOSPC; - goto fail; - } - dumplo = di->mediaoffset + di->mediasize - dumpsize; - dumplo -= sizeof(kdh) * 2; + if (di->mediasize < SIZEOF_METADATA + dumpsize + sizeof(kdh) * 2) { + error = ENOSPC; + goto fail; } + dumplo = di->mediaoffset + di->mediasize - dumpsize; + dumplo -= sizeof(kdh) * 2; mkdumpheader(&kdh, KERNELDUMPMAGIC, KERNELDUMP_ARM_VERSION, dumpsize, di->blocksize); Modified: projects/sv/sys/arm/arm/minidump_machdep.c ============================================================================== --- projects/sv/sys/arm/arm/minidump_machdep.c Mon Sep 6 15:48:06 2010 (r212258) +++ projects/sv/sys/arm/arm/minidump_machdep.c Mon Sep 6 16:33:46 2010 (r212259) @@ -277,18 +277,13 @@ minidumpsys(struct dumperinfo *di) dumpsize += PAGE_SIZE; /* Determine dump offset on device. */ - if ((di->flags & DIF_NET) != 0) - dumplo = 0; - else { - if (di->mediasize < - SIZEOF_METADATA + dumpsize + sizeof(kdh) * 2) { - error = ENOSPC; - goto fail; - } - - dumplo = di->mediaoffset + di->mediasize - dumpsize; - dumplo -= sizeof(kdh) * 2; + if (di->mediasize < SIZEOF_METADATA + dumpsize + sizeof(kdh) * 2) { + error = ENOSPC; + goto fail; } + + dumplo = di->mediaoffset + di->mediasize - dumpsize; + dumplo -= sizeof(kdh) * 2; progress = dumpsize; /* Initialize mdhdr */ Modified: projects/sv/sys/geom/geom_disk.c ============================================================================== --- projects/sv/sys/geom/geom_disk.c Mon Sep 6 15:48:06 2010 (r212258) +++ projects/sv/sys/geom/geom_disk.c Mon Sep 6 16:33:46 2010 (r212259) @@ -182,7 +182,6 @@ g_disk_kerneldump(struct bio *bp, struct di.blocksize = dp->d_sectorsize; di.maxiosize = dp->d_maxsize; di.mediaoffset = gkd->offset; - di.flags = 0; if ((gkd->offset + gkd->length) > dp->d_mediasize) gkd->length = dp->d_mediasize - gkd->offset; di.mediasize = gkd->length; Modified: projects/sv/sys/i386/i386/dump_machdep.c ============================================================================== --- projects/sv/sys/i386/i386/dump_machdep.c Mon Sep 6 15:48:06 2010 (r212258) +++ projects/sv/sys/i386/i386/dump_machdep.c Mon Sep 6 16:33:46 2010 (r212259) @@ -297,17 +297,12 @@ dumpsys(struct dumperinfo *di) hdrgap = fileofs - DEV_ALIGN(hdrsz); /* Determine dump offset on device. */ - if ((di->flags & DIF_NET) != 0) - dumplo = 0; - else { - if (di->mediasize < - SIZEOF_METADATA + dumpsize + sizeof(kdh) * 2) { - error = ENOSPC; - goto fail; - } - dumplo = di->mediaoffset + di->mediasize - dumpsize; - dumplo -= sizeof(kdh) * 2; + if (di->mediasize < SIZEOF_METADATA + dumpsize + sizeof(kdh) * 2) { + error = ENOSPC; + goto fail; } + dumplo = di->mediaoffset + di->mediasize - dumpsize; + dumplo -= sizeof(kdh) * 2; mkdumpheader(&kdh, KERNELDUMPMAGIC, KERNELDUMP_I386_VERSION, dumpsize, di->blocksize); Modified: projects/sv/sys/i386/i386/minidump_machdep.c ============================================================================== --- projects/sv/sys/i386/i386/minidump_machdep.c Mon Sep 6 15:48:06 2010 (r212258) +++ projects/sv/sys/i386/i386/minidump_machdep.c Mon Sep 6 16:33:46 2010 (r212259) @@ -243,17 +243,12 @@ minidumpsys(struct dumperinfo *di) dumpsize += PAGE_SIZE; /* Determine dump offset on device. */ - if ((di->flags & DIF_NET) != 0) - dumplo = 0; - else { - if (di->mediasize < - SIZEOF_METADATA + dumpsize + sizeof(kdh) * 2) { - error = ENOSPC; - goto fail; - } - dumplo = di->mediaoffset + di->mediasize - dumpsize; - dumplo -= sizeof(kdh) * 2; + if (di->mediasize < SIZEOF_METADATA + dumpsize + sizeof(kdh) * 2) { + error = ENOSPC; + goto fail; } + dumplo = di->mediaoffset + di->mediasize - dumpsize; + dumplo -= sizeof(kdh) * 2; progress = dumpsize; /* Initialize mdhdr */ Modified: projects/sv/sys/ia64/ia64/dump_machdep.c ============================================================================== --- projects/sv/sys/ia64/ia64/dump_machdep.c Mon Sep 6 15:48:06 2010 (r212258) +++ projects/sv/sys/ia64/ia64/dump_machdep.c Mon Sep 6 16:33:46 2010 (r212259) @@ -232,17 +232,12 @@ dumpsys(struct dumperinfo *di) hdrgap = fileofs - DEV_ALIGN(hdrsz); /* Determine dump offset on device. */ - if ((di->flags & DIF_NET) != 0) - dumplo = 0; - else { - if (di->mediasize < - SIZEOF_METADATA + dumpsize + sizeof(kdh) * 2) { - error = ENOSPC; - goto fail; - } - dumplo = di->mediaoffset + di->mediasize - dumpsize; - dumplo -= sizeof(kdh) * 2; + if (di->mediasize < SIZEOF_METADATA + dumpsize + sizeof(kdh) * 2) { + error = ENOSPC; + goto fail; } + dumplo = di->mediaoffset + di->mediasize - dumpsize; + dumplo -= sizeof(kdh) * 2; mkdumpheader(&kdh, KERNELDUMPMAGIC, KERNELDUMP_IA64_VERSION, dumpsize, di->blocksize); Modified: projects/sv/sys/net/netdump_client.c ============================================================================== --- projects/sv/sys/net/netdump_client.c Mon Sep 6 15:48:06 2010 (r212258) +++ projects/sv/sys/net/netdump_client.c Mon Sep 6 16:33:46 2010 (r212259) @@ -1222,7 +1222,7 @@ netdump_trigger(void *arg, int howto) dumper.dumper = netdump_dumper; dumper.priv = NULL; dumper.blocksize = NETDUMP_DATASIZE; - dumper.flags = DIF_NET; + dumper.flags = DF_NET; /* in dump_machdep.c */ dumpsys(&dumper); Modified: projects/sv/sys/powerpc/powerpc/dump_machdep.c ============================================================================== --- projects/sv/sys/powerpc/powerpc/dump_machdep.c Mon Sep 6 15:48:06 2010 (r212258) +++ projects/sv/sys/powerpc/powerpc/dump_machdep.c Mon Sep 6 16:33:46 2010 (r212259) @@ -233,8 +233,8 @@ dumpsys(struct dumperinfo *di) dumpsize += fileofs; hdrgap = fileofs - DEV_ALIGN(hdrsz); - /* Determine dump offset on device. */ - if ((di->flags & DIF_NET) == 0 && di->mediasize > 0) { + /* For block devices, determine the dump offset on the device. */ + if (di->mediasize > 0) { if (di->mediasize < SIZEOF_METADATA + dumpsize + sizeof(kdh) * 2) { error = ENOSPC; Modified: projects/sv/sys/sparc64/sparc64/dump_machdep.c ============================================================================== --- projects/sv/sys/sparc64/sparc64/dump_machdep.c Mon Sep 6 15:48:06 2010 (r212258) +++ projects/sv/sys/sparc64/sparc64/dump_machdep.c Mon Sep 6 16:33:46 2010 (r212259) @@ -167,8 +167,7 @@ dumpsys(struct dumperinfo *di) } /* Determine dump offset on device. */ - dumplo = (di->flags & DIF_NET) != 0 ? 0 : - di->mediaoffset + di->mediasize - totsize; + dumplo = di->mediaoffset + di->mediasize - totsize; mkdumpheader(&kdh, KERNELDUMPMAGIC, KERNELDUMP_SPARC64_VERSION, size, di->blocksize); Modified: projects/sv/sys/sun4v/sun4v/dump_machdep.c ============================================================================== --- projects/sv/sys/sun4v/sun4v/dump_machdep.c Mon Sep 6 15:48:06 2010 (r212258) +++ projects/sv/sys/sun4v/sun4v/dump_machdep.c Mon Sep 6 16:33:46 2010 (r212259) @@ -170,8 +170,7 @@ dumpsys(struct dumperinfo *di) } /* Determine dump offset on device. */ - dumplo = (di->flags & DIF_NET) != 0 ? 0 : - di->mediaoffset + di->mediasize - totsize; + dumplo = di->mediaoffset + di->mediasize - totsize; mkdumpheader(&kdh, KERNELDUMPMAGIC, KERNELDUMP_SPARC64_VERSION, size, di->blocksize); Modified: projects/sv/sys/sys/conf.h ============================================================================== --- projects/sv/sys/sys/conf.h Mon Sep 6 15:48:06 2010 (r212258) +++ projects/sv/sys/sys/conf.h Mon Sep 6 16:33:46 2010 (r212259) @@ -317,8 +317,6 @@ EVENTHANDLER_DECLARE(dev_clone, dev_clon /* Stuff relating to kernel-dump */ -#define DIF_NET 0x01 /* Dump over network. */ - struct dumperinfo { dumper_t *dumper; /* Dumping function. */ void *priv; /* Private parts. */ @@ -326,7 +324,6 @@ struct dumperinfo { u_int maxiosize; /* Max size allowed for an individual I/O */ off_t mediaoffset; /* Initial offset in bytes. */ off_t mediasize; /* Space available in bytes. */ - u_int flags; /* Dump device flags. */ }; int set_dumper(struct dumperinfo *); From owner-svn-src-projects@FreeBSD.ORG Mon Sep 6 21:06:14 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 383EB106581E; Mon, 6 Sep 2010 21:06:14 +0000 (UTC) (envelope-from attilio@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 236518FC1C; Mon, 6 Sep 2010 21:06:14 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o86L6ErF065451; Mon, 6 Sep 2010 21:06:14 GMT (envelope-from attilio@svn.freebsd.org) Received: (from attilio@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o86L6Bki065408; Mon, 6 Sep 2010 21:06:11 GMT (envelope-from attilio@svn.freebsd.org) Message-Id: <201009062106.o86L6Bki065408@svn.freebsd.org> From: Attilio Rao Date: Mon, 6 Sep 2010 21:06:11 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r212267 - in projects/sv: . bin/pax bin/sh bin/test cddl/contrib/opensolaris/cmd/zdb cddl/contrib/opensolaris/cmd/zfs cddl/contrib/opensolaris/cmd/zpool cddl/contrib/opensolaris/lib/lib... X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 06 Sep 2010 21:06:14 -0000 Author: attilio Date: Mon Sep 6 21:06:11 2010 New Revision: 212267 URL: http://svn.freebsd.org/changeset/base/212267 Log: MFC Added: projects/sv/cddl/usr.sbin/dtruss/dtruss.1 - copied unchanged from r212259, head/cddl/usr.sbin/dtruss/dtruss.1 projects/sv/sbin/hastd/event.c - copied unchanged from r212259, head/sbin/hastd/event.c projects/sv/sbin/hastd/event.h - copied unchanged from r212259, head/sbin/hastd/event.h projects/sv/sys/mips/rmi/dev/nlge/ - copied from r212259, head/sys/mips/rmi/dev/nlge/ projects/sv/sys/mips/rmi/dev/xlr/debug.h - copied unchanged from r212259, head/sys/mips/rmi/dev/xlr/debug.h projects/sv/sys/mips/rmi/fmn.c - copied unchanged from r212259, head/sys/mips/rmi/fmn.c projects/sv/sys/mips/rmi/rmi_boot_info.h - copied unchanged from r212259, head/sys/mips/rmi/rmi_boot_info.h projects/sv/sys/mips/rmi/xlr_pcmcia.c - copied unchanged from r212259, head/sys/mips/rmi/xlr_pcmcia.c projects/sv/sys/powerpc/powermac/platform_powermac.c - copied unchanged from r212259, head/sys/powerpc/powermac/platform_powermac.c projects/sv/sys/x86/pci/ - copied from r212259, head/sys/x86/pci/ projects/sv/tools/regression/bin/Makefile - copied unchanged from r212259, head/tools/regression/bin/Makefile projects/sv/tools/regression/bin/pax/ - copied from r212259, head/tools/regression/bin/pax/ projects/sv/tools/regression/bin/sh/builtins/command4.0 - copied unchanged from r212259, head/tools/regression/bin/sh/builtins/command4.0 projects/sv/tools/regression/bin/sh/builtins/read2.0 - copied unchanged from r212259, head/tools/regression/bin/sh/builtins/read2.0 Deleted: projects/sv/lib/libthread_db/arch/powerpc64/ projects/sv/secure/lib/libcrypto/opensslconf-powerpc64.h projects/sv/sys/mips/rmi/clock.c projects/sv/sys/mips/rmi/clock.h projects/sv/sys/mips/rmi/debug.h projects/sv/sys/mips/rmi/on_chip.c projects/sv/sys/mips/rmi/shared_structs.h projects/sv/sys/mips/rmi/shared_structs_func.h projects/sv/sys/mips/rmi/shared_structs_offsets.h projects/sv/sys/mips/rmi/xlrconfig.h projects/sv/sys/powerpc/aim/platform_chrp.c projects/sv/sys/powerpc/aim/trap_subr.S projects/sv/tools/regression/bin/sh/builtins/command4.127 Modified: projects/sv/Makefile.inc1 projects/sv/Makefile.mips projects/sv/bin/pax/pax.1 projects/sv/bin/pax/tar.c projects/sv/bin/sh/eval.c projects/sv/bin/sh/expand.c projects/sv/bin/sh/mksyntax.c projects/sv/bin/test/test.1 projects/sv/cddl/contrib/opensolaris/cmd/zdb/zdb.c projects/sv/cddl/contrib/opensolaris/cmd/zfs/zfs_main.c projects/sv/cddl/contrib/opensolaris/cmd/zpool/zpool_main.c projects/sv/cddl/contrib/opensolaris/lib/libdtrace/common/dt_program.c projects/sv/cddl/contrib/opensolaris/lib/pyzfs/common/ioctl.c projects/sv/cddl/usr.sbin/Makefile projects/sv/contrib/gcc/crtstuff.c projects/sv/etc/defaults/rc.conf projects/sv/etc/periodic/daily/800.scrub-zfs projects/sv/etc/rc.d/cleartmp projects/sv/games/fortune/datfiles/fortunes projects/sv/gnu/lib/libgomp/Makefile projects/sv/gnu/lib/libobjc/Makefile projects/sv/include/limits.h projects/sv/lib/Makefile projects/sv/lib/libc/Makefile projects/sv/lib/libc/net/ethers.3 projects/sv/lib/libc/net/eui64.3 projects/sv/lib/libc/net/sctp_send.3 projects/sv/lib/libc/net/sctp_sendmsg.3 projects/sv/lib/libc/stdio/printf.3 projects/sv/lib/libc/stdlib/atexit.c projects/sv/lib/libc/stdlib/malloc.3 projects/sv/lib/libc/sys/mmap.2 projects/sv/lib/libc/sys/semop.2 projects/sv/lib/libc/sys/sigaltstack.2 projects/sv/lib/libedit/common.c projects/sv/lib/libedit/term.c projects/sv/lib/libedit/term.h projects/sv/lib/libipx/ipx.3 projects/sv/lib/libjail/jail.3 projects/sv/lib/libjail/jail.c projects/sv/lib/libkvm/Makefile projects/sv/lib/libpmc/libpmc.c projects/sv/lib/libstand/nfs.c projects/sv/lib/libthr/thread/thr_cancel.c projects/sv/lib/libthr/thread/thr_cond.c projects/sv/lib/libthr/thread/thr_create.c projects/sv/lib/libthr/thread/thr_exit.c projects/sv/lib/libthr/thread/thr_fork.c projects/sv/lib/libthr/thread/thr_init.c projects/sv/lib/libthr/thread/thr_join.c projects/sv/lib/libthr/thread/thr_kern.c projects/sv/lib/libthr/thread/thr_mutex.c projects/sv/lib/libthr/thread/thr_private.h projects/sv/lib/libthr/thread/thr_rtld.c projects/sv/lib/libthr/thread/thr_sig.c projects/sv/lib/libthr/thread/thr_spec.c projects/sv/lib/libthr/thread/thr_syscalls.c projects/sv/lib/libthr/thread/thr_umtx.c projects/sv/lib/libthr/thread/thr_umtx.h projects/sv/lib/msun/Makefile projects/sv/libexec/ypxfr/ypxfr.8 projects/sv/release/doc/share/misc/dev.archlist.txt projects/sv/sbin/bsdlabel/bsdlabel.c projects/sv/sbin/dhclient/dhclient-script.8 projects/sv/sbin/fdisk/fdisk.c projects/sv/sbin/geom/class/sched/gsched.8 projects/sv/sbin/geom/core/geom.8 projects/sv/sbin/hastd/Makefile projects/sv/sbin/hastd/control.c projects/sv/sbin/hastd/hast.conf.5 projects/sv/sbin/hastd/hast.h projects/sv/sbin/hastd/hast_proto.c projects/sv/sbin/hastd/hast_proto.h projects/sv/sbin/hastd/hastd.c projects/sv/sbin/hastd/hastd.h projects/sv/sbin/hastd/hooks.c projects/sv/sbin/hastd/hooks.h projects/sv/sbin/hastd/parse.y projects/sv/sbin/hastd/pjdlog.c projects/sv/sbin/hastd/primary.c projects/sv/sbin/hastd/proto.c projects/sv/sbin/hastd/proto.h projects/sv/sbin/hastd/proto_socketpair.c projects/sv/sbin/hastd/proto_tcp4.c projects/sv/sbin/hastd/secondary.c projects/sv/sbin/hastd/synch.h projects/sv/sbin/hastd/token.l projects/sv/sbin/ipfw/ipfw.8 projects/sv/sbin/kldload/kldload.8 projects/sv/sbin/kldload/kldload.c projects/sv/sbin/mount_nfs/mount_nfs.c projects/sv/sbin/mount_unionfs/mount_unionfs.8 projects/sv/secure/lib/libcrypto/Makefile projects/sv/secure/lib/libcrypto/man/BIO_s_bio.3 projects/sv/secure/lib/libcrypto/opensslconf-powerpc.h projects/sv/share/examples/etc/make.conf projects/sv/share/man/man4/ata.4 projects/sv/share/man/man4/bpf.4 projects/sv/share/man/man4/ddb.4 projects/sv/share/man/man4/man4.powerpc/powermac_nvram.4 projects/sv/share/man/man4/netgraph.4 projects/sv/share/man/man4/ng_hci.4 projects/sv/share/man/man4/psm.4 projects/sv/share/man/man4/re.4 projects/sv/share/man/man4/sis.4 projects/sv/share/man/man5/rc.conf.5 projects/sv/share/man/man5/src.conf.5 projects/sv/share/man/man7/hier.7 projects/sv/share/man/man9/Makefile projects/sv/share/man/man9/devstat.9 projects/sv/share/man/man9/ieee80211_node.9 projects/sv/share/man/man9/locking.9 projects/sv/share/man/man9/make_dev.9 projects/sv/share/man/man9/rmlock.9 projects/sv/share/misc/committers-ports.dot projects/sv/share/misc/committers-src.dot projects/sv/share/mk/bsd.cpu.mk projects/sv/sys/amd64/amd64/cpu_switch.S projects/sv/sys/amd64/amd64/exception.S projects/sv/sys/amd64/amd64/machdep.c projects/sv/sys/amd64/amd64/trap.c projects/sv/sys/amd64/include/cpufunc.h projects/sv/sys/amd64/include/segments.h projects/sv/sys/boot/common/Makefile.inc projects/sv/sys/boot/i386/boot2/Makefile projects/sv/sys/boot/i386/efi/Makefile projects/sv/sys/boot/i386/libi386/pxe.c projects/sv/sys/boot/i386/loader/Makefile projects/sv/sys/boot/i386/zfsloader/Makefile projects/sv/sys/boot/ofw/libofw/ofw_copy.c projects/sv/sys/boot/pc98/boot2/Makefile projects/sv/sys/boot/pc98/boot2/boot2.c projects/sv/sys/cam/ata/ata_da.c projects/sv/sys/cam/scsi/scsi_da.c projects/sv/sys/cddl/compat/opensolaris/kern/opensolaris_policy.c projects/sv/sys/cddl/compat/opensolaris/sys/policy.h projects/sv/sys/cddl/contrib/opensolaris/uts/common/Makefile.files projects/sv/sys/cddl/contrib/opensolaris/uts/common/dtrace/fasttrap.c projects/sv/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/metaslab.c projects/sv/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/rrwlock.c projects/sv/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c projects/sv/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/space_map.c projects/sv/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/metaslab.h projects/sv/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/metaslab_impl.h projects/sv/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa_impl.h projects/sv/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/space_map.h projects/sv/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_acl.h projects/sv/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_znode.h projects/sv/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zio.h projects/sv/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c projects/sv/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c projects/sv/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_queue.c projects/sv/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_acl.c projects/sv/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ctldir.c projects/sv/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c projects/sv/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c projects/sv/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c projects/sv/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c projects/sv/sys/cddl/contrib/opensolaris/uts/common/sys/vnode.h projects/sv/sys/cddl/contrib/opensolaris/uts/intel/dtrace/fasttrap_isa.c projects/sv/sys/cddl/dev/dtrace/dtrace_load.c projects/sv/sys/compat/x86bios/x86bios.c projects/sv/sys/compat/x86bios/x86bios.h projects/sv/sys/conf/files.amd64 projects/sv/sys/conf/files.i386 projects/sv/sys/conf/files.powerpc projects/sv/sys/dev/acpi_support/acpi_hp.c projects/sv/sys/dev/acpica/acpi.c projects/sv/sys/dev/acpica/acpi_hpet.c projects/sv/sys/dev/ahci/ahci.c projects/sv/sys/dev/ata/ata-all.h projects/sv/sys/dev/ata/ata-lowlevel.c projects/sv/sys/dev/ata/ata-pci.h projects/sv/sys/dev/ata/chipsets/ata-ahci.c projects/sv/sys/dev/ata/chipsets/ata-intel.c projects/sv/sys/dev/ata/chipsets/ata-siliconimage.c projects/sv/sys/dev/bge/if_bge.c projects/sv/sys/dev/bge/if_bgereg.h projects/sv/sys/dev/e1000/if_em.c projects/sv/sys/dev/e1000/if_em.h projects/sv/sys/dev/e1000/if_igb.c projects/sv/sys/dev/e1000/if_igb.h projects/sv/sys/dev/e1000/if_lem.c projects/sv/sys/dev/e1000/if_lem.h projects/sv/sys/dev/ed/if_ed_novell.c projects/sv/sys/dev/ed/if_ed_pci.c projects/sv/sys/dev/fb/vesa.c projects/sv/sys/dev/hwpmc/hwpmc_core.c projects/sv/sys/dev/ichsmb/ichsmb_pci.c projects/sv/sys/dev/ichwd/ichwd.c projects/sv/sys/dev/ichwd/ichwd.h projects/sv/sys/dev/if_ndis/if_ndis_usb.c projects/sv/sys/dev/iscsi/initiator/iscsi.c projects/sv/sys/dev/iscsi/initiator/iscsivar.h projects/sv/sys/dev/ixgb/if_ixgb.c projects/sv/sys/dev/ixgb/if_ixgb.h projects/sv/sys/dev/ixgbe/ixgbe.c projects/sv/sys/dev/ixgbe/ixgbe.h projects/sv/sys/dev/powermac_nvram/powermac_nvram.c projects/sv/sys/dev/powermac_nvram/powermac_nvramvar.h projects/sv/sys/dev/sis/if_sis.c projects/sv/sys/dev/sis/if_sisreg.h projects/sv/sys/dev/sound/pci/hda/hdac.c projects/sv/sys/dev/twa/tw_cl.h projects/sv/sys/dev/twa/tw_cl_externs.h projects/sv/sys/dev/twa/tw_cl_fwif.h projects/sv/sys/dev/twa/tw_cl_init.c projects/sv/sys/dev/twa/tw_cl_intr.c projects/sv/sys/dev/twa/tw_cl_io.c projects/sv/sys/dev/twa/tw_cl_misc.c projects/sv/sys/dev/twa/tw_cl_share.h projects/sv/sys/dev/twa/tw_osl.h projects/sv/sys/dev/twa/tw_osl_cam.c projects/sv/sys/dev/twa/tw_osl_freebsd.c projects/sv/sys/dev/twa/tw_osl_share.h projects/sv/sys/dev/usb/controller/ehci.c projects/sv/sys/dev/usb/controller/ohci.c projects/sv/sys/dev/usb/controller/uhci.c projects/sv/sys/dev/usb/input/atp.c projects/sv/sys/dev/usb/input/uep.c projects/sv/sys/dev/usb/input/uhid.c projects/sv/sys/dev/usb/input/ukbd.c projects/sv/sys/dev/usb/input/ums.c projects/sv/sys/dev/usb/misc/udbp.c projects/sv/sys/dev/usb/misc/ufm.c projects/sv/sys/dev/usb/net/if_aue.c projects/sv/sys/dev/usb/net/if_axe.c projects/sv/sys/dev/usb/net/if_axereg.h projects/sv/sys/dev/usb/net/if_cdce.c projects/sv/sys/dev/usb/net/if_cue.c projects/sv/sys/dev/usb/net/if_kue.c projects/sv/sys/dev/usb/net/if_rue.c projects/sv/sys/dev/usb/net/if_udav.c projects/sv/sys/dev/usb/net/uhso.c projects/sv/sys/dev/usb/serial/u3g.c projects/sv/sys/dev/usb/serial/uark.c projects/sv/sys/dev/usb/serial/ubsa.c projects/sv/sys/dev/usb/serial/ubser.c projects/sv/sys/dev/usb/serial/uchcom.c projects/sv/sys/dev/usb/serial/ucycom.c projects/sv/sys/dev/usb/serial/ufoma.c projects/sv/sys/dev/usb/serial/uftdi.c projects/sv/sys/dev/usb/serial/ugensa.c projects/sv/sys/dev/usb/serial/uipaq.c projects/sv/sys/dev/usb/serial/ulpt.c projects/sv/sys/dev/usb/serial/umct.c projects/sv/sys/dev/usb/serial/umoscom.c projects/sv/sys/dev/usb/serial/uvisor.c projects/sv/sys/dev/usb/storage/umass.c projects/sv/sys/dev/usb/storage/urio.c projects/sv/sys/dev/usb/usb_compat_linux.c projects/sv/sys/dev/usb/usb_controller.h projects/sv/sys/dev/usb/usb_device.c projects/sv/sys/dev/usb/usb_generic.c projects/sv/sys/dev/usb/usb_hub.c projects/sv/sys/dev/usb/usb_transfer.c projects/sv/sys/dev/usb/usb_transfer.h projects/sv/sys/dev/usb/usbdi.h projects/sv/sys/dev/usb/usbdi_util.h projects/sv/sys/dev/usb/wlan/if_rum.c projects/sv/sys/dev/usb/wlan/if_run.c projects/sv/sys/dev/usb/wlan/if_uath.c projects/sv/sys/dev/usb/wlan/if_upgt.c projects/sv/sys/dev/usb/wlan/if_ural.c projects/sv/sys/dev/usb/wlan/if_urtw.c projects/sv/sys/dev/usb/wlan/if_zyd.c projects/sv/sys/fs/devfs/devfs_vnops.c projects/sv/sys/fs/ext2fs/ext2_alloc.c projects/sv/sys/fs/nfs/nfs_commonsubs.c projects/sv/sys/fs/nfs/nfs_var.h projects/sv/sys/fs/nfsclient/nfs_clbio.c projects/sv/sys/fs/nfsclient/nfs_clvnops.c projects/sv/sys/fs/nfsserver/nfs_nfsdsocket.c projects/sv/sys/fs/nfsserver/nfs_nfsdstate.c projects/sv/sys/fs/nullfs/null_vnops.c projects/sv/sys/fs/unionfs/union_subr.c projects/sv/sys/fs/unionfs/union_vfsops.c projects/sv/sys/geom/eli/g_eli.c projects/sv/sys/geom/eli/g_eli.h projects/sv/sys/geom/geom_io.c projects/sv/sys/geom/sched/subr_disk.c projects/sv/sys/i386/i386/exception.s projects/sv/sys/i386/i386/machdep.c projects/sv/sys/i386/i386/trap.c projects/sv/sys/i386/include/cpufunc.h projects/sv/sys/i386/include/segments.h projects/sv/sys/i386/include/vm86.h projects/sv/sys/kern/init_sysent.c projects/sv/sys/kern/kern_et.c projects/sv/sys/kern/kern_exec.c projects/sv/sys/kern/kern_malloc.c projects/sv/sys/kern/kern_rmlock.c projects/sv/sys/kern/kern_sig.c projects/sv/sys/kern/kern_umtx.c projects/sv/sys/kern/sched_ule.c projects/sv/sys/kern/subr_acl_nfs4.c projects/sv/sys/kern/subr_acl_posix1e.c projects/sv/sys/kern/subr_bus.c projects/sv/sys/kern/subr_disk.c projects/sv/sys/kern/subr_sbuf.c projects/sv/sys/kern/subr_taskqueue.c projects/sv/sys/kern/sys_generic.c projects/sv/sys/kern/syscalls.c projects/sv/sys/kern/syscalls.master projects/sv/sys/kern/systrace_args.c projects/sv/sys/kern/uipc_syscalls.c projects/sv/sys/kern/vfs_default.c projects/sv/sys/kern/vfs_mount.c projects/sv/sys/kern/vfs_subr.c projects/sv/sys/mips/include/atomic.h projects/sv/sys/mips/include/locore.h projects/sv/sys/mips/include/memdev.h projects/sv/sys/mips/include/pcb.h projects/sv/sys/mips/include/pmap.h projects/sv/sys/mips/include/pte.h projects/sv/sys/mips/include/regnum.h projects/sv/sys/mips/include/ucontext.h projects/sv/sys/mips/mips/pmap.c projects/sv/sys/mips/rmi/board.c projects/sv/sys/mips/rmi/board.h projects/sv/sys/mips/rmi/dev/xlr/rge.c projects/sv/sys/mips/rmi/files.xlr projects/sv/sys/mips/rmi/interrupt.h projects/sv/sys/mips/rmi/intr_machdep.c projects/sv/sys/mips/rmi/iodi.c projects/sv/sys/mips/rmi/iomap.h projects/sv/sys/mips/rmi/msgring.h projects/sv/sys/mips/rmi/pic.h projects/sv/sys/mips/rmi/rmi_mips_exts.h projects/sv/sys/mips/rmi/tick.c projects/sv/sys/mips/rmi/xlr_machdep.c projects/sv/sys/mips/rmi/xlr_pci.c projects/sv/sys/modules/dtrace/dtrace/Makefile projects/sv/sys/net/if_epair.c projects/sv/sys/net/if_lagg.c projects/sv/sys/netinet/in.c projects/sv/sys/netinet/ip_input.c projects/sv/sys/netinet/ip_var.h projects/sv/sys/netinet/ipfw/ip_fw_log.c projects/sv/sys/netinet/ipfw/ip_fw_nat.c projects/sv/sys/netinet/sctp.h projects/sv/sys/netinet/sctp_cc_functions.c projects/sv/sys/netinet/sctp_crc32.c projects/sv/sys/netinet/sctp_crc32.h projects/sv/sys/netinet/sctp_indata.c projects/sv/sys/netinet/sctp_input.c projects/sv/sys/netinet/sctp_os_bsd.h projects/sv/sys/netinet/sctp_output.c projects/sv/sys/netinet/sctp_pcb.c projects/sv/sys/netinet/sctp_pcb.h projects/sv/sys/netinet/sctp_peeloff.c projects/sv/sys/netinet/sctp_sysctl.c projects/sv/sys/netinet/sctp_sysctl.h projects/sv/sys/netinet/sctp_timer.c projects/sv/sys/netinet/sctp_uio.h projects/sv/sys/netinet/sctp_usrreq.c projects/sv/sys/netinet/sctputil.c projects/sv/sys/netinet/tcp_input.c projects/sv/sys/netinet/tcp_subr.c projects/sv/sys/netinet6/ip6_input.c projects/sv/sys/netinet6/ip6_var.h projects/sv/sys/netinet6/sctp6_usrreq.c projects/sv/sys/nfsclient/nfs_diskless.c projects/sv/sys/nfsserver/nfs_serv.c projects/sv/sys/powerpc/aim/machdep.c projects/sv/sys/powerpc/aim/mmu_oea.c projects/sv/sys/powerpc/aim/mmu_oea64.c projects/sv/sys/powerpc/aim/nexus.c projects/sv/sys/powerpc/aim/ofw_machdep.c projects/sv/sys/powerpc/aim/vm_machdep.c projects/sv/sys/powerpc/booke/platform_bare.c projects/sv/sys/powerpc/conf/GENERIC64 projects/sv/sys/powerpc/include/ofw_machdep.h projects/sv/sys/powerpc/include/param.h projects/sv/sys/powerpc/mpc85xx/mpc85xx.c projects/sv/sys/powerpc/powermac/cuda.c projects/sv/sys/powerpc/powermac/pmu.c projects/sv/sys/powerpc/powermac/smu.c projects/sv/sys/powerpc/powerpc/mp_machdep.c projects/sv/sys/powerpc/powerpc/platform.c projects/sv/sys/powerpc/powerpc/platform_if.m projects/sv/sys/rpc/replay.c projects/sv/sys/sparc64/conf/GENERIC projects/sv/sys/sys/_rmlock.h projects/sv/sys/sys/bio.h projects/sv/sys/sys/bus.h projects/sv/sys/sys/cdefs.h projects/sv/sys/sys/copyright.h projects/sv/sys/sys/dtrace_bsd.h projects/sv/sys/sys/mman.h projects/sv/sys/sys/mount.h projects/sv/sys/sys/param.h projects/sv/sys/sys/rmlock.h projects/sv/sys/sys/syscall.h projects/sv/sys/sys/syscall.mk projects/sv/sys/sys/sysproto.h projects/sv/sys/vm/memguard.c projects/sv/sys/vm/memguard.h projects/sv/sys/vm/vm_mmap.c projects/sv/sys/vm/vm_page.c projects/sv/sys/x86/x86/local_apic.c projects/sv/tools/regression/poll/pipepoll.c projects/sv/tools/tools/nanobsd/nanobsd.sh projects/sv/tools/tools/sysbuild/sysbuild.sh projects/sv/usr.bin/calendar/calendar.1 projects/sv/usr.bin/calendar/calendar.h projects/sv/usr.bin/calendar/calendars/calendar.freebsd projects/sv/usr.bin/calendar/calendars/calendar.judaic projects/sv/usr.bin/calendar/calendars/fr_FR.ISO8859-1/calendar.fetes projects/sv/usr.bin/calendar/calendars/ru_RU.KOI8-R/calendar.military (contents, props changed) projects/sv/usr.bin/calendar/parsedata.c projects/sv/usr.bin/ncal/ncal.c projects/sv/usr.bin/printf/printf.1 projects/sv/usr.bin/split/split.1 projects/sv/usr.bin/truss/Makefile projects/sv/usr.bin/truss/extern.h projects/sv/usr.bin/truss/main.c projects/sv/usr.bin/truss/powerpc-fbsd.c projects/sv/usr.bin/truss/powerpc64-fbsd.c projects/sv/usr.bin/usbhidaction/usbhidaction.c projects/sv/usr.sbin/IPXrouted/IPXrouted.8 projects/sv/usr.sbin/Makefile projects/sv/usr.sbin/apmd/apmd.c projects/sv/usr.sbin/kldxref/Makefile projects/sv/usr.sbin/pkg_install/add/main.c projects/sv/usr.sbin/pmcstat/pmcpl_callgraph.c projects/sv/usr.sbin/pmcstat/pmcpl_calltree.c projects/sv/usr.sbin/pmcstat/pmcstat_log.c projects/sv/usr.sbin/pmcstat/pmcstat_log.h projects/sv/usr.sbin/ypbind/ypbind.8 Directory Properties: projects/sv/ (props changed) projects/sv/cddl/contrib/opensolaris/ (props changed) projects/sv/contrib/bind9/ (props changed) projects/sv/contrib/ee/ (props changed) projects/sv/contrib/expat/ (props changed) projects/sv/contrib/file/ (props changed) projects/sv/contrib/gdb/ (props changed) projects/sv/contrib/gdtoa/ (props changed) projects/sv/contrib/gnu-sort/ (props changed) projects/sv/contrib/groff/ (props changed) projects/sv/contrib/less/ (props changed) projects/sv/contrib/libpcap/ (props changed) projects/sv/contrib/llvm/ (props changed) projects/sv/contrib/llvm/tools/clang/ (props changed) projects/sv/contrib/ncurses/ (props changed) projects/sv/contrib/netcat/ (props changed) projects/sv/contrib/ntp/ (props changed) projects/sv/contrib/one-true-awk/ (props changed) projects/sv/contrib/openbsm/ (props changed) projects/sv/contrib/openpam/ (props changed) projects/sv/contrib/pf/ (props changed) projects/sv/contrib/sendmail/ (props changed) projects/sv/contrib/tcpdump/ (props changed) projects/sv/contrib/tcsh/ (props changed) projects/sv/contrib/top/ (props changed) projects/sv/contrib/top/install-sh (props changed) projects/sv/contrib/tzcode/stdtime/ (props changed) projects/sv/contrib/tzcode/zic/ (props changed) projects/sv/contrib/tzdata/ (props changed) projects/sv/contrib/wpa/ (props changed) projects/sv/crypto/openssh/ (props changed) projects/sv/crypto/openssl/ (props changed) projects/sv/lib/libc/ (props changed) projects/sv/lib/libc/stdtime/ (props changed) projects/sv/lib/libutil/ (props changed) projects/sv/lib/libz/ (props changed) projects/sv/sbin/ (props changed) projects/sv/sbin/ipfw/ (props changed) projects/sv/share/mk/bsd.arch.inc.mk (props changed) projects/sv/share/zoneinfo/ (props changed) projects/sv/sys/ (props changed) projects/sv/sys/amd64/include/xen/ (props changed) projects/sv/sys/cddl/contrib/opensolaris/ (props changed) projects/sv/sys/contrib/dev/acpica/ (props changed) projects/sv/sys/contrib/pf/ (props changed) projects/sv/sys/contrib/x86emu/ (props changed) projects/sv/sys/dev/xen/xenpci/ (props changed) projects/sv/usr.bin/calendar/ (props changed) projects/sv/usr.bin/csup/ (props changed) projects/sv/usr.bin/procstat/ (props changed) projects/sv/usr.sbin/zic/ (props changed) Modified: projects/sv/Makefile.inc1 ============================================================================== --- projects/sv/Makefile.inc1 Mon Sep 6 21:06:06 2010 (r212266) +++ projects/sv/Makefile.inc1 Mon Sep 6 21:06:11 2010 (r212267) @@ -1133,8 +1133,8 @@ _prereq_libs= gnu/lib/libssp/libssp_nons _startup_libs= gnu/lib/csu .if exists(${.CURDIR}/lib/csu/${MACHINE_ARCH}-elf) _startup_libs+= lib/csu/${MACHINE_ARCH}-elf -.elif exists(${.CURDIR}/lib/csu/${MACHINE_CPUARCH}-elf) -_startup_libs+= lib/csu/${MACHINE_CPUARCH}-elf +.elif exists(${.CURDIR}/lib/csu/${MACHINE_ARCH}) +_startup_libs+= lib/csu/${MACHINE_ARCH} .else _startup_libs+= lib/csu/${MACHINE_CPUARCH} .endif Modified: projects/sv/Makefile.mips ============================================================================== --- projects/sv/Makefile.mips Mon Sep 6 21:06:06 2010 (r212266) +++ projects/sv/Makefile.mips Mon Sep 6 21:06:11 2010 (r212267) @@ -1,2 +1,5 @@ # $FreeBSD$ +.if defined(TARGET_ABI) && ${TARGET_ABI} == "n64" +MK_RESCUE=no +.endif Modified: projects/sv/bin/pax/pax.1 ============================================================================== --- projects/sv/bin/pax/pax.1 Mon Sep 6 21:06:06 2010 (r212266) +++ projects/sv/bin/pax/pax.1 Mon Sep 6 21:06:11 2010 (r212267) @@ -33,7 +33,7 @@ .\" @(#)pax.1 8.4 (Berkeley) 4/18/94 .\" $FreeBSD$ .\" -.Dd July 3, 2004 +.Dd August 29, 2010 .Dt PAX 1 .Os .Sh NAME @@ -748,7 +748,9 @@ The extended tar interchange format spec .St -p1003.2 standard. The default blocksize for this format is 10240 bytes. -Pathnames stored by this format must be 250 characters or less in length. +Pathnames stored by this format must be 255 characters or less in length. +The directory part may be at most 155 characters and each path component +must be less than 100 characters. .El .Pp The Modified: projects/sv/bin/pax/tar.c ============================================================================== --- projects/sv/bin/pax/tar.c Mon Sep 6 21:06:06 2010 (r212266) +++ projects/sv/bin/pax/tar.c Mon Sep 6 21:06:11 2010 (r212267) @@ -1086,7 +1086,7 @@ name_split(char *name, int len) */ if (len <= TNMSZ) return(name); - if (len > (TPFSZ + TNMSZ + 1)) + if (len > TPFSZ + TNMSZ) return(NULL); /* @@ -1095,7 +1095,7 @@ name_split(char *name, int len) * to find the biggest piece to fit in the name field (or the smallest * prefix we can find) */ - start = name + len - TNMSZ - 1; + start = name + len - TNMSZ; while ((*start != '\0') && (*start != '/')) ++start; Modified: projects/sv/bin/sh/eval.c ============================================================================== --- projects/sv/bin/sh/eval.c Mon Sep 6 21:06:06 2010 (r212266) +++ projects/sv/bin/sh/eval.c Mon Sep 6 21:06:11 2010 (r212267) @@ -995,7 +995,7 @@ cmddone: goto out; parent: /* parent process gets here (if we forked) */ - if (mode == 0) { /* argument to fork */ + if (mode == FORK_FG) { /* argument to fork */ INTOFF; exitstatus = waitforjob(jp, &realstatus); INTON; @@ -1003,7 +1003,7 @@ parent: /* parent process gets here (if evalskip = SKIPBREAK; skipcount = loopnest; } - } else if (mode == 2) { + } else if (mode == FORK_NOJOB) { backcmd->fd = pip[0]; close(pip[1]); backcmd->jp = jp; Modified: projects/sv/bin/sh/expand.c ============================================================================== --- projects/sv/bin/sh/expand.c Mon Sep 6 21:06:06 2010 (r212266) +++ projects/sv/bin/sh/expand.c Mon Sep 6 21:06:11 2010 (r212267) @@ -138,12 +138,18 @@ expandhere(union node *arg, int fd) /* - * Perform variable substitution and command substitution on an argument, - * placing the resulting list of arguments in arglist. If EXP_FULL is true, - * perform splitting and file name expansion. When arglist is NULL, perform - * here document expansion. + * Perform expansions on an argument, placing the resulting list of arguments + * in arglist. Parameter expansion, command substitution and arithmetic + * expansion are always performed; additional expansions can be requested + * via flag (EXP_*). + * The result is left in the stack string. + * When arglist is NULL, perform here document expansion. A partial result + * may be written to herefd, which is then not included in the stack string. + * + * Caution: this function uses global state and is not reentrant. + * However, a new invocation after an interrupted invocation is safe + * and will reset the global state for the new call. */ - void expandarg(union node *arg, struct arglist *arglist, int flag) { @@ -195,11 +201,14 @@ expandarg(union node *arg, struct arglis /* - * Perform variable and command substitution. If EXP_FULL is set, output CTLESC - * characters to allow for further processing. Otherwise treat - * $@ like $* since no splitting will be performed. + * Perform parameter expansion, command substitution and arithmetic + * expansion, and tilde expansion if requested via EXP_TILDE/EXP_VARTILDE. + * Processing ends at a CTLENDVAR character as well as '\0'. + * This is used to expand word in ${var+word} etc. + * If EXP_FULL, EXP_CASE or EXP_REDIR are set, keep and/or generate CTLESC + * characters to allow for further processing. + * If EXP_FULL is set, also preserve CTLQUOTEMARK characters. */ - STATIC void argstr(char *p, int flag) { @@ -212,7 +221,7 @@ argstr(char *p, int flag) for (;;) { switch (c = *p++) { case '\0': - case CTLENDVAR: /* ??? */ + case CTLENDVAR: goto breakloop; case CTLQUOTEMARK: /* "$@" syntax adherence hack */ @@ -262,6 +271,10 @@ argstr(char *p, int flag) breakloop:; } +/* + * Perform tilde expansion, placing the result in the stack string and + * returning the next position in the input string to process. + */ STATIC char * exptilde(char *p, int flag) { @@ -367,12 +380,11 @@ expari(int flag) int quotes = flag & (EXP_FULL | EXP_CASE | EXP_REDIR); int quoted; - /* * This routine is slightly over-complicated for * efficiency. First we make sure there is * enough space for the result, which may be bigger - * than the expression if we add exponentiation. Next we + * than the expression. Next we * scan backwards looking for the start of arithmetic. If the * next previous character is a CTLESC character, then we * have to rescan starting from the beginning since CTLESC @@ -413,9 +425,8 @@ expari(int flag) /* - * Expand stuff in backwards quotes. + * Perform command substitution. */ - STATIC void expbackq(union node *cmd, int quoted, int flag) { @@ -974,6 +985,12 @@ recordregion(int start, int end, int inq * Break the argument string into pieces based upon IFS and add the * strings to the argument list. The regions of the string to be * searched for IFS characters have been stored by recordregion. + * CTLESC characters are preserved but have little effect in this pass + * other than escaping CTL* characters. In particular, they do not escape + * IFS characters: that should be done with the ifsregion mechanism. + * CTLQUOTEMARK characters are used to preserve empty quoted strings. + * This pass treats them as a regular character, making the string non-empty. + * Later, they are removed along with the other CTL* characters. */ STATIC void ifsbreakup(char *string, struct arglist *arglist) @@ -1075,15 +1092,14 @@ ifsbreakup(char *string, struct arglist } - -/* - * Expand shell metacharacters. At this point, the only control characters - * should be escapes. The results are stored in the list exparg. - */ - STATIC char expdir[PATH_MAX]; #define expdir_end (expdir + sizeof(expdir)) +/* + * Perform pathname generation and remove control characters. + * At this point, the only control characters should be CTLESC and CTLQUOTEMARK. + * The results are stored in the list exparg. + */ STATIC void expandmeta(struct strlist *str, int flag __unused) { @@ -1469,7 +1485,7 @@ breakloop: /* - * Remove any CTLESC characters from a string. + * Remove any CTLESC and CTLQUOTEMARK characters from a string. */ void Modified: projects/sv/bin/sh/mksyntax.c ============================================================================== --- projects/sv/bin/sh/mksyntax.c Mon Sep 6 21:06:06 2010 (r212266) +++ projects/sv/bin/sh/mksyntax.c Mon Sep 6 21:06:11 2010 (r212267) @@ -338,12 +338,12 @@ print(const char *name) */ static const char *macro[] = { - "#define is_digit(c)\t((is_type+SYNBASE)[c] & ISDIGIT)", + "#define is_digit(c)\t((is_type+SYNBASE)[(int)c] & ISDIGIT)", "#define is_eof(c)\t((c) == PEOF)", - "#define is_alpha(c)\t(((c) < CTLESC || (c) > CTLQUOTEMARK) && isalpha((unsigned char) (c)))", - "#define is_name(c)\t(((c) < CTLESC || (c) > CTLQUOTEMARK) && ((c) == '_' || isalpha((unsigned char) (c))))", - "#define is_in_name(c)\t(((c) < CTLESC || (c) > CTLQUOTEMARK) && ((c) == '_' || isalnum((unsigned char) (c))))", - "#define is_special(c)\t((is_type+SYNBASE)[c] & (ISSPECL|ISDIGIT))", + "#define is_alpha(c)\t(((c) < CTLESC || (c) > CTLQUOTEMARK) && (is_type+SYNBASE)[(int)c] & (ISUPPER|ISLOWER))", + "#define is_name(c)\t(((c) < CTLESC || (c) > CTLQUOTEMARK) && (is_type+SYNBASE)[(int)c] & (ISUPPER|ISLOWER|ISUNDER))", + "#define is_in_name(c)\t(((c) < CTLESC || (c) > CTLQUOTEMARK) && (is_type+SYNBASE)[(int)c] & (ISUPPER|ISLOWER|ISUNDER|ISDIGIT))", + "#define is_special(c)\t((is_type+SYNBASE)[(int)c] & (ISSPECL|ISDIGIT))", NULL }; Modified: projects/sv/bin/test/test.1 ============================================================================== --- projects/sv/bin/test/test.1 Mon Sep 6 21:06:06 2010 (r212266) +++ projects/sv/bin/test/test.1 Mon Sep 6 21:06:11 2010 (r212267) @@ -302,7 +302,7 @@ manual page. The .Nm grammar is inherently ambiguous. -In order to assure a degree of consistency, +In order to ensure a degree of consistency, the cases described in the .St -p1003.2 , section D11.2/4.62.4, standard Modified: projects/sv/cddl/contrib/opensolaris/cmd/zdb/zdb.c ============================================================================== --- projects/sv/cddl/contrib/opensolaris/cmd/zdb/zdb.c Mon Sep 6 21:06:06 2010 (r212266) +++ projects/sv/cddl/contrib/opensolaris/cmd/zdb/zdb.c Mon Sep 6 21:06:11 2010 (r212267) @@ -491,35 +491,37 @@ dump_metaslab_stats(metaslab_t *msp) static void dump_metaslab(metaslab_t *msp) { - char freebuf[5]; - space_map_obj_t *smo = &msp->ms_smo; vdev_t *vd = msp->ms_group->mg_vd; spa_t *spa = vd->vdev_spa; + space_map_t *sm = &msp->ms_map; + space_map_obj_t *smo = &msp->ms_smo; + char freebuf[5]; - nicenum(msp->ms_map.sm_size - smo->smo_alloc, freebuf); + nicenum(sm->sm_size - smo->smo_alloc, freebuf); (void) printf( "\tvdev %5llu offset %12llx spacemap %6llu free %5s\n", - (u_longlong_t)vd->vdev_id, (u_longlong_t)msp->ms_map.sm_start, - (u_longlong_t)smo->smo_object, freebuf); + (u_longlong_t)(sm->sm_start / sm->sm_size), + (u_longlong_t)sm->sm_start, (u_longlong_t)smo->smo_object, freebuf); if (dump_opt['m'] > 1) { mutex_enter(&msp->ms_lock); - VERIFY(space_map_load(&msp->ms_map, zfs_metaslab_ops, - SM_FREE, &msp->ms_smo, spa->spa_meta_objset) == 0); + space_map_load_wait(sm); + if (!sm->sm_loaded) + VERIFY(space_map_load(sm, zfs_metaslab_ops, + SM_FREE, smo, spa->spa_meta_objset) == 0); dump_metaslab_stats(msp); - space_map_unload(&msp->ms_map); + space_map_unload(sm); mutex_exit(&msp->ms_lock); } if (dump_opt['d'] > 5 || dump_opt['m'] > 2) { - ASSERT(msp->ms_map.sm_size == (1ULL << vd->vdev_ms_shift)); + ASSERT(sm->sm_size == (1ULL << vd->vdev_ms_shift)); mutex_enter(&msp->ms_lock); - dump_spacemap(spa->spa_meta_objset, smo, &msp->ms_map); + dump_spacemap(spa->spa_meta_objset, smo, sm); mutex_exit(&msp->ms_lock); } - } static void Modified: projects/sv/cddl/contrib/opensolaris/cmd/zfs/zfs_main.c ============================================================================== --- projects/sv/cddl/contrib/opensolaris/cmd/zfs/zfs_main.c Mon Sep 6 21:06:06 2010 (r212266) +++ projects/sv/cddl/contrib/opensolaris/cmd/zfs/zfs_main.c Mon Sep 6 21:06:11 2010 (r212267) @@ -1733,9 +1733,10 @@ zfs_do_userspace(int argc, char **argv) */ (void) execv(pypath, argv-1); - (void) printf("internal error: %s not found\n" + (void) fprintf(stderr, "internal error: %s not found\n" "falling back on built-in implementation, " "some features will not work\n", pypath); + (void) fprintf(stderr, " install sysutils/py-zfs port to correct this\n"); if ((zhp = zfs_open(g_zfs, argv[argc-1], ZFS_TYPE_DATASET)) == NULL) return (1); @@ -3797,7 +3798,8 @@ static int zfs_do_python(int argc, char **argv) { (void) execv(pypath, argv-1); - (void) printf("internal error: %s not found\n", pypath); + (void) fprintf(stderr, "internal error: %s not found\n", pypath); + (void) fprintf(stderr, " install sysutils/py-zfs port to correct this\n"); return (-1); } Modified: projects/sv/cddl/contrib/opensolaris/cmd/zpool/zpool_main.c ============================================================================== --- projects/sv/cddl/contrib/opensolaris/cmd/zpool/zpool_main.c Mon Sep 6 21:06:06 2010 (r212266) +++ projects/sv/cddl/contrib/opensolaris/cmd/zpool/zpool_main.c Mon Sep 6 21:06:11 2010 (r212267) @@ -3333,12 +3333,38 @@ typedef struct upgrade_cbdata { int cb_all; int cb_first; int cb_newer; + char cb_poolname[ZPOOL_MAXNAMELEN]; int cb_argc; uint64_t cb_version; char **cb_argv; } upgrade_cbdata_t; static int +is_root_pool(zpool_handle_t *zhp) +{ + static struct statfs sfs; + static char *poolname = NULL; + static boolean_t stated = B_FALSE; + char *slash; + + if (!stated) { + stated = B_TRUE; + if (statfs("/", &sfs) == -1) { + (void) fprintf(stderr, + "Unable to stat root file system: %s.\n", + strerror(errno)); + return (0); + } + if (strcmp(sfs.f_fstypename, "zfs") != 0) + return (0); + poolname = sfs.f_mntfromname; + if ((slash = strchr(poolname, '/')) != NULL) + *slash = '\0'; + } + return (poolname != NULL && strcmp(poolname, zpool_get_name(zhp)) == 0); +} + +static int upgrade_cb(zpool_handle_t *zhp, void *arg) { upgrade_cbdata_t *cbp = arg; @@ -3371,6 +3397,12 @@ upgrade_cb(zpool_handle_t *zhp, void *ar if (!ret) { (void) printf(gettext("Successfully upgraded " "'%s'\n\n"), zpool_get_name(zhp)); + if (cbp->cb_poolname[0] == '\0' && + is_root_pool(zhp)) { + (void) strlcpy(cbp->cb_poolname, + zpool_get_name(zhp), + sizeof(cbp->cb_poolname)); + } } } } else if (cbp->cb_newer && version > SPA_VERSION) { @@ -3428,6 +3460,10 @@ upgrade_one(zpool_handle_t *zhp, void *d "from version %llu to version %llu\n\n"), zpool_get_name(zhp), (u_longlong_t)cur_version, (u_longlong_t)cbp->cb_version); + if (cbp->cb_poolname[0] == '\0' && is_root_pool(zhp)) { + (void) strlcpy(cbp->cb_poolname, zpool_get_name(zhp), + sizeof(cbp->cb_poolname)); + } } return (ret != 0); @@ -3569,6 +3605,16 @@ zpool_do_upgrade(int argc, char **argv) upgrade_one, &cb); } + if (cb.cb_poolname[0] != '\0') { + (void) printf( + "If you boot from pool '%s', don't forget to update boot code.\n" + "Assuming you use GPT partitioning and da0 is your boot disk\n" + "the following command will do it:\n" + "\n" + "\tgpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 da0\n\n", + cb.cb_poolname); + } + return (ret); } Modified: projects/sv/cddl/contrib/opensolaris/lib/libdtrace/common/dt_program.c ============================================================================== --- projects/sv/cddl/contrib/opensolaris/lib/libdtrace/common/dt_program.c Mon Sep 6 21:06:06 2010 (r212266) +++ projects/sv/cddl/contrib/opensolaris/lib/libdtrace/common/dt_program.c Mon Sep 6 21:06:11 2010 (r212267) @@ -557,6 +557,10 @@ dt_header_provider(dtrace_hdl_t *dtp, dt info.dthi_pfname = alloca(strlen(pvp->pv_desc.dtvd_name) + 1 + i); dt_header_fmt_func(info.dthi_pfname, pvp->pv_desc.dtvd_name); +#ifdef __FreeBSD__ + if (fprintf(out, "#include \n\n") < 0) + return (dt_set_errno(dtp, errno)); +#endif if (fprintf(out, "#if _DTRACE_VERSION\n\n") < 0) return (dt_set_errno(dtp, errno)); Modified: projects/sv/cddl/contrib/opensolaris/lib/pyzfs/common/ioctl.c ============================================================================== --- projects/sv/cddl/contrib/opensolaris/lib/pyzfs/common/ioctl.c Mon Sep 6 21:06:06 2010 (r212266) +++ projects/sv/cddl/contrib/opensolaris/lib/pyzfs/common/ioctl.c Mon Sep 6 21:06:11 2010 (r212267) @@ -33,6 +33,7 @@ #include #include #include +#include #include "zfs_prop.h" static PyObject *ZFSError; Modified: projects/sv/cddl/usr.sbin/Makefile ============================================================================== --- projects/sv/cddl/usr.sbin/Makefile Mon Sep 6 21:06:06 2010 (r212266) +++ projects/sv/cddl/usr.sbin/Makefile Mon Sep 6 21:06:11 2010 (r212267) @@ -3,6 +3,7 @@ .include SUBDIR= ${_dtrace} \ + ${_dtruss} \ ${_lockstat} \ ${_zdb} @@ -14,6 +15,7 @@ _zdb= zdb .if ${MACHINE_ARCH} == "amd64" || ${MACHINE_ARCH} == "i386" _dtrace= dtrace +_dtruss= dtruss _lockstat= lockstat .endif Copied: projects/sv/cddl/usr.sbin/dtruss/dtruss.1 (from r212259, head/cddl/usr.sbin/dtruss/dtruss.1) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/sv/cddl/usr.sbin/dtruss/dtruss.1 Mon Sep 6 21:06:11 2010 (r212267, copy of r212259, head/cddl/usr.sbin/dtruss/dtruss.1) @@ -0,0 +1,89 @@ +.\" +.\" Copyright (c) 2010 The FreeBSD Foundation +.\" All rights reserved. +.\" +.\" This software was developed by Rui Paulo under sponsorship from the +.\" FreeBSD Foundation. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (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$ +.\" +.Dd August 26, 2010 +.Dt DTRUSS 1 +.Os +.Sh NAME +.Nm dtruss +.Nd Trace system calls and userland stacks using DTrace +.Sh SYNOPSIS +.Nm +.Op Fl acdefholLs +.Op Fl t Ar syscall +.Op Fl n Ar name Fl p Ar pid Ar command +.Sh DESCRIPTION +The +.Nm +utility traces system calls and (optionally) userland stack traces for the +specified programs. +.Pp +The following options are available: +.Bl -tag -width indent +.It Fl p Ar pid +Trace the process with PID +.Ar pid . +.It Fl n Ar name +Trace the process with name +.Ar name . +.It Fl t Ar syscall +Trace the specified syscall only. +.It Fl a +Print all details. +.It Fl c +Print syscall counts. +.It Fl d +Print relative times (in microseconds). +.It Fl e +Print elapsed times (in microseconds). +.It Fl f +Follow the children processes. +.It Fl l +Force printing PID / TID. +.It Fl o +Print time spent on CPU. +.It Fl s +Print userland stack backtraces. +.It Fl L +Don't print PID / TID. +.It Fl b Ar bufsize +Specify the DTrace buffer size. +.El +.Sh EXIT STATUS +.Ex -std +.Sh SEE ALSO +.Xr dtrace 1 +.Sh HISTORY +The +.Nm +utility comes from the DTraceToolkit and was first imported into +.Fx 9.0 . +.Sh AUTHORS +.An Brendan Gregg Modified: projects/sv/contrib/gcc/crtstuff.c ============================================================================== --- projects/sv/contrib/gcc/crtstuff.c Mon Sep 6 21:06:06 2010 (r212266) +++ projects/sv/contrib/gcc/crtstuff.c Mon Sep 6 21:06:11 2010 (r212267) @@ -191,11 +191,11 @@ DTOR_LIST_BEGIN; #elif defined(DTORS_SECTION_ASM_OP) asm (DTORS_SECTION_ASM_OP); STATIC func_ptr __DTOR_LIST__[1] - __attribute__ ((aligned(sizeof(func_ptr)))) + __attribute__ ((used, aligned(sizeof(func_ptr)))) = { (func_ptr) (-1) }; #else STATIC func_ptr __DTOR_LIST__[1] - __attribute__((section(".dtors"), aligned(sizeof(func_ptr)))) + __attribute__((used, section(".dtors"), aligned(sizeof(func_ptr)))) = { (func_ptr) (-1) }; #endif /* __DTOR_LIST__ alternatives */ @@ -203,7 +203,7 @@ STATIC func_ptr __DTOR_LIST__[1] /* Stick a label at the beginning of the frame unwind info so we can register and deregister it with the exception handling library code. */ STATIC EH_FRAME_SECTION_CONST char __EH_FRAME_BEGIN__[] - __attribute__((section(EH_FRAME_SECTION_NAME), aligned(4))) + __attribute__((used, section(EH_FRAME_SECTION_NAME), aligned(4))) = { }; #endif /* USE_EH_FRAME_REGISTRY */ @@ -211,7 +211,7 @@ STATIC EH_FRAME_SECTION_CONST char __EH_ /* Stick a label at the beginning of the java class registration info so we can register them properly. */ STATIC void *__JCR_LIST__[] - __attribute__ ((unused, section(JCR_SECTION_NAME), aligned(sizeof(void*)))) + __attribute__ ((used, section(JCR_SECTION_NAME), aligned(sizeof(void*)))) = { }; #endif /* JCR_SECTION_NAME */ @@ -459,11 +459,11 @@ CTOR_LIST_END; static func_ptr force_to_data[1] __attribute__ ((__used__)) = { }; asm (CTORS_SECTION_ASM_OP); STATIC func_ptr __CTOR_END__[1] - __attribute__((aligned(sizeof(func_ptr)))) + __attribute__((used, aligned(sizeof(func_ptr)))) = { (func_ptr) 0 }; #else STATIC func_ptr __CTOR_END__[1] - __attribute__((section(".ctors"), aligned(sizeof(func_ptr)))) + __attribute__((used, section(".ctors"), aligned(sizeof(func_ptr)))) = { (func_ptr) 0 }; #endif @@ -472,11 +472,11 @@ DTOR_LIST_END; #elif defined(DTORS_SECTION_ASM_OP) asm (DTORS_SECTION_ASM_OP); STATIC func_ptr __DTOR_END__[1] - __attribute__ ((unused, aligned(sizeof(func_ptr)))) + __attribute__ ((used, aligned(sizeof(func_ptr)))) = { (func_ptr) 0 }; #else STATIC func_ptr __DTOR_END__[1] - __attribute__((unused, section(".dtors"), aligned(sizeof(func_ptr)))) + __attribute__((used, section(".dtors"), aligned(sizeof(func_ptr)))) = { (func_ptr) 0 }; #endif @@ -493,7 +493,7 @@ typedef short int32; # error "Missing a 4 byte integer" # endif STATIC EH_FRAME_SECTION_CONST int32 __FRAME_END__[] - __attribute__ ((unused, section(EH_FRAME_SECTION_NAME), + __attribute__ ((used, section(EH_FRAME_SECTION_NAME), aligned(sizeof(int32)))) = { 0 }; #endif /* EH_FRAME_SECTION_NAME */ @@ -501,7 +501,7 @@ STATIC EH_FRAME_SECTION_CONST int32 __FR #ifdef JCR_SECTION_NAME /* Null terminate the .jcr section array. */ STATIC void *__JCR_END__[1] - __attribute__ ((unused, section(JCR_SECTION_NAME), + __attribute__ ((used, section(JCR_SECTION_NAME), aligned(sizeof(void *)))) = { 0 }; #endif /* JCR_SECTION_NAME */ Modified: projects/sv/etc/defaults/rc.conf ============================================================================== --- projects/sv/etc/defaults/rc.conf Mon Sep 6 21:06:06 2010 (r212266) +++ projects/sv/etc/defaults/rc.conf Mon Sep 6 21:06:11 2010 (r212267) @@ -216,7 +216,7 @@ ifconfig_lo0="inet 127.0.0.1" # default #ifconfig_ed0_alias0="inet6 2001:db8:2::1 prefixlen 64" # Sample IPv6 alias #ifconfig_fxp0_name="net0" # Change interface name from fxp0 to net0. #vlans_fxp0="101 vlan0" # vlan(4) interfaces for fxp0 device -#create_arg_vlan0="vlan 102" # vlan tag for vlan0 device +#create_args_vlan0="vlan 102" # vlan tag for vlan0 device #wlans_ath0="wlan0" # wlan(4) interfaces for ath0 device #wlandebug_wlan0="scan+auth+assoc" # Set debug flags with wlanddebug(8) #ipv4_addrs_fxp0="192.168.0.1/24 192.168.1.1-5/28" # example IPv4 address entry. Modified: projects/sv/etc/periodic/daily/800.scrub-zfs ============================================================================== --- projects/sv/etc/periodic/daily/800.scrub-zfs Mon Sep 6 21:06:06 2010 (r212266) +++ projects/sv/etc/periodic/daily/800.scrub-zfs Mon Sep 6 21:06:11 2010 (r212267) @@ -53,7 +53,7 @@ case "$daily_scrub_zfs_enable" in # Now minus last scrub (both in seconds) converted to days. _scrub_diff=$(expr -e \( $(date +%s) - \ $(date -j -f %F.%T ${_last_scrub} +%s) \) / 60 / 60 / 24) - if [ ${_scrub_diff} -le ${_pool_threshold} ]; then + if [ ${_scrub_diff} -lt ${_pool_threshold} ]; then echo " skipping scrubbing of pool '${pool}':" echo " last scrubbing is ${_scrub_diff} days ago, threshold is set to ${_pool_threshold} days" continue @@ -65,11 +65,11 @@ case "$daily_scrub_zfs_enable" in echo " scrubbing of pool '${pool}' already in progress, skipping:" ;; *"none requested"*) - echo " starting first scrubbing (after reboot) of pool '${pool}':" + echo " starting first scrub (since reboot) of pool '${pool}':" zpool scrub ${pool} ;; *) - echo " starting scrubbing of pool '${pool}':" + echo " starting scrub of pool '${pool}':" zpool scrub ${pool} ;; esac Modified: projects/sv/etc/rc.d/cleartmp ============================================================================== --- projects/sv/etc/rc.d/cleartmp Mon Sep 6 21:06:06 2010 (r212266) +++ projects/sv/etc/rc.d/cleartmp Mon Sep 6 21:06:11 2010 (r212267) @@ -36,7 +36,10 @@ cleartmp_start() # it can prevent foot-shooting in future. # + /tmp/lost+found is preserved, but its contents are removed. # + lost+found and quota.* in subdirectories are removed. + # + .sujournal and .snap are preserved. find -x ${tmp}/. ! -name . \ + ! \( -name .sujournal -type f -user root \) \ + ! \( -name .snap -type d -user root \) \ ! \( -name lost+found -type d -user root \) \ ! \( \( -name quota.user -or -name quota.group \) \ -type f -user root \) \ Modified: projects/sv/games/fortune/datfiles/fortunes ============================================================================== --- projects/sv/games/fortune/datfiles/fortunes Mon Sep 6 21:06:06 2010 (r212266) +++ projects/sv/games/fortune/datfiles/fortunes Mon Sep 6 21:06:11 2010 (r212267) @@ -45221,7 +45221,7 @@ of their own homes. 1: P-Q4, Kt-KB3 2: Kt-Q2, P-K4 3: PxP, Kt-Kt5 - 4: P-K6, Kt-K6/ + 4: P-KR3, Kt-K6/ White then resigns on realizing that a fifth move would involve either a Q-KR5 check or the loss of his queen. -- Stephen Pile, "The Book of Heroic Failures" Modified: projects/sv/gnu/lib/libgomp/Makefile ============================================================================== --- projects/sv/gnu/lib/libgomp/Makefile Mon Sep 6 21:06:06 2010 (r212266) +++ projects/sv/gnu/lib/libgomp/Makefile Mon Sep 6 21:06:11 2010 (r212267) @@ -24,7 +24,7 @@ VERSION_MAP= ${SRCDIR}/libgomp.map # Target-specific OpenMP configuration .if ${MACHINE_CPUARCH} == arm || ${MACHINE_CPUARCH} == i386 || \ - ${MACHINE_CPUARCH} == powerpc || \ + ${MACHINE_ARCH} == powerpc || \ (${MACHINE_CPUARCH} == mips && \ (!defined(TARGET_ABI) || ${TARGET_ABI} != "n64")) OMP_LOCK_ALIGN = 4 Modified: projects/sv/gnu/lib/libobjc/Makefile ============================================================================== --- projects/sv/gnu/lib/libobjc/Makefile Mon Sep 6 21:06:06 2010 (r212266) +++ projects/sv/gnu/lib/libobjc/Makefile Mon Sep 6 21:06:11 2010 (r212267) @@ -16,7 +16,9 @@ SRCS= archive.c class.c encoding.c gc.c selector.c sendmsg.c thr.c thr-objc.c exception.c # XXX: clang cannot compile libobjc yet -CC:=${CC:C/^cc|^clang/gcc/} +.if ${CC:T:Mclang} == "clang" +CC=gcc +.endif INCS= encoding.h hash.h objc-api.h objc-decls.h objc-list.h objc.h runtime.h \ sarray.h thr.h typedstream.h NXConstStr.h Object.h Protocol.h Modified: projects/sv/include/limits.h ============================================================================== --- projects/sv/include/limits.h Mon Sep 6 21:06:06 2010 (r212266) +++ projects/sv/include/limits.h Mon Sep 6 21:06:11 2010 (r212267) @@ -70,7 +70,7 @@ #endif #if __POSIX_VISIBLE >= 199309 -#define _POSIX_AIO_LISTIO_MAX 16 +#define _POSIX_AIO_LISTIO_MAX 2 #define _POSIX_AIO_MAX 1 #define _POSIX_DELAYTIMER_MAX 32 #define _POSIX_MQ_OPEN_MAX 8 Modified: projects/sv/lib/Makefile ============================================================================== --- projects/sv/lib/Makefile Mon Sep 6 21:06:06 2010 (r212266) +++ projects/sv/lib/Makefile Mon Sep 6 21:06:11 2010 (r212267) @@ -114,8 +114,8 @@ SUBDIR= ${SUBDIR_ORDERED} \ .if exists(${.CURDIR}/csu/${MACHINE_ARCH}-elf) _csu=csu/${MACHINE_ARCH}-elf -.elif exists(${.CURDIR}/csu/${MACHINE_CPUARCH}-elf) -_csu=csu/${MACHINE_CPUARCH}-elf +.elif exists(${.CURDIR}/csu/${MACHINE_ARCH}) +_csu=csu/${MACHINE_ARCH} .elif exists(${.CURDIR}/csu/${MACHINE_CPUARCH}/Makefile) _csu=csu/${MACHINE_CPUARCH} .else Modified: projects/sv/lib/libc/Makefile ============================================================================== --- projects/sv/lib/libc/Makefile Mon Sep 6 21:06:06 2010 (r212266) +++ projects/sv/lib/libc/Makefile Mon Sep 6 21:06:11 2010 (r212267) @@ -5,10 +5,11 @@ SHLIBDIR?= /lib .include -# We have to special case powerpc and powerpc64, since they mostly have -# the same source implementation. libc is very different due to large -# ABI differences. -.if ${MACHINE_ARCH} == "powerpc" +# Pick the current architecture directory for libc. In general, this is +# named MACHINE_CPUARCH, but some ABIs are different enough to require +# their own libc, so allow a directory named MACHINE_ARCH to override this. + +.if exists(${.CURDIR}/${MACHINE_ARCH}) LIBC_ARCH=${MACHINE_ARCH} .else LIBC_ARCH=${MACHINE_CPUARCH} Modified: projects/sv/lib/libc/net/ethers.3 ============================================================================== --- projects/sv/lib/libc/net/ethers.3 Mon Sep 6 21:06:06 2010 (r212266) +++ projects/sv/lib/libc/net/ethers.3 Mon Sep 6 21:06:11 2010 (r212267) @@ -189,7 +189,7 @@ unable to find a match in the .Pa /etc/ethers database. .Sh NOTES -The user must insure that the hostname strings passed to the +The user must ensure that the hostname strings passed to the .Fn ether_line , .Fn ether_ntohost and Modified: projects/sv/lib/libc/net/eui64.3 ============================================================================== --- projects/sv/lib/libc/net/eui64.3 Mon Sep 6 21:06:06 2010 (r212266) +++ projects/sv/lib/libc/net/eui64.3 Mon Sep 6 21:06:11 2010 (r212267) @@ -189,7 +189,7 @@ unable to find a match in the .Pa /etc/eui64 database. .Sh NOTES -The user must insure that the hostname strings passed to the +The user must ensure that the hostname strings passed to the .\" .Fn eui64_line , .Fn eui64_ntohost and Modified: projects/sv/lib/libc/net/sctp_send.3 ============================================================================== --- projects/sv/lib/libc/net/sctp_send.3 Mon Sep 6 21:06:06 2010 (r212266) +++ projects/sv/lib/libc/net/sctp_send.3 Mon Sep 6 21:06:11 2010 (r212267) @@ -191,7 +191,7 @@ If that many milliseconds elapse and the peer has not acknowledged the data, the data will be skipped and no longer transmitted. Note that this policy does -not even assure that the data will ever be sent. +not even ensure that the data will ever be sent. In times of a congestion with large amounts of data being queued, the .Fa sinfo->sinfo_timetolive @@ -218,7 +218,7 @@ policy transforms the .Fa sinfo->sinfo_timetolive into a number of retransmissions to allow. This policy -always assures that at a minimum one send attempt is +always ensures that at a minimum one send attempt is made of the data. After which no more than .Fa sinfo->sinfo_timetolive Modified: projects/sv/lib/libc/net/sctp_sendmsg.3 ============================================================================== --- projects/sv/lib/libc/net/sctp_sendmsg.3 Mon Sep 6 21:06:06 2010 (r212266) +++ projects/sv/lib/libc/net/sctp_sendmsg.3 Mon Sep 6 21:06:11 2010 (r212267) @@ -203,7 +203,7 @@ If that many milliseconds elapse and the peer has not acknowledged the data, the data will be skipped and no longer transmitted. Note that this policy does -not even assure that the data will ever be sent. +not even ensure that the data will ever be sent. In times of a congestion with large amounts of data being queued, the .Fa timetolive @@ -230,7 +230,7 @@ policy transforms the .Fa timetolive into a number of retransmissions to allow. This policy -always assures that at a minimum one send attempt is +always ensures that at a minimum one send attempt is made of the data. After which no more than .Fa timetolive Modified: projects/sv/lib/libc/stdio/printf.3 ============================================================================== --- projects/sv/lib/libc/stdio/printf.3 Mon Sep 6 21:06:06 2010 (r212266) +++ projects/sv/lib/libc/stdio/printf.3 Mon Sep 6 21:06:11 2010 (r212267) @@ -849,7 +849,7 @@ and .Fn vsprintf assume an infinitely long string, callers must be careful not to overflow the actual space; -this is often hard to assure. +this is often hard to ensure. For safety, programmers should use the .Fn snprintf interface instead. Modified: projects/sv/lib/libc/stdlib/atexit.c ============================================================================== --- projects/sv/lib/libc/stdlib/atexit.c Mon Sep 6 21:06:06 2010 (r212266) +++ projects/sv/lib/libc/stdlib/atexit.c Mon Sep 6 21:06:11 2010 (r212267) @@ -200,6 +200,6 @@ __cxa_finalize(void *dso) if (dso == NULL) _MUTEX_DESTROY(&atexit_mutex); - if (&__pthread_cxa_finalize != NULL) + if (has_phdr && &__pthread_cxa_finalize != NULL) __pthread_cxa_finalize(&phdr_info); } Modified: projects/sv/lib/libc/stdlib/malloc.3 ============================================================================== --- projects/sv/lib/libc/stdlib/malloc.3 Mon Sep 6 21:06:06 2010 (r212266) +++ projects/sv/lib/libc/stdlib/malloc.3 Mon Sep 6 21:06:11 2010 (r212267) @@ -266,7 +266,7 @@ options are enabled, the allocator prefe but allocation only fails if memory cannot be acquired via either method. If neither option is enabled, then the .Dq M -option is implicitly enabled in order to assure that there is a method for +option is implicitly enabled in order to ensure that there is a method for acquiring memory. .It N Double/halve the number of arenas. @@ -437,7 +437,7 @@ rounded up to the nearest multiple of th .Pp Allocations are packed tightly together, which can be an issue for multi-threaded applications. -If you need to assure that allocations do not suffer from cacheline sharing, +If you need to ensure that allocations do not suffer from cacheline sharing, round your allocation requests up to the nearest multiple of the cacheline size. .Sh DEBUGGING MALLOC PROBLEMS Modified: projects/sv/lib/libc/sys/mmap.2 ============================================================================== --- projects/sv/lib/libc/sys/mmap.2 Mon Sep 6 21:06:06 2010 (r212266) +++ projects/sv/lib/libc/sys/mmap.2 Mon Sep 6 21:06:11 2010 (r212267) @@ -28,7 +28,7 @@ .\" @(#)mmap.2 8.4 (Berkeley) 5/11/95 .\" $FreeBSD$ .\" -.Dd November 6, 2009 +.Dd August 28, 2010 .Dt MMAP 2 .Os .Sh NAME @@ -211,6 +211,19 @@ implements a coherent file system buffer However, it may be used to associate dirty VM pages with file system buffers and thus cause them to be flushed to physical media sooner rather than later. +.It Dv MAP_PREFAULT_READ +Immediately update the calling process's lowest-level virtual address +translation structures, such as its page table, so that every memory +resident page within the region is mapped for read access. +Ordinarily these structures are updated lazily. +The effect of this option is to eliminate any soft faults that would +otherwise occur on the initial read accesses to the region. +Although this option does not preclude +.Fa prot +from including +.Dv PROT_WRITE , +it does not eliminate soft faults on the initial write accesses to the +region. .It Dv MAP_PRIVATE Modifications are private. .It Dv MAP_SHARED Modified: projects/sv/lib/libc/sys/semop.2 ============================================================================== --- projects/sv/lib/libc/sys/semop.2 Mon Sep 6 21:06:06 2010 (r212266) +++ projects/sv/lib/libc/sys/semop.2 Mon Sep 6 21:06:11 2010 (r212267) @@ -222,7 +222,7 @@ When a process exits, either voluntarily or involuntarily, the adjust on exit value for each semaphore is added to the semaphore's value. This can -be used to insure that a resource is released if a process terminates +be used to ensure that a resource is released if a process terminates unexpectedly. .Sh RETURN VALUES .Rv -std semop Modified: projects/sv/lib/libc/sys/sigaltstack.2 ============================================================================== --- projects/sv/lib/libc/sys/sigaltstack.2 Mon Sep 6 21:06:06 2010 (r212266) +++ projects/sv/lib/libc/sys/sigaltstack.2 Mon Sep 6 21:06:11 2010 (r212267) @@ -104,7 +104,7 @@ if ((sigstk.ss_sp = malloc(SIGSTKSZ)) == /* error return */ sigstk.ss_size = SIGSTKSZ; sigstk.ss_flags = 0; -if (sigaltstack(&sigstk,0) < 0) +if (sigaltstack(&sigstk, NULL) < 0) perror("sigaltstack"); .Ed An alternative approach is provided for programs with signal handlers Modified: projects/sv/lib/libedit/common.c ============================================================================== --- projects/sv/lib/libedit/common.c Mon Sep 6 21:06:06 2010 (r212266) +++ projects/sv/lib/libedit/common.c Mon Sep 6 21:06:11 2010 (r212267) @@ -163,15 +163,12 @@ ed_delete_next_char(EditLine *el, int c) return (CC_ERROR); #endif } - } else { - if (el->el_line.cursor != el->el_line.buffer) - el->el_line.cursor--; - else - return (CC_ERROR); - } + } else + return (CC_ERROR); } c_delafter(el, el->el_state.argument); /* delete after dot */ - if (el->el_line.cursor >= el->el_line.lastchar && + if (el->el_map.type == MAP_VI && + el->el_line.cursor >= el->el_line.lastchar && el->el_line.cursor > el->el_line.buffer) /* bounds check */ el->el_line.cursor = el->el_line.lastchar - 1; Modified: projects/sv/lib/libedit/term.c ============================================================================== --- projects/sv/lib/libedit/term.c Mon Sep 6 21:06:06 2010 (r212266) +++ projects/sv/lib/libedit/term.c Mon Sep 6 21:06:11 2010 (r212267) @@ -223,7 +223,9 @@ private const struct termcapstr { { "kh", "send cursor home" }, #define T_at7 37 { "@7", "send cursor end" }, -#define T_str 38 +#define T_kD 38 + { "kD", "send cursor delete" }, +#define T_str 39 { NULL, NULL } }; @@ -1062,6 +1064,11 @@ term_init_arrow(EditLine *el) arrow[A_K_EN].key = T_at7; arrow[A_K_EN].fun.cmd = ED_MOVE_TO_END; arrow[A_K_EN].type = XK_CMD; + + arrow[A_K_DE].name = "delete"; + arrow[A_K_DE].key = T_kD; + arrow[A_K_DE].fun.cmd = ED_DELETE_NEXT_CHAR; + arrow[A_K_DE].type = XK_CMD; } Modified: projects/sv/lib/libedit/term.h ============================================================================== --- projects/sv/lib/libedit/term.h Mon Sep 6 21:06:06 2010 (r212266) +++ projects/sv/lib/libedit/term.h Mon Sep 6 21:06:11 2010 (r212267) @@ -79,7 +79,8 @@ typedef struct { #define A_K_RT 3 #define A_K_HO 4 #define A_K_EN 5 -#define A_K_NKEYS 6 +#define A_K_DE 6 +#define A_K_NKEYS 7 protected void term_move_to_line(EditLine *, int); protected void term_move_to_char(EditLine *, int); Modified: projects/sv/lib/libipx/ipx.3 ============================================================================== --- projects/sv/lib/libipx/ipx.3 Mon Sep 6 21:06:06 2010 (r212266) +++ projects/sv/lib/libipx/ipx.3 Mon Sep 6 21:06:11 2010 (r212267) @@ -70,7 +70,7 @@ trailing .Ql H appended. .Pp -An effort has been made to insure that +An effort has been made to ensure that .Fn ipx_addr be compatible with most formats in common use. It will first separate an address into 1 to 3 fields using a single delimiter Modified: projects/sv/lib/libjail/jail.3 ============================================================================== --- projects/sv/lib/libjail/jail.3 Mon Sep 6 21:06:06 2010 (r212266) +++ projects/sv/lib/libjail/jail.3 Mon Sep 6 21:06:11 2010 (r212267) @@ -24,7 +24,7 @@ .\" .\" $FreeBSD$ .\" -.Dd June 24, 2009 +.Dd August 31, 2010 .Dt JAIL 3 .Os .Sh NAME @@ -248,6 +248,8 @@ jailparam_init(¶ms[1], "host.hostnam jailparam_get(params, 2, 0); hostname = jailparam_export(¶ms[1]); jailparam_free(params, 2); +... +free(hostname); .Ed .Sh ERRORS The Modified: projects/sv/lib/libjail/jail.c ============================================================================== --- projects/sv/lib/libjail/jail.c Mon Sep 6 21:06:06 2010 (r212266) +++ projects/sv/lib/libjail/jail.c Mon Sep 6 21:06:11 2010 (r212267) @@ -719,6 +719,7 @@ jailparam_get(struct jailparam *jp, unsi char * jailparam_export(struct jailparam *jp) { + size_t *valuelens; char *value, *tvalue, **values; size_t valuelen; int i, nval, ival; @@ -740,6 +741,7 @@ jailparam_export(struct jailparam *jp) *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@FreeBSD.ORG Tue Sep 7 14:43:43 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 14E0B10656A7; Tue, 7 Sep 2010 14:43:43 +0000 (UTC) (envelope-from attilio@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 04D3A8FC08; Tue, 7 Sep 2010 14:43:43 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o87EhgUc002860; Tue, 7 Sep 2010 14:43:42 GMT (envelope-from attilio@svn.freebsd.org) Received: (from attilio@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o87EhgpI002858; Tue, 7 Sep 2010 14:43:42 GMT (envelope-from attilio@svn.freebsd.org) Message-Id: <201009071443.o87EhgpI002858@svn.freebsd.org> From: Attilio Rao Date: Tue, 7 Sep 2010 14:43:42 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r212294 - projects/sv/sys/net X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 07 Sep 2010 14:43:43 -0000 Author: attilio Date: Tue Sep 7 14:43:42 2010 New Revision: 212294 URL: http://svn.freebsd.org/changeset/base/212294 Log: Remove wrong occurrence of not existing DF_NET and use NIL mediasize and mediaoffset. Modified: projects/sv/sys/net/netdump_client.c Modified: projects/sv/sys/net/netdump_client.c ============================================================================== --- projects/sv/sys/net/netdump_client.c Tue Sep 7 14:29:45 2010 (r212293) +++ projects/sv/sys/net/netdump_client.c Tue Sep 7 14:43:42 2010 (r212294) @@ -1222,7 +1222,8 @@ netdump_trigger(void *arg, int howto) dumper.dumper = netdump_dumper; dumper.priv = NULL; dumper.blocksize = NETDUMP_DATASIZE; - dumper.flags = DF_NET; + dumper.mediasize = 0; + dumper.mediaoffset = 0; /* in dump_machdep.c */ dumpsys(&dumper); From owner-svn-src-projects@FreeBSD.ORG Tue Sep 7 15:23:01 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7726810656B6; Tue, 7 Sep 2010 15:23:01 +0000 (UTC) (envelope-from attilio@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 64DFA8FC1E; Tue, 7 Sep 2010 15:23:01 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o87FN1Ko004207; Tue, 7 Sep 2010 15:23:01 GMT (envelope-from attilio@svn.freebsd.org) Received: (from attilio@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o87FN1TA004197; Tue, 7 Sep 2010 15:23:01 GMT (envelope-from attilio@svn.freebsd.org) Message-Id: <201009071523.o87FN1TA004197@svn.freebsd.org> From: Attilio Rao Date: Tue, 7 Sep 2010 15:23:01 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r212295 - in projects/sv/sys: amd64/amd64 arm/arm i386/i386 ia64/ia64 sparc64/sparc64 sun4v/sun4v X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 07 Sep 2010 15:23:01 -0000 Author: attilio Date: Tue Sep 7 15:23:00 2010 New Revision: 212295 URL: http://svn.freebsd.org/changeset/base/212295 Log: If the upper bound is 0 the dumping mechanism will not use disks thus set dumplo to 0. Side note: in future, dumpsys() may be further layered in order to be fully disk agnostic and splitted in several functions that can be used by other code (like an eventual netdumpsys()) for building easilly their own dumping function without taking disks into account at all. This is left as further refinement after netdump enters the tree, likely. Modified: projects/sv/sys/amd64/amd64/dump_machdep.c projects/sv/sys/amd64/amd64/minidump_machdep.c projects/sv/sys/arm/arm/dump_machdep.c projects/sv/sys/arm/arm/minidump_machdep.c projects/sv/sys/i386/i386/dump_machdep.c projects/sv/sys/i386/i386/minidump_machdep.c projects/sv/sys/ia64/ia64/dump_machdep.c projects/sv/sys/sparc64/sparc64/dump_machdep.c projects/sv/sys/sun4v/sun4v/dump_machdep.c Modified: projects/sv/sys/amd64/amd64/dump_machdep.c ============================================================================== --- projects/sv/sys/amd64/amd64/dump_machdep.c Tue Sep 7 14:43:42 2010 (r212294) +++ projects/sv/sys/amd64/amd64/dump_machdep.c Tue Sep 7 15:23:00 2010 (r212295) @@ -296,13 +296,20 @@ dumpsys(struct dumperinfo *di) dumpsize += fileofs; hdrgap = fileofs - DEV_ALIGN(hdrsz); - /* Determine dump offset on device. */ - if (di->mediasize < SIZEOF_METADATA + dumpsize + sizeof(kdh) * 2) { - error = ENOSPC; - goto fail; + /* If the upper bound is 0, dumper likely will not use disks. */ + if ((di->mediaoffset + di->mediasize) == 0) + dumplo = 0; + else { + + /* Determine dump offset on device. */ + if (di->mediasize < + SIZEOF_METADATA + dumpsize + sizeof(kdh) * 2) { + error = ENOSPC; + goto fail; + } + dumplo = di->mediaoffset + di->mediasize - dumpsize; + dumplo -= sizeof(kdh) * 2; } - dumplo = di->mediaoffset + di->mediasize - dumpsize; - dumplo -= sizeof(kdh) * 2; mkdumpheader(&kdh, KERNELDUMPMAGIC, KERNELDUMP_AMD64_VERSION, dumpsize, di->blocksize); Modified: projects/sv/sys/amd64/amd64/minidump_machdep.c ============================================================================== --- projects/sv/sys/amd64/amd64/minidump_machdep.c Tue Sep 7 14:43:42 2010 (r212294) +++ projects/sv/sys/amd64/amd64/minidump_machdep.c Tue Sep 7 15:23:00 2010 (r212295) @@ -242,13 +242,20 @@ minidumpsys(struct dumperinfo *di) } dumpsize += PAGE_SIZE; - /* Determine dump offset on device. */ - if (di->mediasize < SIZEOF_METADATA + dumpsize + sizeof(kdh) * 2) { - error = ENOSPC; - goto fail; + /* If the upper bound is 0, dumper likely will not use disks. */ + if ((di->mediaoffset + di->mediasize) == 0) + dumplo = 0; + else { + + /* Determine dump offset on device. */ + if (di->mediasize < + SIZEOF_METADATA + dumpsize + sizeof(kdh) * 2) { + error = ENOSPC; + goto fail; + } + dumplo = di->mediaoffset + di->mediasize - dumpsize; + dumplo -= sizeof(kdh) * 2; } - dumplo = di->mediaoffset + di->mediasize - dumpsize; - dumplo -= sizeof(kdh) * 2; progress = dumpsize; /* Initialize mdhdr */ Modified: projects/sv/sys/arm/arm/dump_machdep.c ============================================================================== --- projects/sv/sys/arm/arm/dump_machdep.c Tue Sep 7 14:43:42 2010 (r212294) +++ projects/sv/sys/arm/arm/dump_machdep.c Tue Sep 7 15:23:00 2010 (r212295) @@ -303,13 +303,20 @@ dumpsys(struct dumperinfo *di) dumpsize += fileofs; hdrgap = fileofs - DEV_ALIGN(hdrsz); - /* Determine dump offset on device. */ - if (di->mediasize < SIZEOF_METADATA + dumpsize + sizeof(kdh) * 2) { - error = ENOSPC; - goto fail; + /* If the upper bound is 0, dumper likely will not use disks. */ + if ((di->mediaoffset + di->mediasize) == 0) + dumplo = 0; + else { + + /* Determine dump offset on device. */ + if (di->mediasize < + SIZEOF_METADATA + dumpsize + sizeof(kdh) * 2) { + error = ENOSPC; + goto fail; + } + dumplo = di->mediaoffset + di->mediasize - dumpsize; + dumplo -= sizeof(kdh) * 2; } - dumplo = di->mediaoffset + di->mediasize - dumpsize; - dumplo -= sizeof(kdh) * 2; mkdumpheader(&kdh, KERNELDUMPMAGIC, KERNELDUMP_ARM_VERSION, dumpsize, di->blocksize); Modified: projects/sv/sys/arm/arm/minidump_machdep.c ============================================================================== --- projects/sv/sys/arm/arm/minidump_machdep.c Tue Sep 7 14:43:42 2010 (r212294) +++ projects/sv/sys/arm/arm/minidump_machdep.c Tue Sep 7 15:23:00 2010 (r212295) @@ -276,14 +276,21 @@ minidumpsys(struct dumperinfo *di) dumpsize += PAGE_SIZE; - /* Determine dump offset on device. */ - if (di->mediasize < SIZEOF_METADATA + dumpsize + sizeof(kdh) * 2) { - error = ENOSPC; - goto fail; - } + /* If the upper bound is 0, dumper likely will not use disks. */ + if ((di->mediaoffset + di->mediasize) == 0) + dumplo = 0; + else { + + /* Determine dump offset on device. */ + if (di->mediasize < + SIZEOF_METADATA + dumpsize + sizeof(kdh) * 2) { + error = ENOSPC; + goto fail; + } - dumplo = di->mediaoffset + di->mediasize - dumpsize; - dumplo -= sizeof(kdh) * 2; + dumplo = di->mediaoffset + di->mediasize - dumpsize; + dumplo -= sizeof(kdh) * 2; + } progress = dumpsize; /* Initialize mdhdr */ Modified: projects/sv/sys/i386/i386/dump_machdep.c ============================================================================== --- projects/sv/sys/i386/i386/dump_machdep.c Tue Sep 7 14:43:42 2010 (r212294) +++ projects/sv/sys/i386/i386/dump_machdep.c Tue Sep 7 15:23:00 2010 (r212295) @@ -296,13 +296,20 @@ dumpsys(struct dumperinfo *di) dumpsize += fileofs; hdrgap = fileofs - DEV_ALIGN(hdrsz); - /* Determine dump offset on device. */ - if (di->mediasize < SIZEOF_METADATA + dumpsize + sizeof(kdh) * 2) { - error = ENOSPC; - goto fail; + /* If the upper bound is 0, dumper likely will not use disks. */ + if ((di->mediaoffset + di->mediasize) == 0) + dumplo = 0; + else { + + /* Determine dump offset on device. */ + if (di->mediasize < + SIZEOF_METADATA + dumpsize + sizeof(kdh) * 2) { + error = ENOSPC; + goto fail; + } + dumplo = di->mediaoffset + di->mediasize - dumpsize; + dumplo -= sizeof(kdh) * 2; } - dumplo = di->mediaoffset + di->mediasize - dumpsize; - dumplo -= sizeof(kdh) * 2; mkdumpheader(&kdh, KERNELDUMPMAGIC, KERNELDUMP_I386_VERSION, dumpsize, di->blocksize); Modified: projects/sv/sys/i386/i386/minidump_machdep.c ============================================================================== --- projects/sv/sys/i386/i386/minidump_machdep.c Tue Sep 7 14:43:42 2010 (r212294) +++ projects/sv/sys/i386/i386/minidump_machdep.c Tue Sep 7 15:23:00 2010 (r212295) @@ -242,13 +242,19 @@ minidumpsys(struct dumperinfo *di) } dumpsize += PAGE_SIZE; - /* Determine dump offset on device. */ - if (di->mediasize < SIZEOF_METADATA + dumpsize + sizeof(kdh) * 2) { - error = ENOSPC; - goto fail; + if ((di->mediaoffset + di->mediasize) == 0) + dumplo = 0; + else { + + /* Determine dump offset on device. */ + if (di->mediasize < + SIZEOF_METADATA + dumpsize + sizeof(kdh) * 2) { + error = ENOSPC; + goto fail; + } + dumplo = di->mediaoffset + di->mediasize - dumpsize; + dumplo -= sizeof(kdh) * 2; } - dumplo = di->mediaoffset + di->mediasize - dumpsize; - dumplo -= sizeof(kdh) * 2; progress = dumpsize; /* Initialize mdhdr */ Modified: projects/sv/sys/ia64/ia64/dump_machdep.c ============================================================================== --- projects/sv/sys/ia64/ia64/dump_machdep.c Tue Sep 7 14:43:42 2010 (r212294) +++ projects/sv/sys/ia64/ia64/dump_machdep.c Tue Sep 7 15:23:00 2010 (r212295) @@ -231,13 +231,20 @@ dumpsys(struct dumperinfo *di) dumpsize += fileofs; hdrgap = fileofs - DEV_ALIGN(hdrsz); - /* Determine dump offset on device. */ - if (di->mediasize < SIZEOF_METADATA + dumpsize + sizeof(kdh) * 2) { - error = ENOSPC; - goto fail; + /* If the upper bound is 0, dumper likely will not use disks. */ + if ((di->mediaoffset + di->mediasize) == 0) + dumplo = 0; + else { + + /* Determine dump offset on device. */ + if (di->mediasize < + SIZEOF_METADATA + dumpsize + sizeof(kdh) * 2) { + error = ENOSPC; + goto fail; + } + dumplo = di->mediaoffset + di->mediasize - dumpsize; + dumplo -= sizeof(kdh) * 2; } - dumplo = di->mediaoffset + di->mediasize - dumpsize; - dumplo -= sizeof(kdh) * 2; mkdumpheader(&kdh, KERNELDUMPMAGIC, KERNELDUMP_IA64_VERSION, dumpsize, di->blocksize); Modified: projects/sv/sys/sparc64/sparc64/dump_machdep.c ============================================================================== --- projects/sv/sys/sparc64/sparc64/dump_machdep.c Tue Sep 7 14:43:42 2010 (r212294) +++ projects/sv/sys/sparc64/sparc64/dump_machdep.c Tue Sep 7 15:23:00 2010 (r212295) @@ -157,17 +157,22 @@ dumpsys(struct dumperinfo *di) DEV_BSIZE); size += hdrsize; - totsize = size + 2 * sizeof(kdh); - if (totsize > di->mediasize) { - printf("Insufficient space on device (need %ld, have %ld), " - "refusing to dump.\n", (long)totsize, - (long)di->mediasize); - error = ENOSPC; - goto fail; - } + /* If the upper bound is 0, dumper likely will not use disks. */ + if ((di->mediaoffset + di->mediasize) == 0) + dumplo = 0; + else { + totsize = size + 2 * sizeof(kdh); + if (totsize > di->mediasize) { + printf("Insufficient space on device (need %ld, " + "have %ld), refusing to dump.\n", (long)totsize, + (long)di->mediasize); + error = ENOSPC; + goto fail; + } - /* Determine dump offset on device. */ - dumplo = di->mediaoffset + di->mediasize - totsize; + /* Determine dump offset on device. */ + dumplo = di->mediaoffset + di->mediasize - totsize; + } mkdumpheader(&kdh, KERNELDUMPMAGIC, KERNELDUMP_SPARC64_VERSION, size, di->blocksize); Modified: projects/sv/sys/sun4v/sun4v/dump_machdep.c ============================================================================== --- projects/sv/sys/sun4v/sun4v/dump_machdep.c Tue Sep 7 14:43:42 2010 (r212294) +++ projects/sv/sys/sun4v/sun4v/dump_machdep.c Tue Sep 7 15:23:00 2010 (r212295) @@ -160,17 +160,22 @@ dumpsys(struct dumperinfo *di) DEV_BSIZE); size += hdrsize; - totsize = size + 2 * sizeof(kdh); - if (totsize > di->mediasize) { - printf("Insufficient space on device (need %ld, have %ld), " - "refusing to dump.\n", (long)totsize, - (long)di->mediasize); - error = ENOSPC; - goto fail; - } + /* If the upper bound is 0, dumper likely will not use disks. */ + if ((di->mediaoffset + di->mediasize) == 0) + dumplo = 0; + else { + totsize = size + 2 * sizeof(kdh); + if (totsize > di->mediasize) { + printf("Insufficient space on device (need %ld, " + "have %ld), refusing to dump.\n", (long)totsize, + (long)di->mediasize); + error = ENOSPC; + goto fail; + } - /* Determine dump offset on device. */ - dumplo = di->mediaoffset + di->mediasize - totsize; + /* Determine dump offset on device. */ + dumplo = di->mediaoffset + di->mediasize - totsize; + } mkdumpheader(&kdh, KERNELDUMPMAGIC, KERNELDUMP_SPARC64_VERSION, size, di->blocksize); From owner-svn-src-projects@FreeBSD.ORG Tue Sep 7 17:24:05 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9829310656DE; Tue, 7 Sep 2010 17:24:05 +0000 (UTC) (envelope-from attilio@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 863358FC12; Tue, 7 Sep 2010 17:24:05 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o87HO5ih008119; Tue, 7 Sep 2010 17:24:05 GMT (envelope-from attilio@svn.freebsd.org) Received: (from attilio@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o87HO5tM008117; Tue, 7 Sep 2010 17:24:05 GMT (envelope-from attilio@svn.freebsd.org) Message-Id: <201009071724.o87HO5tM008117@svn.freebsd.org> From: Attilio Rao Date: Tue, 7 Sep 2010 17:24:05 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r212297 - in projects/sv/sys: net netinet X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 07 Sep 2010 17:24:05 -0000 Author: attilio Date: Tue Sep 7 17:24:05 2010 New Revision: 212297 URL: http://svn.freebsd.org/changeset/base/212297 Log: Move the netdump file to sys/netinet/ rather than sys/net/ as it is mostly specific to TCP/IP suite. Added: projects/sv/sys/netinet/netdump_client.c - copied unchanged from r212294, projects/sv/sys/net/netdump_client.c Deleted: projects/sv/sys/net/netdump_client.c Copied: projects/sv/sys/netinet/netdump_client.c (from r212294, projects/sv/sys/net/netdump_client.c) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/sv/sys/netinet/netdump_client.c Tue Sep 7 17:24:05 2010 (r212297, copy of r212294, projects/sv/sys/net/netdump_client.c) @@ -0,0 +1,1349 @@ +/*- + * Copyright (c) 2005 Sandvine Incorporated. All rights reserved. + * Copyright (c) 2000 Darrell Anderson + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ +/* + * netdump_client.c + * FreeBSD kernel module supporting netdump network dumps. + * netdump_server must be running to accept client dumps. + * XXX: This should be split into machdep and non-machdep parts + * +*/ + +#include "opt_ddb.h" +#include "opt_device_polling.h" +#include "opt_netdump.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef DDB +#include +#endif + +#ifdef NETDUMP_DEBUG +#define NETDDEBUG(f, ...) printf((f), ## __VA_ARGS__) +#define NETDDEBUG_IF(i, f, ...) if_printf((i), (f), ## __VA_ARGS__) +#if NETDUMP_DEBUG > 1 +#define NETDDEBUGV(f, ...) printf((f), ## __VA_ARGS__) +#define NETDDEBUGV_IF(i, f, ...) if_printf((i), (f), ## __VA_ARGS__) +#else +#define NETDDEBUGV(f, ...) +#define NETDDEBUGV_IF(i, f, ...) +#endif +#else +#define NETDDEBUG(f, ...) +#define NETDDEBUG_IF(i, f, ...) +#define NETDDEBUGV(f, ...) +#define NETDDEBUGV_IF(i, f, ...) +#endif + +#define NETDUMP_BROKEN_STATE_BUFFER_SIZE (5 * sizeof(struct mtx)) + +static void nd_handle_arp(struct mbuf **mb); +static void nd_handle_ip(struct mbuf **mb); +static int netdump_arp_server(void); +static void netdump_config_defaults(void); +static int netdump_dumper(void *priv, void *virtual, + vm_offset_t physical, off_t offset, size_t length); +static int netdump_ether_output(struct mbuf *m, struct ifnet *ifp, + struct ether_addr dst, u_short etype); +static void netdump_mbuf_nop(void *ptr, void *opt_args); +static int netdump_modevent(module_t mod, int type, void *unused); +static void netdump_network_poll(void); +static void netdump_pkt_in(struct ifnet *ifp, struct mbuf *m); +static int netdump_send(uint32_t type, off_t offset, unsigned char *data, + uint32_t datalen); +static int netdump_send_arp(void); +static void netdump_trigger(void *arg, int howto); +static int netdump_udp_output(struct mbuf *m); + +#ifdef NETDUMP_DEBUG +static int sysctl_force_crash(SYSCTL_HANDLER_ARGS); +#endif +static int sysctl_ip(SYSCTL_HANDLER_ARGS); +static int sysctl_nic(SYSCTL_HANDLER_ARGS); + +static eventhandler_tag nd_tag = NULL; /* record of our shutdown event */ +static uint32_t nd_seqno = 1; /* current sequence number */ +static uint64_t rcvd_acks; /* flags for out of order acks */ +static int dump_failed, have_server_mac; +static uint16_t nd_server_port = NETDUMP_PORT; /* port to respond on */ +static unsigned char buf[MAXDUMPPGS*PAGE_SIZE]; /* Must be at least as big as + * the chunks dumpsys() gives + * us */ +static struct ether_addr nd_gw_mac; + +static int nd_enable = 0; /* if we should perform a network dump */ +static struct in_addr nd_server = {INADDR_ANY}; /* server address */ +static struct in_addr nd_client = {INADDR_ANY}; /* client (our) address */ +static struct in_addr nd_gw = {INADDR_ANY}; /* gw, if set */ +struct ifnet *nd_nic = NULL; +static int nd_polls=10000; /* Times to poll the NIC (0.5ms each poll) before + * assuming packetloss occurred: 5s by default */ +static int nd_retries=10; /* Times to retransmit lost packets */ + +/* + * [netdump_supported_nic] + * + * Checks for netdump support on a network interface + * + * Parameters: + * ifn The network interface that is being tested for support + * + * Returns: + * int 1 if the interface is supported, 0 if not + */ +static __inline int +netdump_supported_nic(struct ifnet *ifn) +{ + return ifn->if_netdump != NULL; +} + +/*- + * Sysctls specific code. + */ + +/* + * [sysctl_ip] + * + * sysctl handler to deal with converting a string sysctl to/from an in_addr + * + * Parameters: + * SYSCTL_HANDLER_ARGS + * - arg1 is a pointer to the struct in_addr holding the IP + * - arg2 is unused + * + * Returns: + * int see errno.h, 0 for success + */ +static int +sysctl_ip(SYSCTL_HANDLER_ARGS) +{ + struct in_addr addr; + char buf[INET_ADDRSTRLEN]; + int error; + int len=req->newlen - req->newidx; + + inet_ntoa_r(*(struct in_addr *)arg1, buf); + error = SYSCTL_OUT(req, buf, strlen(buf)+1); + + if (error || !req->newptr) + return error; + + if (len >= INET_ADDRSTRLEN) { + error = EINVAL; + } else { + error = SYSCTL_IN(req, buf, len); + buf[len]='\0'; + if (error) + return error; + if (!inet_aton(buf, &addr)) + return EINVAL; + *(struct in_addr *)arg1 = addr; + } + + return error; +} + +/* + * [sysctl_nic] + * + * sysctl handler to deal with converting a string sysctl to/from an interface + * + * Parameters: + * SYSCTL_HANDLER_ARGS + * - arg1 is a pointer to the struct ifnet to the interface + * - arg2 is the maximum string length (IFNAMSIZ) + * + * Returns: + * int see errno.h, 0 for success + */ +static int +sysctl_nic(SYSCTL_HANDLER_ARGS) +{ + struct ifnet *ifn; + char buf[arg2+1]; + int error; + int len; + + if (*(struct ifnet **)arg1) { + error = SYSCTL_OUT(req, + (*(struct ifnet **)arg1)->if_xname, + strlen((*(struct ifnet **)arg1)->if_xname)); + } else { + error = SYSCTL_OUT(req, "none", 5); + } + + if (error || !req->newptr) + return error; + + len = req->newlen - req->newidx; + if (len >= arg2) { + error = EINVAL; + } else { + error = SYSCTL_IN(req, buf, len); + buf[len]='\0'; + if (error) + return error; + + if (!strcmp(buf, "none")) { + ifn = NULL; + } else { + if ((ifn = TAILQ_FIRST(&ifnet)) != NULL) do { + if (!strcmp(ifn->if_xname, buf)) break; + } while ((ifn = TAILQ_NEXT(ifn, if_link)) != NULL); + + if (!ifn) return ENODEV; + if (!netdump_supported_nic(ifn)) return EINVAL; + } + + (*(struct ifnet **)arg1) = ifn; + } + + return error; +} + +#ifdef NETDUMP_DEBUG +static int +sysctl_force_crash(SYSCTL_HANDLER_ARGS) +{ + int error, force_crash; + + force_crash = 0; + error = sysctl_handle_int(oidp, &force_crash, force_crash, req); + if (error || req->newptr == NULL) + return error; + + switch (force_crash) { + case 1: + printf("\nLivelocking system...\n"); + for (;;); + break; + case 2: + printf("\nPanic'ing system...\n"); + panic("netdump forced crash"); + break; + case 3: + printf("\nLivelocking system while holding the " + "interface lock\n"); + nd_nic->if_netdump->test_get_lock(nd_nic); + for (;;); + break; + case 5: + critical_enter(); + panic("Forcing spourious critical section"); + break; + case 6: + critical_enter(); + printf("\nLivelocking in a critical section\n"); + for (;;); + default: + return EINVAL; + } + return 0; +} +#endif + +SYSCTL_NODE(_net, OID_AUTO, dump, CTLFLAG_RW, 0, "netdump"); +SYSCTL_PROC(_net_dump, OID_AUTO, server, CTLTYPE_STRING|CTLFLAG_RW, &nd_server, + 0, sysctl_ip, "A", "dump server"); +SYSCTL_PROC(_net_dump, OID_AUTO, client, CTLTYPE_STRING|CTLFLAG_RW, &nd_client, + 0, sysctl_ip, "A", "dump client"); +SYSCTL_PROC(_net_dump, OID_AUTO, gateway, CTLTYPE_STRING|CTLFLAG_RW, &nd_gw, + 0, sysctl_ip, "A", "dump default gateway"); +SYSCTL_PROC(_net_dump, OID_AUTO, nic, CTLTYPE_STRING|CTLFLAG_RW, &nd_nic, + IFNAMSIZ, sysctl_nic, "A", "NIC to dump on"); +SYSCTL_INT(_net_dump, OID_AUTO, polls, CTLTYPE_INT|CTLFLAG_RW, &nd_polls, 0, + "times to poll NIC per retry"); +SYSCTL_INT(_net_dump, OID_AUTO, retries, CTLTYPE_INT|CTLFLAG_RW, &nd_retries, 0, + "times to retransmit lost packets"); +SYSCTL_INT(_net_dump, OID_AUTO, enable, CTLTYPE_INT|CTLFLAG_RW, &nd_enable, + 0, "enable network dump"); +TUNABLE_INT("net.dump.enable", &nd_enable); +#ifdef NETDUMP_DEBUG +SYSCTL_DECL(_debug_netdump); +SYSCTL_PROC(_debug_netdump, OID_AUTO, crash, CTLTYPE_INT|CTLFLAG_RW, 0, + sizeof(int), sysctl_force_crash, "I", "force crashing"); +#endif + +/*- + * Network specific primitives. + * Following down the code they are divided ordered as: + * - Output primitives + * - Input primitives + * - Polling primitives + */ + +/* + * [netdump_mbuf_nop] + * + * netdump wraps external mbufs around address ranges. unlike most sane + * counterparts, netdump uses a stop-and-wait approach to flow control and + * retransmission, so the ack obviates the need for mbuf reference + * counting. we still need to tell other mbuf handlers not to do anything + * special with our mbufs, so specify this nop handler. + * + * Parameters: + * ptr data to free (ignored) + * opt_args callback pointer (ignored) + * + * Returns: + * void + */ +static void +netdump_mbuf_nop(void *ptr, void *opt_args) +{ + ; +} + +/* + * [netdump_ether_output] + * + * Handles creation of the ethernet header, then places outgoing packets into + * the tx buffer for the NIC + * + * Parameters: + * m The mbuf containing the packet to be sent (will be freed by + * this function or the NIC driver) + * ifp The interface to send on + * dst The destination ethernet address (source address will be looked + * up using ifp) + * etype The ETHERTYPE_* value for the protocol that is being sent + * + * Returns: + * int see errno.h, 0 for success + */ +static int +netdump_ether_output(struct mbuf *m, struct ifnet *ifp, struct ether_addr dst, + u_short etype) +{ + struct ether_header *eh; + + /* fill in the ethernet header */ + M_PREPEND(m, ETHER_HDR_LEN, M_DONTWAIT); + if (m == 0) { + printf("netdump_ether_output: Out of mbufs\n"); + return ENOBUFS; + } + eh = mtod(m, struct ether_header *); + bcopy(IF_LLADDR(ifp), eh->ether_shost, ETHER_ADDR_LEN); + bcopy(dst.octet, eh->ether_dhost, ETHER_ADDR_LEN); + eh->ether_type = htons(etype); + + if (((ifp->if_flags & (IFF_MONITOR|IFF_UP)) != IFF_UP) || + (ifp->if_drv_flags & IFF_DRV_RUNNING) != IFF_DRV_RUNNING) { + if_printf(ifp, "netdump_ether_output: Interface isn't up\n"); + m_freem(m); + return ENETDOWN; + } + + if (_IF_QFULL(&ifp->if_snd)) { + if_printf(ifp, "netdump_ether_output: TX queue full\n"); + m_freem(m); + return ENOBUFS; + } + + _IF_ENQUEUE(&ifp->if_snd, m); + return 0; +} + +/* + * [netdump_udp_output] + * + * unreliable transmission of an mbuf chain to the netdump server + * Note: can't handle fragmentation; fails if the packet is larger than + * nd_nic->if_mtu after adding the UDP/IP headers + * + * Parameters: + * m mbuf chain + * + * Returns: + * int see errno.h, 0 for success + */ +static int +netdump_udp_output(struct mbuf *m) +{ + struct udpiphdr *ui; + struct ip *ip; + + M_PREPEND(m, sizeof(struct udpiphdr), M_DONTWAIT); + if (m == 0) { + printf("netdump_udp_output: Out of mbufs\n"); + return ENOBUFS; + } + ui = mtod(m, struct udpiphdr *); + bzero(ui->ui_x1, sizeof(ui->ui_x1)); + ui->ui_pr = IPPROTO_UDP; + ui->ui_len = htons(m->m_pkthdr.len - sizeof(struct ip)); + ui->ui_ulen = ui->ui_len; + ui->ui_src = nd_client; + ui->ui_dst = nd_server; + /* Use this src port so that the server can connect() the socket */ + ui->ui_sport = htons(NETDUMP_ACKPORT); + ui->ui_dport = htons(nd_server_port); + ui->ui_sum = 0; + if ((ui->ui_sum = in_cksum(m, m->m_pkthdr.len)) == 0) + ui->ui_sum = 0xffff; + + ip = mtod(m, struct ip *); + ip->ip_v = IPVERSION; + ip->ip_hl = sizeof(struct ip) >> 2; + ip->ip_tos = 0; + ip->ip_len = htons(m->m_pkthdr.len); + ip->ip_id = 0; + ip->ip_off = htons(IP_DF); + ip->ip_ttl = 32; + ip->ip_sum = 0; + ip->ip_sum = in_cksum(m, sizeof(struct ip)); + + if (m->m_pkthdr.len > nd_nic->if_mtu) { + /* Whoops. The packet is too big. */ + printf("netdump_udp_output: Packet is too big: " + "%u > MTU %lu\n", m->m_pkthdr.len, nd_nic->if_mtu); + m_freem(m); + return ENOBUFS; + } + + return netdump_ether_output(m, nd_nic, nd_gw_mac, ETHERTYPE_IP); +} + +/* + * [netdump_send_arp] + * + * Builds and sends a single ARP request to locate the server + * + * Parameters: + * void + * + * Return value: + * 0 on success + * errno on error + */ +static int +netdump_send_arp() +{ + struct mbuf *m; + int pktlen = arphdr_len2(ETHER_ADDR_LEN, sizeof(struct in_addr)); + struct arphdr *ah; + struct ether_addr bcast; + + ETHER_SET_BROADCAST(&bcast); + + MGETHDR(m, M_DONTWAIT, MT_DATA); + if (m == NULL) { + printf("netdump_send_arp: Out of mbufs"); + return ENOBUFS; + } + m->m_pkthdr.len = m->m_len = pktlen; + MH_ALIGN(m, pktlen); /* Make room for ethernet header */ + ah = mtod(m, struct arphdr *); + ah->ar_hrd = htons(ARPHRD_ETHER); + ah->ar_pro = htons(ETHERTYPE_IP); + ah->ar_hln = ETHER_ADDR_LEN; + ah->ar_pln = sizeof(struct in_addr); + ah->ar_op = htons(ARPOP_REQUEST); + bcopy(IF_LLADDR(nd_nic), ar_sha(ah), ETHER_ADDR_LEN); + ((struct in_addr *)ar_spa(ah))->s_addr = nd_client.s_addr; + bzero(ar_tha(ah), ETHER_ADDR_LEN); + ((struct in_addr *)ar_tpa(ah))->s_addr = nd_gw.s_addr; + + return netdump_ether_output(m, nd_nic, bcast, ETHERTYPE_ARP); +} + +/* + * [netdump_arp_server] + * + * Sends ARP requests to locate the server and waits for a response + * + * Parameters: + * void + * + * Return value: + * 0 on success + * errno on error + */ +static int +netdump_arp_server() +{ + int err, polls, retries; + + for (retries=0; retries < nd_retries && !have_server_mac; retries++) { + err = netdump_send_arp(); + + if (err) + return err; + + for (polls=0; polls < nd_polls && !have_server_mac; polls++) { + netdump_network_poll(); + DELAY(500); /* 0.5 ms */ + } + + if (!have_server_mac) printf("(ARP retry)"); + } + + if (have_server_mac) + return 0; + + printf("\nARP timed out.\n"); + + return ETIMEDOUT; +} + +/* + * [netdump_send] + * + * construct and reliably send a netdump packet. may fail from a resource + * shortage or extreme number of unacknowledged retransmissions. wait for + * an acknowledgement before returning. splits packets into chunks small + * enough to be sent without fragmentation (looks up the interface MTU) + * + * Parameters: + * type netdump packet type (HERALD, FINISHED, or VMCORE) + * offset vmcore data offset (bytes) + * data vmcore data + * datalen vmcore data size (bytes) + * + * Returns: + * int see errno.h, 0 for success + */ +static int +netdump_send(uint32_t type, off_t offset, + unsigned char *data, uint32_t datalen) +{ + struct netdump_msg_hdr *nd_msg_hdr; + struct mbuf *m, *m2; + int retries = 0, polls, error; + uint32_t i, sent_so_far; + uint64_t want_acks=0; + + rcvd_acks = 0; + +retransmit: + /* We might get chunks too big to fit in packets. Yuck. */ + for (i=sent_so_far=0; sent_so_far < datalen || (i==0 && datalen==0); + i++) { + uint32_t pktlen = datalen-sent_so_far; + /* First bound: the packet structure */ + pktlen = min(pktlen, NETDUMP_DATASIZE); + /* Second bound: the interface MTU (assume no IP options) */ + pktlen = min(pktlen, nd_nic->if_mtu - + sizeof(struct udpiphdr) - + sizeof(struct netdump_msg_hdr)); + + /* Check if we're retransmitting and this has been ACKed + * already */ + if ((rcvd_acks & (1 << i)) != 0) { + sent_so_far += pktlen; + continue; + } + + /* + * get and fill a header mbuf, then chain data as an extended + * mbuf. + */ + MGETHDR(m, M_DONTWAIT, MT_DATA); + if (m == NULL) { + printf("netdump_send: Out of mbufs!\n"); + return ENOBUFS; + } + m->m_pkthdr.len = m->m_len = sizeof(struct netdump_msg_hdr); + /* leave room for udpip */ + MH_ALIGN(m, sizeof(struct netdump_msg_hdr)); + nd_msg_hdr = mtod(m, struct netdump_msg_hdr *); + nd_msg_hdr->seqno = htonl(nd_seqno+i); + nd_msg_hdr->type = htonl(type); + nd_msg_hdr->offset = htonll(offset+sent_so_far); + nd_msg_hdr->len = htonl(pktlen); + nd_msg_hdr->_pad = 0; + + if (pktlen) { + if ((m2 = m_get(M_DONTWAIT, MT_DATA)) == NULL) { + m_freem(m); + printf("netdump_send: Out of mbufs!\n"); + return ENOBUFS; + } + MEXTADD(m2, data+sent_so_far, pktlen, netdump_mbuf_nop, + NULL, M_RDONLY, EXT_MOD_TYPE); + m2->m_len = pktlen; + m->m_next = m2; + m->m_pkthdr.len += m2->m_len; + } + + if ((error = netdump_udp_output(m)) != 0) { + return error; + } + + /* Note that we're waiting for this packet in the bitfield */ + want_acks |= 1 << i; + + sent_so_far += pktlen; + } + + if (i >= sizeof(want_acks)*8) { + printf("Warning: Sent more than %zd packets (%d). " + "Acknowledgements will fail unless the size of " + "rcvd_acks/want_acks is increased.\n", + sizeof(want_acks)*8, i); + } + + /* + * wait for acks. a *real* window would speed things up considerably. + */ + polls = 0; + while (rcvd_acks != want_acks) { + if (polls++ > nd_polls) { + if (retries++ > nd_retries) { + return ETIMEDOUT; /* 10 s, no ack */ + } + printf(". "); + goto retransmit; /* 1 s, no ack */ + } + /* + * this is not always necessary, but does no harm. + */ + netdump_network_poll(); + DELAY(500); /* 0.5 ms */ + } + nd_seqno += i; + return 0; +} + +/* + * [nd_handle_ip] + * + * Handler for IP packets: checks their sanity and then processes any netdump + * ACK packets it finds. + * + * It needs to replicate partially the behaviour of ip_input() and + * udp_input(). + * + * Parameters: + * mb a pointer to an mbuf * containing the packet received + * Updates *mb if m_pullup et al change the pointer + * Assumes the calling function will take care of freeing the mbuf + * + * Return value: + * void + */ +static void +nd_handle_ip(struct mbuf **mb) +{ + unsigned short hlen; + struct ip *ip; + struct udpiphdr *udp; + struct netdump_ack *nd_ack; + struct mbuf *m; + int rcv_ackno; + + /* IP processing */ + + NETDDEBUGV("nd_handle_ip: Processing IP packet...\n"); + + m = *mb; + if (m->m_pkthdr.len < sizeof(struct ip)) { + NETDDEBUG("nd_handle_ip: dropping packet too small for IP " + "header\n"); + return; + } + if (m->m_len < sizeof(struct ip) && + (*mb = m = m_pullup(m, sizeof(struct ip))) == NULL) { + NETDDEBUG("nd_handle_ip: m_pullup failed\n"); + return; + } + + ip = mtod(m, struct ip *); + + /* IP version */ + if (ip->ip_v != IPVERSION) { + NETDDEBUG("nd_handle_ip: Bad IP version %d\n", ip->ip_v); + return; + } + + /* Header length */ + hlen = ip->ip_hl << 2; + if (hlen < sizeof(struct ip)) { + NETDDEBUG("nd_handle_ip: Bad IP header length (%hu)\n", hlen); + return; + } + if (hlen > m->m_len) { + if ((*mb = m = m_pullup(m, hlen)) == NULL) { + NETDDEBUG("nd_handle_ip: m_pullup failed\n"); + return; + } + ip = mtod(m, struct ip *); + } + +#ifdef INVARIANTS + if (((ntohl(ip->ip_dst.s_addr) >> IN_CLASSA_NSHIFT) == IN_LOOPBACKNET || + (ntohl(ip->ip_src.s_addr) >> IN_CLASSA_NSHIFT) == IN_LOOPBACKNET) && + (m->m_pkthdr.rcvif->if_flags & IFF_LOOPBACK) == 0) { + NETDDEBUG("nd_handle_ip: Bad IP header (RFC1122)\n"); + return; + } +#endif + + /* Checksum */ + if (m->m_pkthdr.csum_flags & CSUM_IP_CHECKED) { + if (!(m->m_pkthdr.csum_flags & CSUM_IP_VALID)) { + NETDDEBUG("nd_handle_ip: Bad IP checksum\n"); + return; + } + } else + NETDDEBUG("nd_handle_ip: HW didn't check IP cksum\n"); + + /* Convert fields to host byte order */ + ip->ip_len = ntohs(ip->ip_len); + if (ip->ip_len < hlen) { + NETDDEBUG("nd_handle_ip: IP packet smaller (%hu) than " + "header (%hu)\n", ip->ip_len, hlen); + return; + } + ip->ip_off = ntohs(ip->ip_off); + + if (m->m_pkthdr.len < ip->ip_len) { + NETDDEBUG("nd_handle_ip: IP packet bigger (%hu) than " + "ethernet packet (%hu)\n", ip->ip_len, m->m_pkthdr.len); + return; + } + if (m->m_pkthdr.len > ip->ip_len) { + /* Truncate the packet to the IP length */ + if (m->m_len == m->m_pkthdr.len) { + m->m_len = ip->ip_len; + m->m_pkthdr.len = ip->ip_len; + } else + m_adj(m, ip->ip_len - m->m_pkthdr.len); + } + + /* We would process IP options here, but we'll ignore them instead. */ + /* Strip IP options */ + if (hlen > sizeof(struct ip)) { + ip_stripoptions(m, (struct mbuf *)0); + hlen = sizeof(struct ip); + } + + /* Check that the source is the server's IP */ + if (ip->ip_src.s_addr != nd_server.s_addr) { + NETDDEBUG("nd_handle_ip: Drop packet not from server\n"); + return; + } + + /* Check if the destination IP is ours */ + if (ip->ip_dst.s_addr != nd_client.s_addr) { + NETDDEBUGV("nd_handle_ip: Drop packet not to our IP\n"); + return; + } + + if (ip->ip_p != IPPROTO_UDP) { + NETDDEBUG("nd_handle_ip: Drop non-UDP packet\n"); + return; + } + + /* Let's not deal with fragments */ + if (ip->ip_off & (IP_MF | IP_OFFMASK)) { + NETDDEBUG("nd_handle_ip: Drop fragmented packet\n"); + return; + } + /* UDP custom is to have packet length not include IP header */ + ip->ip_len -= hlen; + + /* IP done */ + /* UDP processing */ + + /* Get IP and UDP headers together, along with the netdump packet */ + if (m->m_pkthdr.len < + sizeof(struct udpiphdr) + sizeof(struct netdump_ack)) { + NETDDEBUG("nd_handle_ip: Ignoring small packet\n"); + return; + } + if (m->m_len < sizeof(struct udpiphdr) + sizeof(struct netdump_ack) && + (*mb = m = m_pullup(m, sizeof(struct udpiphdr) + + sizeof(struct netdump_ack))) == NULL) { + NETDDEBUG("nd_handle_ip: m_pullup failed\n"); + return; + } + udp = mtod(m, struct udpiphdr *); + + NETDDEBUG("nd_handle_ip: Processing packet..."); + + if (ntohs(udp->ui_u.uh_dport) != NETDUMP_ACKPORT) { + NETDDEBUG("not on the netdump port.\n"); + return; + } + + /* UDP done */ + /* Netdump processing */ + + /* + * packet is meant for us. extract the ack sequence number. + * if it's the first ack, extract the port number as well + */ + nd_ack = (struct netdump_ack *) + (mtod(m, caddr_t) + sizeof(struct udpiphdr)); + rcv_ackno = ntohl(nd_ack->seqno); + + if (nd_server_port == NETDUMP_PORT) { + nd_server_port = ntohs(udp->ui_u.uh_sport); + } + + if (rcv_ackno >= nd_seqno+64) { + printf("nd_handle_ip: ACK %d too far in future!\n", rcv_ackno); + } else if (rcv_ackno < nd_seqno) { + /* Do nothing: A duplicated past ACK */ + } else { + /* We're interested in this ack. Record it. */ + rcvd_acks |= 1 << (rcv_ackno-nd_seqno); + } +} + +/* + * [nd_handle_arp] + * + * Handler for ARP packets: checks their sanity and then + * 1. If the ARP is a request for our IP, respond with our MAC address + * 2. If the ARP is a response from our server, record its MAC address + * + * It needs to replicate partially the behaviour of arpintr() and + * in_arpinput(). + * + * Parameters: + * mb a pointer to an mbuf * containing the packet received + * Updates *mb if m_pullup et al change the pointer + * Assumes the calling function will take care of freeing the mbuf + * + * Return value: + * void + */ +static void +nd_handle_arp(struct mbuf **mb) +{ + struct mbuf *m; + struct arphdr *ah; + struct ifnet *ifp; + int req_len, op; + struct in_addr isaddr, itaddr, myaddr; + uint8_t *enaddr; + struct ether_addr dst; + + m = *mb; + ifp = m->m_pkthdr.rcvif; + if (m->m_len < sizeof(struct arphdr) && ((*mb = m = m_pullup(m, + sizeof(struct arphdr))) == NULL)) { + NETDDEBUG("nd_handle_arp: runt packet: m_pullup failed\n"); + return; + } + ah = mtod(m, struct arphdr *); + + if (ntohs(ah->ar_hrd) != ARPHRD_ETHER && + ntohs(ar->ar_hrd) != ARPHRD_IEEE802 && + ntohs(ar->ar_hrd) != ARPHRD_ARCNET && + ntohs(ar->ar_hrd) != ARPHRD_IEEE1394) { + NETDDEBUG("nd_handle_arp: unknown hardware address fmt " + "0x%2D)\n", (unsigned char *)&ah->ar_hrd, ""); + return; + } + + if (ntohs(ah->ar_pro) != ETHERTYPE_IP) { + NETDDEBUG("nd_handle_arp: Drop ARP for unknown " + "protocol %d\n", ntohs(ah->ar_pro)); + return; + } + + req_len = arphdr_len2(ifp->if_addrlen, sizeof(struct in_addr)); + if (m->m_len < req_len && (*mb = m = m_pullup(m, req_len)) == NULL) { + NETDDEBUG("nd_handle_arp: runt packet: m_pullup failed\n"); + return; + } + ah = mtod(m, struct arphdr *); + + op = ntohs(ah->ar_op); + bcopy(ar_spa(ah), &isaddr, sizeof(isaddr)); + bcopy(ar_tpa(ah), &itaddr, sizeof(itaddr)); + enaddr = (uint8_t *)IF_LLADDR(ifp); + myaddr = nd_client; + + if (!bcmp(ar_sha(ah), enaddr, ifp->if_addrlen)) { + NETDDEBUG("nd_handle_arp: ignoring ARP from myself\n"); + return; + } + +#ifdef INVARIANTS + if (!bcmp(ar_sha(ah), ifp->if_broadcastaddr, ifp->if_addrlen)) { + NETDDEBUG("nd_handle_arp: ignoring ARP as link address is " + "broadcast.\n"); + return; + } +#endif + + if (isaddr.s_addr == nd_client.s_addr) { + printf("nd_handle_arp: %*D is using my IP address %s!\n", + ifp->if_addrlen, (u_char *)ar_sha(ah), ":", + inet_ntoa(isaddr)); + return; + } + + if (!bcmp(ar_sha(ah), ifp->if_broadcastaddr, ifp->if_addrlen)) { + NETDDEBUG("nd_handle_arp: ignoring ARP from broadcast " + "address\n"); + return; + } + + if (op == ARPOP_REPLY) { + if (isaddr.s_addr != nd_gw.s_addr) { + char buf[INET_ADDRSTRLEN]; + inet_ntoa_r(isaddr, buf); + NETDDEBUG("nd_handle_arp: ignoring ARP reply from " + "%s (not netdump server)\n", buf); + return; + } + bcopy(ar_sha(ah), nd_gw_mac.octet, + min(ah->ar_hln, ETHER_ADDR_LEN)); + have_server_mac = 1; + NETDDEBUG("\nnd_handle_arp: Got server MAC address %6D\n", + nd_gw_mac.octet, ":"); + return; + } + + if (op != ARPOP_REQUEST) { + NETDDEBUG("nd_handle_arp: Ignoring non-request/non-reply " + "ARP\n"); + return; + } + + if (itaddr.s_addr != nd_client.s_addr) { + NETDDEBUG("nd_handle_arp: ignoring ARP not to our IP\n"); + return; + } + + bcopy(ar_sha(ah), ar_tha(ah), ah->ar_hln); + bcopy(enaddr, ar_sha(ah), ah->ar_hln); + bcopy(ar_spa(ah), ar_tpa(ah), ah->ar_pln); + bcopy(&itaddr, ar_spa(ah), ah->ar_pln); + ah->ar_op = htons(ARPOP_REPLY); + ah->ar_pro = htons(ETHERTYPE_IP); /* let's be sure! */ + m->m_flags &= ~(M_BCAST|M_MCAST); /* never reply by broadcast */ + m->m_len = sizeof(*ah) + (2 * ah->ar_pln) + (2 * ah->ar_hln); + m->m_pkthdr.len = m->m_len; + + bcopy(dst.octet, ar_tha(ah), ETHER_ADDR_LEN); + netdump_ether_output(m, ifp, dst, ETHERTYPE_ARP); + *mb = NULL; /* Don't m_free upon return */ +} + +/* + * [netdump_pkt_in] + * + * Handler for incoming packets directly from the network adapter *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@FreeBSD.ORG Tue Sep 7 17:51:24 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 529E810656CA; Tue, 7 Sep 2010 17:51:24 +0000 (UTC) (envelope-from attilio@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 27D0B8FC0C; Tue, 7 Sep 2010 17:51:24 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o87HpOM2011120; Tue, 7 Sep 2010 17:51:24 GMT (envelope-from attilio@svn.freebsd.org) Received: (from attilio@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o87HpOJk011117; Tue, 7 Sep 2010 17:51:24 GMT (envelope-from attilio@svn.freebsd.org) Message-Id: <201009071751.o87HpOJk011117@svn.freebsd.org> From: Attilio Rao Date: Tue, 7 Sep 2010 17:51:24 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r212298 - in projects/sv/sys: net netinet X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 07 Sep 2010 17:51:24 -0000 Author: attilio Date: Tue Sep 7 17:51:23 2010 New Revision: 212298 URL: http://svn.freebsd.org/changeset/base/212298 Log: Add the possibility to specify, in drivers, nethdump virtual methods that will be used by the netdump for carrying on interface polling and testing. ASAP, will be offered an implementation for if_em and if_ixgb. Modified: projects/sv/sys/net/if_var.h projects/sv/sys/netinet/netdump_client.c Modified: projects/sv/sys/net/if_var.h ============================================================================== --- projects/sv/sys/net/if_var.h Tue Sep 7 17:24:05 2010 (r212297) +++ projects/sv/sys/net/if_var.h Tue Sep 7 17:51:23 2010 (r212298) @@ -72,6 +72,7 @@ struct carp_if; struct ifvlantrunk; struct route; struct vnet; +struct netdump_methods; #endif #include /* get TAILQ macros */ @@ -195,6 +196,7 @@ struct ifnet { /* protected by if_addr_mtx */ void *if_pf_kif; void *if_lagg; /* lagg glue */ + struct netdump_methods *if_ndumpfuncs; /* netdump virtual methods */ u_char if_alloctype; /* if_type at time of allocation */ /* @@ -204,7 +206,7 @@ struct ifnet { */ char if_cspare[3]; char *if_description; /* interface description */ - void *if_pspare[7]; + void *if_pspare[6]; int if_ispare[4]; }; Modified: projects/sv/sys/netinet/netdump_client.c ============================================================================== --- projects/sv/sys/netinet/netdump_client.c Tue Sep 7 17:24:05 2010 (r212297) +++ projects/sv/sys/netinet/netdump_client.c Tue Sep 7 17:51:23 2010 (r212298) @@ -158,7 +158,7 @@ static int nd_retries=10; /* Times to re static __inline int netdump_supported_nic(struct ifnet *ifn) { - return ifn->if_netdump != NULL; + return ifn->if_ndumpfuncs != NULL; } /*- @@ -288,7 +288,7 @@ sysctl_force_crash(SYSCTL_HANDLER_ARGS) case 3: printf("\nLivelocking system while holding the " "interface lock\n"); - nd_nic->if_netdump->test_get_lock(nd_nic); + nd_nic->if_ndumpfuncs->test_get_lock(nd_nic); for (;;); break; case 5: @@ -1075,7 +1075,7 @@ done: static void netdump_network_poll() { - nd_nic->if_netdump->poll_locked(nd_nic, POLL_AND_CHECK_STATUS, 1000); + nd_nic->if_ndumpfuncs->poll_locked(nd_nic, POLL_AND_CHECK_STATUS, 1000); } /*- @@ -1186,7 +1186,7 @@ netdump_trigger(void *arg, int howto) dumping++; if (panicstr == NULL) - nd_nic->if_netdump->acquire_lock(nd_nic); + nd_nic->if_ndumpfuncs->acquire_lock(nd_nic); /* Make the card use *our* receive callback */ old_if_input = nd_nic->if_input; @@ -1244,7 +1244,7 @@ trig_abort: if (old_if_input) nd_nic->if_input = old_if_input; if (panicstr == NULL) - nd_nic->if_netdump->release_lock(nd_nic); + nd_nic->if_ndumpfuncs->release_lock(nd_nic); dumping--; } From owner-svn-src-projects@FreeBSD.ORG Tue Sep 7 17:56:29 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A445D10656AC; Tue, 7 Sep 2010 17:56:29 +0000 (UTC) (envelope-from attilio@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 9447A8FC08; Tue, 7 Sep 2010 17:56:29 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o87HuTfu011921; Tue, 7 Sep 2010 17:56:29 GMT (envelope-from attilio@svn.freebsd.org) Received: (from attilio@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o87HuT1C011919; Tue, 7 Sep 2010 17:56:29 GMT (envelope-from attilio@svn.freebsd.org) Message-Id: <201009071756.o87HuT1C011919@svn.freebsd.org> From: Attilio Rao Date: Tue, 7 Sep 2010 17:56:29 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r212299 - projects/sv/sys/net X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 07 Sep 2010 17:56:29 -0000 Author: attilio Date: Tue Sep 7 17:56:29 2010 New Revision: 212299 URL: http://svn.freebsd.org/changeset/base/212299 Log: Locate the new pointer in the right location in order to avoid ABI breakage. Pointed out by: emaste Modified: projects/sv/sys/net/if_var.h Modified: projects/sv/sys/net/if_var.h ============================================================================== --- projects/sv/sys/net/if_var.h Tue Sep 7 17:51:23 2010 (r212298) +++ projects/sv/sys/net/if_var.h Tue Sep 7 17:56:29 2010 (r212299) @@ -196,7 +196,6 @@ struct ifnet { /* protected by if_addr_mtx */ void *if_pf_kif; void *if_lagg; /* lagg glue */ - struct netdump_methods *if_ndumpfuncs; /* netdump virtual methods */ u_char if_alloctype; /* if_type at time of allocation */ /* @@ -206,6 +205,7 @@ struct ifnet { */ char if_cspare[3]; char *if_description; /* interface description */ + struct netdump_methods *if_ndumpfuncs; /* netdump virtual methods */ void *if_pspare[6]; int if_ispare[4]; };