RADVD breaks on SIGHUP
Moving from internal Redmine 6287 since this affects CE and Plus and isn't hardware-dependent.
Original Description from Kristof Provost
Affected version: 21.05.a.20210503.0100
Observed on SG-2100, but likely affects all devices.
On a dual-stack setup, with a WAN that's DHCP / DHCPv6-PD radvd breaks after some time and stops sending out router advertisements.
This turns out to happen when it receives a SIGHUP (either manually, or I assume after DCHPv6-PD reconfiguration). It then ends up in an invalid state which stops it from sending out router advertisements. Stopping and starting it through status_services.php returns it to normal operation.
The logs associated with this are:
May 3 17:56:43 pfSense radvd: attempting to reread config file May 3 17:56:43 pfSense radvd: warning: AdvRDNSSLifetime <= 2*MaxRtrAdvInterval would allow stale DNS servers to be deleted faster May 3 17:56:43 pfSense radvd: warning: (/var/etc/radvd.conf:22) AdvRDNSSLifetime <= 2*MaxRtrAdvInterval would allow stale DNS servers to be deleted faster May 3 17:56:43 pfSense radvd: can't join ipv6-allrouters on mvneta1 May 3 17:56:43 pfSense radvd: resuming normal operation May 3 17:56:43 pfSense radvd: can't join ipv6-allrouters on mvneta1
Further notes from Kristof:
Brad pointed at these two commits as potentially relevant:
The problem seems to be that we can't join a group that we've already joined. See FreeBSD-src/sys/netinet6/in6_mcast.c:2020.
An experimental patch that leaves the group before joining it (and ignores errors from the leave) fixes the issue.
I'm checking to see if that's the best fix. I expect to have a pull request ready later today.
We've gone with a slightly different solution. The ports merge request has been updated, and we now also need this:
The relevant changes have all landed in the 21_09 branches and have been confirmed to work there.
Merge requests are open for 21_05
And finally from Renato:
both merged to 21.05 branches