router: improve RA logging
authorstijn@linux-ipv6.be <stijn@linux-ipv6.be>
Thu, 16 Feb 2023 20:30:40 +0000 (22:30 +0200)
committerStijn Tintel <stijn@linux-ipv6.be>
Fri, 17 Feb 2023 12:27:21 +0000 (14:27 +0200)
We only set the RA lifetime to what is configured in UCI when there is a
default route and valid prefix. In any other case, we set it to 0. This
leads to confusion where people believe ra_lifetime is completely
ignored. In case there is a default route, but no valid prefix, a debug
message explains this, but if there is no default route, we silently
override ra_lifetime.

Add a debug message for the latter case, and explicitly mention
overriding ra_lifetime in both cases.

Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
Acked-by: Hans Dedecker <dedeckeh@gmail.com>
src/router.c

index 949cbe74abe1c19cc7f522ca644189b9431b00b2..1c1184971c66ab6d1f3c10775c144df734332898 100644 (file)
@@ -618,17 +618,19 @@ static int send_router_advert(struct interface *iface, const struct in6_addr *fr
        msecs = calc_adv_interval(iface, minvalid, &maxival);
        lifetime = calc_ra_lifetime(iface, maxival);
 
-       if (default_route) {
-               if (!valid_prefix) {
-                       syslog(LOG_WARNING, "A default route is present but there is no public prefix "
-                                       "on %s thus we don't announce a default route!", iface->name);
-                       adv.h.nd_ra_router_lifetime = 0;
-               } else
-                       adv.h.nd_ra_router_lifetime = htons(lifetime < UINT16_MAX ? lifetime : UINT16_MAX);
-
-       } else
+       if (default_route && valid_prefix) {
+               adv.h.nd_ra_router_lifetime = htons(lifetime < UINT16_MAX ? lifetime : UINT16_MAX);
+       } else {
                adv.h.nd_ra_router_lifetime = 0;
 
+               if (default_route) {
+                       syslog(LOG_WARNING, "A default route is present but there is no public prefix "
+                                           "on %s thus we don't announce a default route by overriding ra_lifetime!", iface->name);
+               } else {
+                       syslog(LOG_WARNING, "No default route present, overriding ra_lifetime!");
+               }
+       }
+
        syslog(LOG_DEBUG, "Using a RA lifetime of %d seconds on %s", ntohs(adv.h.nd_ra_router_lifetime), iface->name);
 
        /* DNS options */