while trying to debug a SLAAC configuration problem of mine, I noticed something strange in the documentation:
chapter 31.9.4 states:
Next, create the configuration file, /etc/rtadvd.conf as seen in this example: […]
For a dedicated /64 subnet, nothing else needs to be changed. Otherwise, change the prefixlen# to the correct value.
while `man rtadvd.conf` states:
As described in rtadvd(8), you do not have to set this configuration file
up at all, unless you need some special configurations. You may even
omit the file as a whole. In such cases, the rtadvd daemon will
automatically configure itself using default values specified in the
and indeed, I checked with Wireshark and it is broadcasting the correct prefix length (in my case, /80) with no need to have created that file.
Then my problem is that prefixlen ≠ 64 cannot be used by accept_rtadv or, at least, it is what I understand from RTFS nd6_rts.c line 1495, which reads:
if (ifidlen + pr->ndpr_plen != 128)
(and ifidlen is always 64, as returned by in6_if2idlen())
I'm not sure what's the best solution for the Handbook, but I'd probably remove the `rtadv.conf` example altogether, as it gives no advantage and only the risk of writing it wrong; also, as far as `rtadvd` goes, any prefix length is fine, but then any FreeBSD client won't accept it anyways, so I'm not so sure suggesting what to do "when prefixlen is different" is very useful… a warning about the lack of SLAAC for any other prefixlen could be useful, for people who don't know it already.