Add a -u switch to always log route insertions/deletions.
authorjca <jca@openbsd.org>
Fri, 5 Aug 2016 11:38:00 +0000 (11:38 +0000)
committerjca <jca@openbsd.org>
Fri, 5 Aug 2016 11:38:00 +0000 (11:38 +0000)
Route updates (and associated warnings) are always prefixed with "RTADD"
or "RTDEL".  This is useful for people that previously used the -R
option that got removed.

Tested by Freddy Dissaux.

usr.sbin/route6d/route6d.8
usr.sbin/route6d/route6d.c

index bcd964c..8868fd2 100644 (file)
@@ -1,4 +1,4 @@
-.\"    $OpenBSD: route6d.8,v 1.25 2016/08/05 11:32:28 jca Exp $
+.\"    $OpenBSD: route6d.8,v 1.26 2016/08/05 11:38:00 jca Exp $
 .\"    $KAME: route6d.8,v 1.11 2002/06/02 15:00:30 itojun Exp $
 .\"
 .\" Copyright (c) 1996 WIDE Project. All rights reserved.
@@ -23,7 +23,7 @@
 .Nd RIP6 routing daemon
 .Sh SYNOPSIS
 .Nm route6d
-.Op Fl aDdhlnqSs
+.Op Fl aDdhlnqSsu
 .Sm off
 .Op Fl A No \~ Ar prefix No / Ar preflen , Ar if1 Op , Ar if2 , ...
 .Sm on
@@ -203,6 +203,12 @@ can be decimal, octal prefixed by
 .Li 0 ,
 or hexadecimal prefixed by
 .Li 0x .
+.It Fl u
+Always log route updates (insertions and deletions).
+Route updates are always prefixed with
+.Dq RTADD
+or
+.Dq RTDEL .
 .El
 .Pp
 Upon receipt of signal
index 1f06e71..d695f2b 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: route6d.c,v 1.90 2016/08/05 11:34:51 jca Exp $        */
+/*     $OpenBSD: route6d.c,v 1.91 2016/08/05 11:38:00 jca Exp $        */
 /*     $KAME: route6d.c,v 1.111 2006/10/25 06:38:13 jinmei Exp $       */
 
 /*
@@ -159,6 +159,7 @@ int hflag = 0;      /* don't split horizon */
 int    lflag = 0;      /* exchange site local routes */
 int    sflag = 0;      /* announce static routes w/ split horizon */
 int    Sflag = 0;      /* announce static routes to every interface */
+int    uflag = 0;      /* always log route updates (additions/deletions) */
 unsigned long routetag = 0;    /* route tag attached on originating case */
 
 char   *filter[MAXFILTER];
@@ -247,7 +248,7 @@ main(int argc, char *argv[])
 
        log_init(1); /* log to stderr until daemonized */
 
-       while ((ch = getopt(argc, argv, "A:N:O:T:L:t:adDhlnqsS")) != -1) {
+       while ((ch = getopt(argc, argv, "A:N:O:T:L:t:adDhlnqsSu")) != -1) {
                switch (ch) {
                case 'A':
                case 'N':
@@ -279,6 +280,7 @@ main(int argc, char *argv[])
                FLAG('q', qflag, 1); break;
                FLAG('s', sflag, 1); break;
                FLAG('S', Sflag, 1); break;
+               FLAG('u', uflag, 1); break;
 #undef FLAG
                default:
                        fatalx("Invalid option specified, terminating");
@@ -2564,9 +2566,14 @@ addroute(struct riprt *rrt, const struct in6_addr *gw, struct ifc *ifcp)
        np = &rrt->rrt_info;
        inet_ntop(AF_INET6, (const void *)gw, (char *)buf1, sizeof(buf1));
        inet_ntop(AF_INET6, (void *)&ifcp->ifc_mylladdr, (char *)buf2, sizeof(buf2));
-       log_debug("RTADD: %s/%d gw %s [%d] ifa %s",
-           inet6_n2p(&np->rip6_dest), np->rip6_plen, buf1,
-           np->rip6_metric - 1, buf2);
+       if (uflag)
+               log_info("RTADD: %s/%d gw %s [%d] ifa %s",
+                   inet6_n2p(&np->rip6_dest), np->rip6_plen, buf1,
+                   np->rip6_metric - 1, buf2);
+       else
+               log_debug("RTADD: %s/%d gw %s [%d] ifa %s",
+                   inet6_n2p(&np->rip6_dest), np->rip6_plen, buf1,
+                   np->rip6_metric - 1, buf2);
 
        if (nflag)
                return 0;
@@ -2620,8 +2627,12 @@ delroute(struct netinfo6 *np, struct in6_addr *gw)
        int     len;
 
        inet_ntop(AF_INET6, (void *)gw, (char *)buf2, sizeof(buf2));
-       log_debug("RTDEL: %s/%d gw %s", inet6_n2p(&np->rip6_dest),
-           np->rip6_plen, buf2);
+       if (uflag)
+               log_info("RTDEL: %s/%d gw %s", inet6_n2p(&np->rip6_dest),
+                   np->rip6_plen, buf2);
+       else
+               log_debug("RTDEL: %s/%d gw %s", inet6_n2p(&np->rip6_dest),
+                   np->rip6_plen, buf2);
 
        if (nflag)
                return 0;