Project

General

Profile

Actions

Bug #11913

closed

RADVD breaks on SIGHUP

Added by Jim Pingle 5 months ago. Updated 4 months ago.

Status:
Closed
Priority:
Normal
Category:
IPv6 Router Advertisements (RADVD)
Target version:
Start date:
05/12/2021
Due date:
% Done:

0%

Estimated time:
Plus Target Version:
21.05
Release Notes:
Default
Affected Version:
Affected Architecture:

Description

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[62319]: attempting to reread config file
May  3 17:56:43 pfSense radvd[62319]: warning: AdvRDNSSLifetime <= 2*MaxRtrAdvInterval would allow stale DNS servers to be deleted faster
May  3 17:56:43 pfSense radvd[62319]: 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[62319]: can't join ipv6-allrouters on mvneta1
May  3 17:56:43 pfSense radvd[62319]: resuming normal operation
May  3 17:56:43 pfSense radvd[62319]: can't join ipv6-allrouters on mvneta1

Further notes from Kristof:

Brad pointed at these two commits as potentially relevant:

- https://github.com/radvd-project/radvd/commit/8c120833fd50507880ffda8e2a5cbe7319dc186c
- https://github.com/freebsd/freebsd-ports/commit/1cbc4a6ff605f36cffb881244c86aeeeb00e4664

--

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.

--

Merge request: https://gitlab.netgate.com/pfSense/FreeBSD-ports/-/merge_requests/86

--

We've gone with a slightly different solution. The ports merge request has been updated, and we now also need this:
https://gitlab.netgate.com/pfSense/FreeBSD-src/-/merge_requests/10

--

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
https://gitlab.netgate.com/pfSense/FreeBSD-src/-/merge_requests/13
https://gitlab.netgate.com/pfSense/factory-ports/-/merge_requests/2

--

And finally from Renato:

both merged to 21.05 branches

Actions

Also available in: Atom PDF