RFC 4861 4.1 allows router solicitations from the unspecified address
authorflorian <florian@openbsd.org>
Thu, 13 May 2021 11:22:15 +0000 (11:22 +0000)
committerflorian <florian@openbsd.org>
Thu, 13 May 2021 11:22:15 +0000 (11:22 +0000)
(::). A short survey suggests that some systems respond with a
multicast router advertisement and other don't.

Andrew Forgue pointed out a usecase for this, booting a UEFI system
over http in an IPv6 network only. ("IPv6 support for UEFI IPv6
booting" on bugs@ a long time ago)

There is also no downside in allowing this, any host on the layer 2
network can solicit a router advertisement.

OK phessler

usr.sbin/rad/engine.c

index 9a93983..7c999bc 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: engine.c,v 1.18 2021/01/19 16:54:48 florian Exp $     */
+/*     $OpenBSD: engine.c,v 1.19 2021/05/13 11:22:15 florian Exp $     */
 
 /*
  * Copyright (c) 2018 Florian Obser <florian@openbsd.org>
@@ -480,8 +480,9 @@ parse_rs(struct imsg_ra_rs *rs)
 
        len = rs->len;
 
-       if (!IN6_IS_ADDR_LINKLOCAL(&rs->from.sin6_addr)) {
-               log_warnx("RA from non link local address %s on %s", hbuf,
+       if (!(IN6_IS_ADDR_LINKLOCAL(&rs->from.sin6_addr) ||
+           IN6_IS_ADDR_UNSPECIFIED(&rs->from.sin6_addr))) {
+               log_warnx("RA from invalid address %s on %s", hbuf,
                    if_indextoname(rs->if_index, ifnamebuf));
                return;
        }