summaryrefslogtreecommitdiffstats
path: root/usr.sbin/rtadvd
diff options
context:
space:
mode:
authorsjg <sjg@FreeBSD.org>2013-04-12 20:48:55 +0000
committersjg <sjg@FreeBSD.org>2013-04-12 20:48:55 +0000
commit97d8b9495668afa398ab17c8c5f7e223b5fd2e89 (patch)
tree54038c9ac32a45f8741dcc23fb9a8ffc0e15ff89 /usr.sbin/rtadvd
parent5ee3bfdb338e7c80af29a67f4425c4be24c7b866 (diff)
parent086d73aef6d0ab7d21daa2076fdc8d25961f9b05 (diff)
downloadFreeBSD-src-97d8b9495668afa398ab17c8c5f7e223b5fd2e89.zip
FreeBSD-src-97d8b9495668afa398ab17c8c5f7e223b5fd2e89.tar.gz
sync from head
Diffstat (limited to 'usr.sbin/rtadvd')
-rw-r--r--usr.sbin/rtadvd/rtadvd.816
-rw-r--r--usr.sbin/rtadvd/rtadvd.c22
2 files changed, 28 insertions, 10 deletions
diff --git a/usr.sbin/rtadvd/rtadvd.8 b/usr.sbin/rtadvd/rtadvd.8
index ad39887..fcb46fe 100644
--- a/usr.sbin/rtadvd/rtadvd.8
+++ b/usr.sbin/rtadvd/rtadvd.8
@@ -29,7 +29,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd July 14, 2011
+.Dd February 25, 2013
.Dt RTADVD 8
.Os
.Sh NAME
@@ -39,13 +39,19 @@
.Nm
.Op Fl dDfRs
.Op Fl c Ar configfile
+.Op Fl C Ar ctlsock
.Op Fl M Ar ifname
.Op Fl p Ar pidfile
-.Ar interface ...
+.Op Ar interface ...
.Sh DESCRIPTION
.Nm
sends router advertisement packets to the specified
.Ar interfaces .
+If no interfaces are specified,
+.Nm
+will still run, but will not advertise any routes until interfaces are
+added using
+.Xr rtadvctl 8 .
.Pp
The program will daemonize itself on invocation.
It will then send router advertisement packets periodically, as well
@@ -121,6 +127,11 @@ for the configuration file.
By default,
.Pa /etc/rtadvd.conf
is used.
+.It Fl C
+Specify an alternate location for the control socket used by
+.Xr rtadvctl 8 .
+The default is
+.Pa /var/run/rtadvd.sock .
.It Fl d
Print debugging information.
.It Fl D
@@ -185,6 +196,7 @@ The default process ID file.
.Ex -std
.Sh SEE ALSO
.Xr rtadvd.conf 5 ,
+.Xr rtadvctl 8 ,
.Xr rtsol 8
.Rs
.%A Thomas Narten
diff --git a/usr.sbin/rtadvd/rtadvd.c b/usr.sbin/rtadvd/rtadvd.c
index a5f306d..880b283 100644
--- a/usr.sbin/rtadvd/rtadvd.c
+++ b/usr.sbin/rtadvd/rtadvd.c
@@ -166,6 +166,15 @@ static void rtmsg_input(struct sockinfo *);
static void set_short_delay(struct ifinfo *);
static int check_accept_rtadv(int);
+static void
+usage(void)
+{
+
+ fprintf(stderr, "usage: rtadvd [-dDfRs] "
+ "[-c configfile] [-C ctlsock] [-M ifname] [-p pidfile]\n");
+ exit(1);
+}
+
int
main(int argc, char *argv[])
{
@@ -177,7 +186,7 @@ main(int argc, char *argv[])
pid_t pid, otherpid;
/* get command line options and arguments */
- while ((ch = getopt(argc, argv, "c:C:dDfM:p:Rs")) != -1) {
+ while ((ch = getopt(argc, argv, "c:C:dDfhM:p:Rs")) != -1) {
switch (ch) {
case 'c':
conffile = optarg;
@@ -209,17 +218,12 @@ main(int argc, char *argv[])
case 'p':
pidfilename = optarg;
break;
+ default:
+ usage();
}
}
argc -= optind;
argv += optind;
- if (argc == 0) {
- fprintf(stderr,
- "usage: rtadvd [-dDfRs] [-c conffile] "
- "[-C ctrlsockname] [-M ifname] "
- "[-p pidfile] interfaces...\n");
- exit(1);
- }
logopt = LOG_NDELAY | LOG_PID;
if (fflag)
@@ -1004,6 +1008,8 @@ set_short_delay(struct ifinfo *ifi)
long delay; /* must not be greater than 1000000 */
struct timeval interval, now, min_delay, tm_tmp, *rest;
+ if (ifi->ifi_ra_timer == NULL)
+ return;
/*
* Compute a random delay. If the computed value
* corresponds to a time later than the time the next
OpenPOWER on IntegriCloud