Module Name: src Committed By: roy Date: Thu Sep 11 13:10:04 UTC 2014
Modified Files: src/distrib/sets/lists/base: mi src/doc: CHANGES src/etc/defaults: rc.conf src/etc/rc.d: network src/rescue: list.inet6 src/sbin: Makefile src/sbin/ifconfig: ifconfig.8 ifconfig.c src/usr.sbin/postinstall: postinstall src/usr.sbin/rtsold: Makefile rtsold.8 Removed Files: src/etc/rc.d: rtsold src/sbin/rtsol: Makefile src/usr.sbin/rtsold: dump.c if.c probe.c rtsock.c rtsol.c rtsold.c rtsold.h Log Message: Remove rtsol(8) and rtsold(8) as their functionality is in dhcpcd(8). Remove rtsol(8) from rc.d/network. Add -w seconds command to ifconfig to wait for N seconds for until DAD has finished on all addresses. Use ifconfig -w in rc.d/network instead of a forced sleep. As discussed on tech-net@ To generate a diff of this commit: cvs rdiff -u -r1.1088 -r1.1089 src/distrib/sets/lists/base/mi cvs rdiff -u -r1.1978 -r1.1979 src/doc/CHANGES cvs rdiff -u -r1.123 -r1.124 src/etc/defaults/rc.conf cvs rdiff -u -r1.66 -r1.67 src/etc/rc.d/network cvs rdiff -u -r1.7 -r0 src/etc/rc.d/rtsold cvs rdiff -u -r1.1 -r1.2 src/rescue/list.inet6 cvs rdiff -u -r1.126 -r1.127 src/sbin/Makefile cvs rdiff -u -r1.106 -r1.107 src/sbin/ifconfig/ifconfig.8 cvs rdiff -u -r1.231 -r1.232 src/sbin/ifconfig/ifconfig.c cvs rdiff -u -r1.13 -r0 src/sbin/rtsol/Makefile cvs rdiff -u -r1.179 -r1.180 src/usr.sbin/postinstall/postinstall cvs rdiff -u -r1.15 -r1.16 src/usr.sbin/rtsold/Makefile cvs rdiff -u -r1.10 -r0 src/usr.sbin/rtsold/dump.c cvs rdiff -u -r1.16 -r0 src/usr.sbin/rtsold/if.c src/usr.sbin/rtsold/rtsol.c cvs rdiff -u -r1.12 -r0 src/usr.sbin/rtsold/probe.c cvs rdiff -u -r1.7 -r0 src/usr.sbin/rtsold/rtsock.c cvs rdiff -u -r1.33 -r1.34 src/usr.sbin/rtsold/rtsold.8 cvs rdiff -u -r1.42 -r0 src/usr.sbin/rtsold/rtsold.c cvs rdiff -u -r1.11 -r0 src/usr.sbin/rtsold/rtsold.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/distrib/sets/lists/base/mi diff -u src/distrib/sets/lists/base/mi:1.1088 src/distrib/sets/lists/base/mi:1.1089 --- src/distrib/sets/lists/base/mi:1.1088 Fri Aug 22 10:51:38 2014 +++ src/distrib/sets/lists/base/mi Thu Sep 11 13:10:03 2014 @@ -1,4 +1,4 @@ -# $NetBSD: mi,v 1.1088 2014/08/22 10:51:38 apb Exp $ +# $NetBSD: mi,v 1.1089 2014/09/11 13:10:03 roy Exp $ # # Note: Don't delete entries from here - mark them as "obsolete" instead, # unless otherwise stated below. @@ -359,7 +359,7 @@ ./sbin/route base-netutil-root ./sbin/routed base-router-root ./sbin/rrestore base-netutil-root -./sbin/rtsol base-netutil-root use_inet6 +./sbin/rtsol base-obsolete obsolete ./sbin/rump.cgdconfig base-sysutil-root crypto,rump ./sbin/rump.ifconfig base-netutil-root rump ./sbin/rump.modload base-sysutil-root rump @@ -1631,7 +1631,7 @@ ./usr/sbin/rpcbind base-rpcbind-bin ./usr/sbin/rtadvd base-router-bin use_inet6 ./usr/sbin/rtquery base-netutil-bin -./usr/sbin/rtsold base-netutil-bin inet6 +./usr/sbin/rtsold base-obsolete obsolete ./usr/sbin/rump.envstat base-sysutil-bin rump ./usr/sbin/rump.powerd base-sysutil-bin rump ./usr/sbin/rump.traceroute base-netutil-bin rump Index: src/doc/CHANGES diff -u src/doc/CHANGES:1.1978 src/doc/CHANGES:1.1979 --- src/doc/CHANGES:1.1978 Mon Sep 8 11:08:07 2014 +++ src/doc/CHANGES Thu Sep 11 13:10:03 2014 @@ -1,4 +1,4 @@ -# LIST OF CHANGES FROM LAST RELEASE: <$Revision: 1.1978 $> +# LIST OF CHANGES FROM LAST RELEASE: <$Revision: 1.1979 $> # # # [Note: This file does not mention every change made to the NetBSD source tree. @@ -46,3 +46,5 @@ Changes from NetBSD 7.0 to NetBSD 8.0: awinrtc(4): Add support for AllWinner A10/A20 real-time clock. [jmcneill 20140907] awinmmc(4): Use DMA for MMC transfers. [jmcneill 20140908] + rtsol(8): Removed in favour of dhcpcd. [roy 20140911] + rtsold(8): Removed in favour of dhcpcd. [roy 20140911] Index: src/etc/defaults/rc.conf diff -u src/etc/defaults/rc.conf:1.123 src/etc/defaults/rc.conf:1.124 --- src/etc/defaults/rc.conf:1.123 Tue Jul 22 17:11:09 2014 +++ src/etc/defaults/rc.conf Thu Sep 11 13:10:03 2014 @@ -1,4 +1,4 @@ -# $NetBSD: rc.conf,v 1.123 2014/07/22 17:11:09 wiz Exp $ +# $NetBSD: rc.conf,v 1.124 2014/09/11 13:10:03 roy Exp $ # # /etc/defaults/rc.conf -- # default configuration of /etc/rc.conf @@ -253,7 +253,6 @@ routed=NO routed_flags="-q" gated=NO mrouted=NO mrouted_flags="" route6d=NO route6d_flags="" -rtsold=NO rtsold_flags="-a" # for ip6mode=autohost only ldpd=NO # Daemons used to boot other hosts over a network. Index: src/etc/rc.d/network diff -u src/etc/rc.d/network:1.66 src/etc/rc.d/network:1.67 --- src/etc/rc.d/network:1.66 Tue Apr 29 09:58:18 2014 +++ src/etc/rc.d/network Thu Sep 11 13:10:03 2014 @@ -1,6 +1,6 @@ #!/bin/sh # -# $NetBSD: network,v 1.66 2014/04/29 09:58:18 uebayasi Exp $ +# $NetBSD: network,v 1.67 2014/09/11 13:10:03 roy Exp $ # # PROVIDE: network @@ -432,33 +432,26 @@ network_start_defaultroute6() network_start_ipv6_autoconf() { # IPv6 interface autoconfiguration. - # - # wait till DAD is completed. always invoke it in case - # if are configured manually by ifconfig - # - echo 'Waiting for DAD completion for' \ - 'statically configured addresses...' + dadcount=$(/sbin/sysctl -n net.inet6.ip6.dad_count 2>/dev/null) - sleep $dadcount - sleep 1 + if [ -n "$dadcount" -a "$dadcount" != 0 ]; then + # wait till DAD is completed + echo 'Waiting for DAD to complete for' \ + 'statically configured addresses...' + # Add 1 for MAX_RTR_SOLICITATION_DELAY and another + # to give time for the last DAD packet to respond and + # a few more for luck. + waitsecs=$((dadcount + 4)) + /sbin/ifconfig -w $waitsecs + fi - if checkyesno rtsol; then + # dhcpcd will ensure DAD completes before forking + if checkyesno rtsol && !checkyesno dhcpcd; then if [ "$ip6mode" = "autohost" ]; then - echo 'Sending router solicitation...' - /sbin/rtsol $rtsol_flags - else echo - warn \ - "ip6mode must be set to 'autohost' to use rtsol." + warn "rtsol has been removed, " \ + "please configure dhcpcd in its place." fi - - # wait till DAD is completed, for global addresses - # configured by router advert message. - # - echo 'Waiting for DAD completion for' \ - 'addresses configured by router advert message...' - sleep $dadcount - sleep 1 fi } Index: src/rescue/list.inet6 diff -u src/rescue/list.inet6:1.1 src/rescue/list.inet6:1.2 --- src/rescue/list.inet6:1.1 Mon Jan 10 02:58:59 2005 +++ src/rescue/list.inet6 Thu Sep 11 13:10:03 2014 @@ -1,4 +1,3 @@ -# $NetBSD: list.inet6,v 1.1 2005/01/10 02:58:59 lukem Exp $ +# $NetBSD: list.inet6,v 1.2 2014/09/11 13:10:03 roy Exp $ PROG ping6 -PROG rtsol Index: src/sbin/Makefile diff -u src/sbin/Makefile:1.126 src/sbin/Makefile:1.127 --- src/sbin/Makefile:1.126 Wed Dec 25 22:04:52 2013 +++ src/sbin/Makefile Thu Sep 11 13:10:03 2014 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.126 2013/12/25 22:04:52 christos Exp $ +# $NetBSD: Makefile,v 1.127 2014/09/11 13:10:03 roy Exp $ # @(#)Makefile 8.5 (Berkeley) 3/31/94 # Not ported: XNSrouted enpload scsiformat startslip @@ -55,7 +55,7 @@ SUBDIR+= cgdconfig .endif .if (${USE_INET6} != "no") -SUBDIR+= ping6 rtsol +SUBDIR+= ping6 .endif .if (${MKISCSI} != "no") Index: src/sbin/ifconfig/ifconfig.8 diff -u src/sbin/ifconfig/ifconfig.8:1.106 src/sbin/ifconfig/ifconfig.8:1.107 --- src/sbin/ifconfig/ifconfig.8:1.106 Tue Jan 7 20:25:24 2014 +++ src/sbin/ifconfig/ifconfig.8 Thu Sep 11 13:10:04 2014 @@ -1,4 +1,4 @@ -.\" $NetBSD: ifconfig.8,v 1.106 2014/01/07 20:25:24 degroote Exp $ +.\" $NetBSD: ifconfig.8,v 1.107 2014/09/11 13:10:04 roy Exp $ .\" .\" Copyright (c) 1983, 1991, 1993 .\" The Regents of the University of California. All rights reserved. @@ -59,6 +59,9 @@ .Fl s .Ar interface .Nm +.Fl w +.Ar secs +.Nm .Fl C .Sh DESCRIPTION .Nm @@ -860,6 +863,17 @@ flag except that it zeros the interface after printing them. .Pp The +.Fl w +flag may be used to wait +.Ar seconds +seconds for the +.Cm tentative +flag to be removed from all addresses. +0 seconds means to wait indefinitely until all addresses no longer have the +.Cm tentative +flag. +.Pp +The .Fl N flag is just the opposite of the .Fl n Index: src/sbin/ifconfig/ifconfig.c diff -u src/sbin/ifconfig/ifconfig.c:1.231 src/sbin/ifconfig/ifconfig.c:1.232 --- src/sbin/ifconfig/ifconfig.c:1.231 Sat Oct 19 00:35:30 2013 +++ src/sbin/ifconfig/ifconfig.c Thu Sep 11 13:10:04 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: ifconfig.c,v 1.231 2013/10/19 00:35:30 christos Exp $ */ +/* $NetBSD: ifconfig.c,v 1.232 2014/09/11 13:10:04 roy Exp $ */ /*- * Copyright (c) 1997, 1998, 2000 The NetBSD Foundation, Inc. @@ -63,7 +63,7 @@ #ifndef lint __COPYRIGHT("@(#) Copyright (c) 1983, 1993\ The Regents of the University of California. All rights reserved."); -__RCSID("$NetBSD: ifconfig.c,v 1.231 2013/10/19 00:35:30 christos Exp $"); +__RCSID("$NetBSD: ifconfig.c,v 1.232 2014/09/11 13:10:04 roy Exp $"); #endif /* not lint */ #include <sys/param.h> @@ -102,10 +102,13 @@ __RCSID("$NetBSD: ifconfig.c,v 1.231 201 #include "env.h" #include "prog_ops.h" -static bool bflag, dflag, hflag, sflag, uflag; +#define WAIT_DAD 10000000 /* nanoseconds between each poll, 10ms */ + +static bool bflag, dflag, hflag, sflag, uflag, wflag; bool lflag, Nflag, vflag, zflag; +static long wflag_secs; -static char gflags[10 + 26 * 2 + 1] = "AabCdhlNsuvz"; +static char gflags[10 + 26 * 2 + 1] = "AabCdhlNsuvw:z"; bool gflagset[10 + 26 * 2]; static int carrier(prop_dictionary_t); @@ -115,6 +118,7 @@ static int flag_index(int); static void init_afs(void); static int list_cloners(prop_dictionary_t, prop_dictionary_t); static int media_status_exec(prop_dictionary_t, prop_dictionary_t); +static int wait_dad_exec(prop_dictionary_t, prop_dictionary_t); static int no_cmds_exec(prop_dictionary_t, prop_dictionary_t); static int notrailers(prop_dictionary_t, prop_dictionary_t); static void printall(const char *, prop_dictionary_t); @@ -223,6 +227,9 @@ static struct kwinst familykw[24]; struct pterm cloneterm = PTERM_INITIALIZER(&cloneterm, "list cloners", list_cloners, "none"); +struct pterm wait_dad = PTERM_INITIALIZER(&wait_dad, "wait DAD", wait_dad_exec, + "none"); + struct pterm no_cmds = PTERM_INITIALIZER(&no_cmds, "no commands", no_cmds_exec, "none"); @@ -506,6 +513,70 @@ no_cmds_exec(prop_dictionary_t env, prop } static int +wait_dad_exec(prop_dictionary_t env, prop_dictionary_t oenv) +{ +#ifdef INET6 + bool waiting; + struct ifaddrs *ifaddrs, *ifa; + struct in6_ifreq ifr6; + int s; + const struct timespec ts = { .tv_sec = 0, .tv_nsec = WAIT_DAD }; + const struct timespec add = { .tv_sec = wflag_secs, .tv_nsec = 0}; + struct timespec now, end; + + if (wflag_secs) { + if (clock_gettime(CLOCK_MONOTONIC, &now) == -1) + err(EXIT_FAILURE, "clock_gettime"); + timespecadd(&now, &add, &end); + } + + if (getifaddrs(&ifaddrs) == -1) + err(EXIT_FAILURE, "getifaddrs"); + + for (;;) { + waiting = false; + for (ifa = ifaddrs; ifa; ifa = ifa->ifa_next) { + if (ifa->ifa_addr == NULL) + continue; + switch (ifa->ifa_addr->sa_family) { + case AF_INET6: + memset(&ifr6, 0, sizeof(ifr6)); + strncpy(ifr6.ifr_name, + ifa->ifa_name, sizeof(ifr6.ifr_name)); + ifr6.ifr_addr = + *(struct sockaddr_in6 *)ifa->ifa_addr; + if ((s = getsock(AF_INET6)) == -1) + err(EXIT_FAILURE, + "%s: getsock", __func__); + if (ioctl(s, SIOCGIFAFLAG_IN6, &ifr6) == -1) + err(EXIT_FAILURE, "SIOCGIFAFLAG_IN6"); + if (ifr6.ifr_ifru.ifru_flags6 & + IN6_IFF_TENTATIVE) + { + waiting = true; + break; + } + } + if (waiting) + break; + } + if (!waiting) + break; + nanosleep(&ts, NULL); + if (wflag_secs) { + if (clock_gettime(CLOCK_MONOTONIC, &now) == -1) + err(EXIT_FAILURE, "clock_gettime"); + if (timespeccmp(&now, &end, >)) + errx(EXIT_FAILURE, "timed out"); + } + } + + freeifaddrs(ifaddrs); +#endif + exit(EXIT_SUCCESS); +} + +static int media_status_exec(prop_dictionary_t env, prop_dictionary_t oenv) { const char *ifname; @@ -549,6 +620,7 @@ main(int argc, char **argv) int ch, narg = 0, rc; prop_dictionary_t env, oenv; const char *ifname; + char *end; memset(match, 0, sizeof(match)); @@ -605,6 +677,14 @@ main(int argc, char **argv) vflag = true; break; + case 'w': + wflag = true; + wflag_secs = strtol(optarg, &end, 10); + if ((end != NULL && *end != '\0') || + wflag_secs < 0 || wflag_secs >= INT32_MAX) + errx(EXIT_FAILURE, "%s: not a number", optarg); + break; + case 'z': zflag = true; break; @@ -636,6 +716,9 @@ main(int argc, char **argv) start != &opt_family_only.pb_parser) start = &iface_only.pif_parser; break; + case 'w': + start = &wait_dad.pt_parser; + break; default: break; } @@ -644,19 +727,23 @@ main(int argc, char **argv) argv += optind; /* - * -l means "list all interfaces", and is mutally exclusive with + * -l means "list all interfaces", and is mutually exclusive with * all other flags/commands. * * -C means "list all names of cloners", and it mutually exclusive * with all other flags/commands. * * -a means "print status of all interfaces". + * + * -w means "spin until DAD completes for all addreseses", and is + * mutually exclusivewith all other flags/commands. */ - if ((lflag || Cflag) && (aflag || get_flag('m') || vflag || zflag)) + if ((lflag || Cflag || wflag) && + (aflag || get_flag('m') || vflag || zflag)) usage(); - if ((lflag || Cflag) && get_flag('L')) + if ((lflag || Cflag || wflag) && get_flag('L')) usage(); - if (lflag && Cflag) + if ((lflag && Cflag) || (lflag & wflag) || (Cflag && wflag)) usage(); nmatch = __arraycount(match); @@ -1399,10 +1486,11 @@ usage(void) " %s -a [-b] [-d] [-h] %s[-u] [-v] [-z] [ af ]\n" " %s -l [-b] [-d] [-s] [-u]\n" " %s -C\n" + " %s -w n\n" " %s interface create\n" " %s interface destroy\n", progname, flag_is_registered(gflags, 'm') ? "[-m] " : "", - progname, progname, progname, progname); + progname, progname, progname, progname, progname); prop_object_release((prop_object_t)env); exit(EXIT_FAILURE); Index: src/usr.sbin/postinstall/postinstall diff -u src/usr.sbin/postinstall/postinstall:1.179 src/usr.sbin/postinstall/postinstall:1.180 --- src/usr.sbin/postinstall/postinstall:1.179 Tue Aug 12 09:12:18 2014 +++ src/usr.sbin/postinstall/postinstall Thu Sep 11 13:10:04 2014 @@ -1,6 +1,6 @@ #!/bin/sh # -# $NetBSD: postinstall,v 1.179 2014/08/12 09:12:18 apb Exp $ +# $NetBSD: postinstall,v 1.180 2014/09/11 13:10:04 roy Exp $ # # Copyright (c) 2002-2008 The NetBSD Foundation, Inc. # All rights reserved. @@ -1332,7 +1332,7 @@ do_rc() quota \ racoon rpcbind raidframe raidframeparity random_seed rarpd \ rbootd rndctl root route6d routed rtadvd rtclocaltime \ - rtsold rwho \ + rwho \ savecore screenblank securelevel sshd \ staticroute swap1 swap2 sysctl sysdb syslogd \ timed tpctl ttys \ Index: src/usr.sbin/rtsold/Makefile diff -u src/usr.sbin/rtsold/Makefile:1.15 src/usr.sbin/rtsold/Makefile:1.16 --- src/usr.sbin/rtsold/Makefile:1.15 Tue Mar 18 00:16:49 2014 +++ src/usr.sbin/rtsold/Makefile Thu Sep 11 13:10:04 2014 @@ -1,17 +1,6 @@ -# $NetBSD: Makefile,v 1.15 2014/03/18 00:16:49 christos Exp $ - -WARNS?=6 -USE_FORT?= yes # network client (local server) - -PROG= rtsold -SRCS= rtsold.c rtsol.c if.c probe.c dump.c rtsock.c - -CPPFLAGS+=-DUSE_RTSOCK +# $NetBSD: Makefile,v 1.16 2014/09/11 13:10:04 roy Exp $ MAN= rtsold.8 MLINKS= rtsold.8 rtsol.8 -LDADD+= -lutil -DPADD+= ${LIBUTIL} - .include <bsd.prog.mk> Index: src/usr.sbin/rtsold/rtsold.8 diff -u src/usr.sbin/rtsold/rtsold.8:1.33 src/usr.sbin/rtsold/rtsold.8:1.34 --- src/usr.sbin/rtsold/rtsold.8:1.33 Sun May 26 17:25:53 2013 +++ src/usr.sbin/rtsold/rtsold.8 Thu Sep 11 13:10:04 2014 @@ -1,4 +1,4 @@ -.\" $NetBSD: rtsold.8,v 1.33 2013/05/26 17:25:53 wiz Exp $ +.\" $NetBSD: rtsold.8,v 1.34 2014/09/11 13:10:04 roy Exp $ .\" $KAME: rtsold.8,v 1.17 2001/07/09 22:30:37 itojun Exp $ .\" .\" Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. @@ -28,7 +28,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd May 24, 2013 +.Dd September 9, 2014 .Dt RTSOLD 8 .Os .\" @@ -36,184 +36,9 @@ .Nm rtsold .Nd router solicitation daemon .\" -.Sh SYNOPSIS -.Nm rtsold -.Op Fl 1Ddfm -.Ar interface ... -.Nm rtsold -.Op Fl 1Ddfm -.Fl a -.Nm rtsol -.Op Fl Dd -.Ar interface ... -.Nm rtsol -.Op Fl Dd -.Fl a -.\" .Sh DESCRIPTION .Nm -is the daemon program to send ICMPv6 Router Solicitation messages -on the specified interfaces. -If a node (re)attaches to a link, -.Nm -sends some Router Solicitations on the link destined to the link-local scope -all-routers multicast address to discover new routers -and to get non link-local addresses. -.Pp -.Nm -should be used on IPv6 hosts -.Pq non-router nodes -only. -.Pp -If you invoke the program as -.Nm rtsol , -it will transmit probes from the specified -.Ar interface , -without becoming a daemon. -In other words, -.Nm rtsol -behaves as -.Dq rtsold -f1 interface ... . -.Pp -Specifically, -.Nm -sends at most 3 Router Solicitations on an interface -after one of the following events: -.Bl -bullet -.It -Just after invocation of the -.Nm -daemon. -.It -The interface is up after a temporary interface failure. -.Nm -detects such failures by periodically probing to see if the status -of the interface is active or not. -Note that some network cards and drivers do not allow the extraction -of link state. -In such cases, -.Nm -cannot detect the change of the interface status. -.It -Every 60 seconds if the -.Fl m -option is specified and the -.Nm -daemon cannot get the interface status. -This feature does not conform to the IPv6 neighbor discovery -specification, but is provided for mobile stations. -The default interval for router advertisements, -which is approximately 10 minutes, -is slightly long for mobile stations. -This feature is provided -for such stations so that they can find new routers as soon as possible -when they attach to another link. -.El -.Pp -Once -.Nm -has sent a Router Solicitation, and has received a valid Router Advertisement, -it refrains from sending additional solicitations on that interface, until -the next time one of the above events occurs. -.Pp -When sending a Router Solicitation on an interface, -.Nm -includes a Source Link-layer address option if the interface -has a link-layer address. -.Pp -Upon receipt of signal -.Dv SIGUSR1 , -.Nm -will dump the current internal state into -.Pa /var/run/rtsold.dump . -Also note that -.Nm -will not be able to update the kernel routing tables unless -.Xr sysctl 8 -reports that -net.inet6.ip6.accept_rtadv=1. -.\" -.Pp -The options are as follows: -.Bl -tag -width indent -.It Fl 1 -Perform only one probe. -Transmit Router Solicitation packets until at least one valid Router -Advertisement packet has arrived on each -.Ar interface , -then exit. -.It Fl a -Autoprobe outgoing interfaces. -.Nm -will try to find a non-loopback, non-point-to-point, IPv6-capable interfaces, -and send router solicitation messages on all of them. -.It Fl D -Enable more debugging (than that offered by the -.Fl d -option) including the printing of internal timer information. -.It Fl d -Enable debugging. -.It Fl f -This option prevents -.Nm -from becoming a daemon (foreground mode). -Warning messages are generated to standard error -instead of -.Xr syslog 3 . -.It Fl m -Enable mobility support. -If this option is specified, -.Nm -sends probing packets to default routers that have advertised Router -Advertisements -when the node (re)attaches to an interface. -Moreover, if the option is specified, -.Nm -periodically sends Router Solicitation on an interface that does not support -the -.Dv SIOCGIFMEDIA -ioctl. -.El -.\" -.Sh EXIT STATUS -.Ex -std rtsold -.\" -.Sh FILES -.Bl -tag -width /var/run/rtsold.dumpXX -compact -.It Pa /var/run/rtsold.pid -The PID of the currently running -.Nm rtsold . -.It Pa /var/run/rtsold.dump -Internal state dump file. -.El -.\" -.Sh SEE ALSO -.Xr rtadvd 8 , -.Xr sysctl 8 -.\" -.Sh HISTORY -The -.Nm -command is based on the +and .Nm rtsol -command, which first appeared in the WIDE/KAME IPv6 protocol stack kit. -.Nm rtsol -is now integrated into -.Nm . -.\" -.Sh BUGS -In some operating systems, when a PCMCIA network card is removed -and reinserted, the corresponding interface index is changed. -However, -.Nm -assumes such changes will not occur, and always uses the index that -it got at invocation. -As a result, -.Nm -may not work if you reinsert a network card. -In such a case, -.Nm -should be killed and restarted. -.Pp -You may see kernel error messages if you try to autoconfigure a host with -multiple interfaces. +have been removed from NetBSD as their functionality is now included in +.Xr dhcpcd 8 .