From: Roy Marples Date: Wed, 26 Sep 2018 12:27:37 +0000 (+0100) Subject: OpenBSD: Allow dhcpcd to work alongside slaacd X-Git-Tag: v7.1.0~23 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5b31e323a0e8fed63b65d8b9027d9b93ca9560cb;p=thirdparty%2Fdhcpcd.git OpenBSD: Allow dhcpcd to work alongside slaacd Not that you should be doing this, but it appears some people want two daemons handling the RA. --- diff --git a/src/dhcpcd.c b/src/dhcpcd.c index 2985ed35..55558c3c 100644 --- a/src/dhcpcd.c +++ b/src/dhcpcd.c @@ -451,6 +451,10 @@ configure_interface1(struct interface *ifp) ifo->options &= ~(DHCPCD_IPV6RS | DHCPCD_DHCP6 | DHCPCD_WAITIP6); + if (!(ifo->options & DHCPCD_IPV6RS)) + ifo->options &= + ~(DHCPCD_IPV6RA_AUTOCONF | DHCPCD_IPV6RA_REQRDNSS); + /* We want to setup INET6 on the interface as soon as possible. */ if (ifp->active == IF_ACTIVE_USER && ifo->options & DHCPCD_IPV6 && diff --git a/src/if-bsd.c b/src/if-bsd.c index cdd959a6..c1a6be86 100644 --- a/src/if-bsd.c +++ b/src/if-bsd.c @@ -1393,8 +1393,20 @@ set_ifxflags(int s, const struct interface *ifp) /* * If not doing autoconf, don't disable the kernel from doing it. * If we need to, we should have another option actively disable it. + * + * OpenBSD moved from kernel based SLAAC to userland via slaacd(8). + * It has a similar featureset to dhcpcd such as stable private + * addresses, but lacks the ability to handle DNS inside the RA + * which is a serious shortfall in this day and age. + * Appease their user base by working alongside slaacd(8) if + * dhcpcd is instructed not to do auto configuration of addresses. */ - if (ifp->options->options & DHCPCD_IPV6RS) +#if defined(ND6_IFF_ACCEPT_RTADV) +#define BSD_AUTOCONF DHCPCD_IPV6RS +#else +#define BSD_AUTOCONF DHCPCD_IPV6RA_AUTOCONF +#endif + if (ifp->options->options & BSD_AUTOCONF) flags &= ~IFXF_AUTOCONF6; if (ifr.ifr_flags == flags) return 0;