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 .