From owner-svn-src-projects@FreeBSD.ORG Sun May 4 08:32:57 2014 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 88543B9C; Sun, 4 May 2014 08:32:57 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 7280A1CE9; Sun, 4 May 2014 08:32:57 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.8/8.14.8) with ESMTP id s448WvWM066444; Sun, 4 May 2014 08:32:57 GMT (envelope-from markm@svn.freebsd.org) Received: (from markm@localhost) by svn.freebsd.org (8.14.8/8.14.8/Submit) id s448WsRM066422; Sun, 4 May 2014 08:32:54 GMT (envelope-from markm@svn.freebsd.org) Message-Id: <201405040832.s448WsRM066422@svn.freebsd.org> From: Mark Murray Date: Sun, 4 May 2014 08:32:54 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r265316 - in projects/random_number_generator: cddl/lib/libdtrace lib/libproc release/doc/en_US.ISO8859-1/relnotes share/man/man4 share/man/man9 sys/dev/gpio sys/dev/ofw sys/net sys/net... X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.17 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: Sun, 04 May 2014 08:32:57 -0000 Author: markm Date: Sun May 4 08:32:53 2014 New Revision: 265316 URL: http://svnweb.freebsd.org/changeset/base/265316 Log: MFC - tracking commit. Merging r265282 through r265315. Added: projects/random_number_generator/share/man/man9/pget.9 - copied unchanged from r265315, head/share/man/man9/pget.9 Modified: projects/random_number_generator/cddl/lib/libdtrace/libproc_compat.h projects/random_number_generator/lib/libproc/libproc.h projects/random_number_generator/lib/libproc/proc_bkpt.c projects/random_number_generator/lib/libproc/proc_util.c projects/random_number_generator/release/doc/en_US.ISO8859-1/relnotes/article.xml projects/random_number_generator/share/man/man4/vtnet.4 projects/random_number_generator/share/man/man9/Makefile projects/random_number_generator/sys/dev/gpio/gpio_if.m projects/random_number_generator/sys/dev/gpio/gpiobus.c projects/random_number_generator/sys/dev/gpio/gpiobusvar.h projects/random_number_generator/sys/dev/gpio/ofw_gpiobus.c projects/random_number_generator/sys/dev/ofw/ofw_bus.h projects/random_number_generator/sys/dev/ofw/ofw_bus_if.m projects/random_number_generator/sys/net/rtsock.c projects/random_number_generator/sys/netinet/in_rmx.c Directory Properties: projects/random_number_generator/ (props changed) projects/random_number_generator/cddl/ (props changed) projects/random_number_generator/share/man/man4/ (props changed) projects/random_number_generator/sys/ (props changed) Modified: projects/random_number_generator/cddl/lib/libdtrace/libproc_compat.h ============================================================================== --- projects/random_number_generator/cddl/lib/libdtrace/libproc_compat.h Sun May 4 08:00:07 2014 (r265315) +++ projects/random_number_generator/cddl/lib/libdtrace/libproc_compat.h Sun May 4 08:32:53 2014 (r265316) @@ -54,7 +54,6 @@ #define Psetbkpt proc_bkptset #define Psetflags proc_setflags #define Pstate proc_state -#define Pstate proc_state #define Psymbol_iter_by_addr proc_iter_symbyaddr #define Punsetflags proc_clearflags #define Pupdate_maps(p) do { } while (0) Modified: projects/random_number_generator/lib/libproc/libproc.h ============================================================================== --- projects/random_number_generator/lib/libproc/libproc.h Sun May 4 08:00:07 2014 (r265315) +++ projects/random_number_generator/lib/libproc/libproc.h Sun May 4 08:32:53 2014 (r265316) @@ -102,6 +102,7 @@ typedef struct lwpstatus { #define PR_FAULTED 2 #define PR_SYSENTRY 3 #define PR_SYSEXIT 4 +#define PR_SIGNALLED 5 int pr_what; #define FLTBPT -1 } lwpstatus_t; Modified: projects/random_number_generator/lib/libproc/proc_bkpt.c ============================================================================== --- projects/random_number_generator/lib/libproc/proc_bkpt.c Sun May 4 08:00:07 2014 (r265315) +++ projects/random_number_generator/lib/libproc/proc_bkpt.c Sun May 4 08:32:53 2014 (r265316) @@ -55,13 +55,6 @@ __FBSDID("$FreeBSD$"); #error "Add support for your architecture" #endif -static void -proc_cont(struct proc_handle *phdl) -{ - - ptrace(PT_CONTINUE, proc_getpid(phdl), (caddr_t)1, 0); -} - static int proc_stop(struct proc_handle *phdl) { @@ -87,7 +80,7 @@ proc_bkptset(struct proc_handle *phdl, u { struct ptrace_io_desc piod; unsigned long paddr, caddr; - int ret = 0; + int ret = 0, stopped; *saved = 0; if (phdl->status == PS_DEAD || phdl->status == PS_UNDEAD || @@ -98,9 +91,12 @@ proc_bkptset(struct proc_handle *phdl, u DPRINTFX("adding breakpoint at 0x%lx", address); - if (phdl->status != PS_STOP) + stopped = 0; + if (phdl->status != PS_STOP) { if (proc_stop(phdl) != 0) return (-1); + stopped = 1; + } /* * Read the original instruction. @@ -135,9 +131,9 @@ proc_bkptset(struct proc_handle *phdl, u } done: - if (phdl->status != PS_STOP) + if (stopped) /* Restart the process if we had to stop it. */ - proc_cont(phdl); + proc_continue(phdl); return (ret); } @@ -148,7 +144,7 @@ proc_bkptdel(struct proc_handle *phdl, u { struct ptrace_io_desc piod; unsigned long paddr, caddr; - int ret = 0; + int ret = 0, stopped; if (phdl->status == PS_DEAD || phdl->status == PS_UNDEAD || phdl->status == PS_IDLE) { @@ -158,9 +154,12 @@ proc_bkptdel(struct proc_handle *phdl, u DPRINTFX("removing breakpoint at 0x%lx", address); - if (phdl->status != PS_STOP) + stopped = 0; + if (phdl->status != PS_STOP) { if (proc_stop(phdl) != 0) return (-1); + stopped = 1; + } /* * Overwrite the breakpoint instruction that we setup previously. @@ -177,9 +176,9 @@ proc_bkptdel(struct proc_handle *phdl, u ret = -1; } - if (phdl->status != PS_STOP) + if (stopped) /* Restart the process if we had to stop it. */ - proc_cont(phdl); + proc_continue(phdl); return (ret); } Modified: projects/random_number_generator/lib/libproc/proc_util.c ============================================================================== --- projects/random_number_generator/lib/libproc/proc_util.c Sun May 4 08:00:07 2014 (r265315) +++ projects/random_number_generator/lib/libproc/proc_util.c Sun May 4 08:32:53 2014 (r265316) @@ -35,10 +35,9 @@ #include #include #include -#include -#include #include #include +#include #include "_libproc.h" int @@ -59,11 +58,14 @@ proc_clearflags(struct proc_handle *phdl int proc_continue(struct proc_handle *phdl) { + int pending = 0; if (phdl == NULL) return (-1); - if (ptrace(PT_CONTINUE, phdl->pid, (caddr_t)(uintptr_t) 1, 0) != 0) + if (phdl->status == PS_STOP && WSTOPSIG(phdl->wstat) != SIGTRAP) + pending = WSTOPSIG(phdl->wstat); + if (ptrace(PT_CONTINUE, phdl->pid, (caddr_t)(uintptr_t)1, pending) != 0) return (-1); phdl->status = PS_RUN; @@ -208,12 +210,16 @@ proc_getlwpstatus(struct proc_handle *ph return (NULL); siginfo = &lwpinfo.pl_siginfo; if (lwpinfo.pl_event == PL_EVENT_SIGNAL && - (lwpinfo.pl_flags & PL_FLAG_SI) && - siginfo->si_signo == SIGTRAP && - (siginfo->si_code == TRAP_BRKPT || - siginfo->si_code == TRAP_TRACE)) { - psp->pr_why = PR_FAULTED; - psp->pr_what = FLTBPT; + (lwpinfo.pl_flags & PL_FLAG_SI) != 0) { + if (siginfo->si_signo == SIGTRAP && + (siginfo->si_code == TRAP_BRKPT || + siginfo->si_code == TRAP_TRACE)) { + psp->pr_why = PR_FAULTED; + psp->pr_what = FLTBPT; + } else { + psp->pr_why = PR_SIGNALLED; + psp->pr_what = siginfo->si_signo; + } } else if (lwpinfo.pl_flags & PL_FLAG_SCE) { psp->pr_why = PR_SYSENTRY; } else if (lwpinfo.pl_flags & PL_FLAG_SCX) { Modified: projects/random_number_generator/release/doc/en_US.ISO8859-1/relnotes/article.xml ============================================================================== --- projects/random_number_generator/release/doc/en_US.ISO8859-1/relnotes/article.xml Sun May 4 08:00:07 2014 (r265315) +++ projects/random_number_generator/release/doc/en_US.ISO8859-1/relnotes/article.xml Sun May 4 08:32:53 2014 (r265316) @@ -104,6 +104,23 @@ Kernel Changes + The &man.full.4; device has been added, + and the lindev(4) device has been removed. + Prior to this change, lindev(4) provided only + the /dev/null character device, returning + ENOSPC on write attempts. As this device is + not specific to &linux;, a native &os; version has been + added. + + The if_nf10bmac(4) + device has been added, providing support for NetFPGA-10G + Embedded CPU Ethernet Core. + + + The if_nf10bmac(4) driver operates on + the FPGA, and is not suited for the PCI host interface. + + Support for GPS ports has been added to &man.uhso.4;. @@ -214,6 +231,17 @@ Userland Changes + The &man.top.1; utility has been updated + to filter by &man.jail.8; ID or name, in followup to the + &man.ps.1; change in r265229. + + The &man.ps.1; utility has been + updated to include the -J flag, used to + filter output by matching &man.jail.8; IDs and names. + Additionally, argument 0 can be used to + -J to only list processes running on the + host system. + Support for displaying VPD for PCI devices via &man.pciconf.8; has been added. Modified: projects/random_number_generator/share/man/man4/vtnet.4 ============================================================================== --- projects/random_number_generator/share/man/man4/vtnet.4 Sun May 4 08:00:07 2014 (r265315) +++ projects/random_number_generator/share/man/man4/vtnet.4 Sun May 4 08:32:53 2014 (r265316) @@ -35,7 +35,7 @@ To compile this driver into the kernel, place the following lines in your kernel configuration file: .Bd -ragged -offset indent -.Cd "device if_vtnet" +.Cd "device vtnet" .Ed .Pp Alternatively, to load the driver as a Modified: projects/random_number_generator/share/man/man9/Makefile ============================================================================== --- projects/random_number_generator/share/man/man9/Makefile Sun May 4 08:00:07 2014 (r265315) +++ projects/random_number_generator/share/man/man9/Makefile Sun May 4 08:32:53 2014 (r265316) @@ -192,6 +192,7 @@ MAN= accept_filter.9 \ pci.9 \ pfil.9 \ pfind.9 \ + pget.9 \ pgfind.9 \ physio.9 \ pmap.9 \ Copied: projects/random_number_generator/share/man/man9/pget.9 (from r265315, head/share/man/man9/pget.9) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/random_number_generator/share/man/man9/pget.9 Sun May 4 08:32:53 2014 (r265316, copy of r265315, head/share/man/man9/pget.9) @@ -0,0 +1,105 @@ +.\" Copyright (c) 2011 Sergey Kandaurov +.\" 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. +.\" +.\" $FreeBSD$ +.\" +.Dd May 3, 2014 +.Dt PGET 9 +.Os +.Sh NAME +.Nm pget +.Nd locate a process by number +.Sh SYNOPSIS +.In sys/param.h +.In sys/proc.h +.Ft int +.Fn pget "pid_t pid" "int flags" "struct proc **pp" +.Sh DESCRIPTION +This function +takes a +.Fa pid +as its argument, +which can be either a process or thread id, +and fills a pointer to the +.Vt proc +structure in +.Fa *pp . +In the latter case, a process owning the specified thread is looked for. +The actual operation is performed by invoking the +.Xr pfind 9 +function. +The found process is returned locked. +Only for +.Dv PGET_HOLD +case it is returned unlocked (but held). +The +.Fn pget +function can +perform additional manipulations, depending on a +.Fa flags +argument. +.Pp +The +.Fa flags +argument is the logical OR of some subset of: +.Bl -tag -width ".Dv PGET_NOTINEXEC" +.It Dv PGET_HOLD +If set, the found process will be referenced and unlocked. +.It Dv PGET_CANSEE +If set, the found process will be checked for its visibility. +See +.Xr p_cansee 9 . +.It Dv PGET_CANDEBUG +If set, the found process will be checked for its debuggability. +See +.Xr p_candebug 9 . +.It Dv PGET_ISCURRENT +If set, the found process will be checked that it matches the current +process context. +.It Dv PGET_NOTWEXIT +If set, the found process will be checked that it does not have the process +flag +.Dv P_WEXIT +set. +.It Dv PGET_NOTINEXEC +If set, the found process will be checked that it does not have the process +flag +.Dv P_INEXEC +set. +.It Dv PGET_NOTID +If set, +.Fa pid +is not assumed as a thread id for values larger than +.Dv PID_MAX . +.It Dv PGET_WANTREAD +A shorthand for +.Pq Dv PGET_HOLD | PGET_CANDEBUG | PGET_NOTWEXIT . +.El +.Sh RETURN VALUES +If the process is found in the specified way, then zero is returned, +otherwise an appropriate error code is returned. +.Sh SEE ALSO +.Xr p_candebug 9 , +.Xr p_cansee 9 , +.Xr pfind 9 Modified: projects/random_number_generator/sys/dev/gpio/gpio_if.m ============================================================================== --- projects/random_number_generator/sys/dev/gpio/gpio_if.m Sun May 4 08:00:07 2014 (r265315) +++ projects/random_number_generator/sys/dev/gpio/gpio_if.m Sun May 4 08:32:53 2014 (r265316) @@ -31,6 +31,32 @@ INTERFACE gpio; +CODE { + static gpio_map_gpios_t gpio_default_map_gpios; + + int + gpio_default_map_gpios(device_t bus, phandle_t dev, + phandle_t gparent, int gcells, pcell_t *gpios, uint32_t *pin, + uint32_t *flags) + { + /* Propagate up the bus hierarchy until someone handles it. */ + if (device_get_parent(bus) != NULL) + return (GPIO_MAP_GPIOS(device_get_parent(bus), dev, + gparent, gcells, gpios, pin, flags)); + + /* If that fails, then assume the FreeBSD defaults. */ + *pin = gpios[0]; + if (gcells == 2 || gcells == 3) + *flags = gpios[gcells - 1]; + + return (0); + } +}; + +HEADER { + #include +}; + # # Get total number of pins # @@ -100,3 +126,16 @@ METHOD int pin_setflags { uint32_t pin_num; uint32_t flags; }; + +# +# Allow the GPIO controller to map the gpio-specifier on its own. +# +METHOD int map_gpios { + device_t bus; + phandle_t dev; + phandle_t gparent; + int gcells; + pcell_t *gpios; + uint32_t *pin; + uint32_t *flags; +} DEFAULT gpio_default_map_gpios; Modified: projects/random_number_generator/sys/dev/gpio/gpiobus.c ============================================================================== --- projects/random_number_generator/sys/dev/gpio/gpiobus.c Sun May 4 08:00:07 2014 (r265315) +++ projects/random_number_generator/sys/dev/gpio/gpiobus.c Sun May 4 08:32:53 2014 (r265316) @@ -28,17 +28,14 @@ __FBSDID("$FreeBSD$"); #include +#include #include -#include #include #include #include -#include -#include #include -#include "gpio_if.h" #include "gpiobus_if.h" static int gpiobus_parse_pins(struct gpiobus_softc *, device_t, int); Modified: projects/random_number_generator/sys/dev/gpio/gpiobusvar.h ============================================================================== --- projects/random_number_generator/sys/dev/gpio/gpiobusvar.h Sun May 4 08:00:07 2014 (r265315) +++ projects/random_number_generator/sys/dev/gpio/gpiobusvar.h Sun May 4 08:32:53 2014 (r265316) @@ -32,7 +32,6 @@ #include "opt_platform.h" -#include #include #include @@ -40,6 +39,8 @@ #include #endif +#include "gpio_if.h" + #define GPIOBUS_IVAR(d) (struct gpiobus_ivar *) device_get_ivars(d) #define GPIOBUS_SOFTC(d) (struct gpiobus_softc *) device_get_softc(d) #define GPIOBUS_LOCK(_sc) mtx_lock(&(_sc)->sc_mtx) @@ -73,6 +74,13 @@ struct ofw_gpiobus_devinfo { struct ofw_bus_devinfo opd_obdinfo; }; +static __inline int +gpio_map_gpios(device_t bus, phandle_t dev, phandle_t gparent, int gcells, + pcell_t *gpios, uint32_t *pin, uint32_t *flags) +{ + return (GPIO_MAP_GPIOS(bus, dev, gparent, gcells, gpios, pin, flags)); +} + device_t ofw_gpiobus_add_fdt_child(device_t, phandle_t); #endif void gpiobus_print_pins(struct gpiobus_ivar *); Modified: projects/random_number_generator/sys/dev/gpio/ofw_gpiobus.c ============================================================================== --- projects/random_number_generator/sys/dev/gpio/ofw_gpiobus.c Sun May 4 08:00:07 2014 (r265315) +++ projects/random_number_generator/sys/dev/gpio/ofw_gpiobus.c Sun May 4 08:32:53 2014 (r265316) @@ -30,18 +30,14 @@ __FBSDID("$FreeBSD$"); #include +#include #include -#include #include +#include #include -#include #include #include -#include - -#include "gpio_if.h" -#include "gpiobus_if.h" static int ofw_gpiobus_parse_gpios(struct gpiobus_softc *, struct gpiobus_ivar *, phandle_t); @@ -182,7 +178,7 @@ ofw_gpiobus_parse_gpios(struct gpiobus_s } /* Get the GPIO pin number and flags. */ - if (ofw_bus_map_gpios(sc->sc_dev, child, gpio, cells, + if (gpio_map_gpios(sc->sc_dev, child, gpio, cells, &gpios[i + 1], &dinfo->pins[j], &dinfo->flags[j]) != 0) { ofw_gpiobus_free_ivars(dinfo); free(gpios, M_DEVBUF); Modified: projects/random_number_generator/sys/dev/ofw/ofw_bus.h ============================================================================== --- projects/random_number_generator/sys/dev/ofw/ofw_bus.h Sun May 4 08:00:07 2014 (r265315) +++ projects/random_number_generator/sys/dev/ofw/ofw_bus.h Sun May 4 08:32:53 2014 (r265316) @@ -76,12 +76,4 @@ ofw_bus_map_intr(device_t dev, phandle_t return (OFW_BUS_MAP_INTR(dev, dev, iparent, icells, intr)); } -static __inline int -ofw_bus_map_gpios(device_t bus, phandle_t dev, phandle_t gparent, int gcells, - pcell_t *gpios, uint32_t *pin, uint32_t *flags) -{ - return (OFW_BUS_MAP_GPIOS(bus, dev, gparent, gcells, gpios, pin, - flags)); -} - #endif /* !_DEV_OFW_OFW_BUS_H_ */ Modified: projects/random_number_generator/sys/dev/ofw/ofw_bus_if.m ============================================================================== --- projects/random_number_generator/sys/dev/ofw/ofw_bus_if.m Sun May 4 08:00:07 2014 (r265315) +++ projects/random_number_generator/sys/dev/ofw/ofw_bus_if.m Sun May 4 08:32:53 2014 (r265316) @@ -58,7 +58,6 @@ CODE { static ofw_bus_get_node_t ofw_bus_default_get_node; static ofw_bus_get_type_t ofw_bus_default_get_type; static ofw_bus_map_intr_t ofw_bus_default_map_intr; - static ofw_bus_map_gpios_t ofw_bus_default_map_gpios; static const struct ofw_bus_devinfo * ofw_bus_default_get_devinfo(device_t bus, device_t dev) @@ -114,24 +113,6 @@ CODE { /* If that fails, then assume a one-domain system */ return (interrupt[0]); } - - int - ofw_bus_default_map_gpios(device_t bus, phandle_t dev, - phandle_t gparent, int gcells, pcell_t *gpios, uint32_t *pin, - uint32_t *flags) - { - /* Propagate up the bus hierarchy until someone handles it. */ - if (device_get_parent(bus) != NULL) - return OFW_BUS_MAP_GPIOS(device_get_parent(bus), dev, - gparent, gcells, gpios, pin, flags); - - /* If that fails, then assume the FreeBSD defaults. */ - *pin = gpios[0]; - if (gcells == 2 || gcells == 3) - *flags = gpios[gcells - 1]; - - return (0); - } }; # Get the ofw_bus_devinfo struct for the device dev on the bus. Used for bus @@ -188,14 +169,3 @@ METHOD int map_intr { int icells; pcell_t *interrupt; } DEFAULT ofw_bus_default_map_intr; - -# Map the GPIO controller specific gpio-specifier to GPIO pin and flags. -METHOD int map_gpios { - device_t bus; - phandle_t dev; - phandle_t gparent; - int gcells; - pcell_t *gpios; - uint32_t *pin; - uint32_t *flags; -} DEFAULT ofw_bus_default_map_gpios; Modified: projects/random_number_generator/sys/net/rtsock.c ============================================================================== --- projects/random_number_generator/sys/net/rtsock.c Sun May 4 08:00:07 2014 (r265315) +++ projects/random_number_generator/sys/net/rtsock.c Sun May 4 08:32:53 2014 (r265316) @@ -1741,7 +1741,7 @@ sysctl_ifmalist(int af, struct walkarg * info.rti_info[RTAX_GATEWAY] = (ifma->ifma_addr->sa_family != AF_LINK) ? ifma->ifma_lladdr : NULL; - error = rtsock_msg_buffer(RTM_NEWADDR, &info, w, &len); + error = rtsock_msg_buffer(RTM_NEWMADDR, &info, w, &len); if (error != 0) goto done; if (w->w_req && w->w_tmem) { Modified: projects/random_number_generator/sys/netinet/in_rmx.c ============================================================================== --- projects/random_number_generator/sys/netinet/in_rmx.c Sun May 4 08:00:07 2014 (r265315) +++ projects/random_number_generator/sys/netinet/in_rmx.c Sun May 4 08:32:53 2014 (r265316) @@ -441,6 +441,7 @@ in_ifadown(struct ifaddr *ifa, int delet for ( fibnum = 0; fibnum < rt_numfibs; fibnum++) { rnh = rt_tables_get_rnh(fibnum, AF_INET); + arg.rnh = rnh; arg.ifa = ifa; arg.del = delete; RADIX_NODE_HEAD_LOCK(rnh);