Module Name: src Committed By: roy Date: Mon Nov 11 13:42:49 UTC 2019
Modified Files: src/usr.sbin/rtadvd: config.c rtadvd.8 rtadvd.c rtadvd.h Log Message: rtadvd: Add C flag to control the zeroing of the leaving configuration This is only intended to assist the testing of clients which consume Router Advertisement messages, such as dhcpcd(8). To generate a diff of this commit: cvs rdiff -u -r1.42 -r1.43 src/usr.sbin/rtadvd/config.c cvs rdiff -u -r1.26 -r1.27 src/usr.sbin/rtadvd/rtadvd.8 cvs rdiff -u -r1.70 -r1.71 src/usr.sbin/rtadvd/rtadvd.c cvs rdiff -u -r1.19 -r1.20 src/usr.sbin/rtadvd/rtadvd.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/usr.sbin/rtadvd/config.c diff -u src/usr.sbin/rtadvd/config.c:1.42 src/usr.sbin/rtadvd/config.c:1.43 --- src/usr.sbin/rtadvd/config.c:1.42 Sun Nov 10 21:32:38 2019 +++ src/usr.sbin/rtadvd/config.c Mon Nov 11 13:42:49 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: config.c,v 1.42 2019/11/10 21:32:38 roy Exp $ */ +/* $NetBSD: config.c,v 1.43 2019/11/11 13:42:49 roy Exp $ */ /* $KAME: config.c,v 1.93 2005/10/17 14:40:02 suz Exp $ */ /* @@ -719,6 +719,11 @@ getconfig(const char *intface, int exith TAILQ_FOREACH(rai, &ralist, next) { if (rai->ifindex == tmp->ifindex) { TAILQ_REMOVE(&ralist, rai, next); + if (Cflag) { + free_rainfo(rai); + rai = NULL; + break; + } /* If we already have a leaving RA use that * as this config hasn't been advertised */ if (rai->leaving) { Index: src/usr.sbin/rtadvd/rtadvd.8 diff -u src/usr.sbin/rtadvd/rtadvd.8:1.26 src/usr.sbin/rtadvd/rtadvd.8:1.27 --- src/usr.sbin/rtadvd/rtadvd.8:1.26 Mon Nov 6 15:15:04 2017 +++ src/usr.sbin/rtadvd/rtadvd.8 Mon Nov 11 13:42:49 2019 @@ -1,4 +1,4 @@ -.\" $NetBSD: rtadvd.8,v 1.26 2017/11/06 15:15:04 christos Exp $ +.\" $NetBSD: rtadvd.8,v 1.27 2019/11/11 13:42:49 roy Exp $ .\" $KAME: rtadvd.8,v 1.24 2002/05/31 16:16:08 jinmei 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 November 6, 2017 +.Dd November 11, 2019 .Dt RTADVD 8 .Os .Sh NAME @@ -36,7 +36,7 @@ .Nd router advertisement daemon .Sh SYNOPSIS .Nm -.Op Fl DdfRs +.Op Fl CDdfRs .Op Fl c Ar configfile .Op Fl M Ar ifname .Op Fl p Ar pidfile @@ -112,6 +112,10 @@ advertising interface. The command line options are: .Bl -tag -width indent .\" +.It Fl C +Don't expire the existing configuration on receipt of SIGHUP. +This option is only intended to aid the testing of clients that consume +Router Advertisement messages. .It Fl c Ar configfile Specify an alternate location, .Ar configfile , @@ -175,7 +179,9 @@ to reload the configuration file .Pa /etc/rtadvd.conf . If an invalid parameter is found in the configuration file upon the reload, the entry will be ignored and the old configuration will be used. -When parameters in an existing entry are updated, +When parameters in an existing entry are updated and the +.Fl C +flag is not used, .Nm will send Router Advertisement messages with the old configuration but zero router lifetime to the interface first, and then start to send a new message. Index: src/usr.sbin/rtadvd/rtadvd.c diff -u src/usr.sbin/rtadvd/rtadvd.c:1.70 src/usr.sbin/rtadvd/rtadvd.c:1.71 --- src/usr.sbin/rtadvd/rtadvd.c:1.70 Sun Nov 10 21:07:39 2019 +++ src/usr.sbin/rtadvd/rtadvd.c Mon Nov 11 13:42:49 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: rtadvd.c,v 1.70 2019/11/10 21:07:39 roy Exp $ */ +/* $NetBSD: rtadvd.c,v 1.71 2019/11/11 13:42:49 roy Exp $ */ /* $KAME: rtadvd.c,v 1.92 2005/10/17 14:40:02 suz Exp $ */ /* @@ -89,7 +89,7 @@ static char *mcastif; int sock; int rtsock = -1; int accept_rr = 0; -int dflag = 0, sflag = 0, Dflag; +int Cflag = 0, dflag = 0, sflag = 0, Dflag; static char **if_argv; static int if_argc; @@ -194,6 +194,9 @@ main(int argc, char *argv[]) case 'c': conffile = optarg; break; + case 'C': + Cflag++; + break; case 'd': dflag++; break; Index: src/usr.sbin/rtadvd/rtadvd.h diff -u src/usr.sbin/rtadvd/rtadvd.h:1.19 src/usr.sbin/rtadvd/rtadvd.h:1.20 --- src/usr.sbin/rtadvd/rtadvd.h:1.19 Fri Apr 20 16:37:17 2018 +++ src/usr.sbin/rtadvd/rtadvd.h Mon Nov 11 13:42:49 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: rtadvd.h,v 1.19 2018/04/20 16:37:17 roy Exp $ */ +/* $NetBSD: rtadvd.h,v 1.20 2019/11/11 13:42:49 roy Exp $ */ /* $KAME: rtadvd.h,v 1.30 2005/10/17 14:40:02 suz Exp $ */ /* @@ -197,3 +197,5 @@ void ra_timer_set_short_delay(struct rai int prefix_match(struct in6_addr *, int, struct in6_addr *, int); struct rainfo *if_indextorainfo(unsigned int); struct prefix *find_prefix(struct rainfo *, struct in6_addr *, int); + +extern int Cflag;