Bug 252121

Summary: rtadvd should not put an upper limit on rdnssltime and dnsslltime
Product: Base System Reporter: Kevin Barry <ta0kira>
Component: binAssignee: freebsd-bugs (Nobody) <bugs>
Status: Open ---    
Severity: Affects Some People CC: freebsdbugs
Priority: --- Keywords: easy
Version: 12.2-RELEASE   
Hardware: Any   
OS: Any   
Attachments:
Description Flags
Removes upper limit on RDNSS and DNSSL lifetimes. none

Description Kevin Barry 2020-12-25 01:57:52 UTC
Created attachment 220903 [details]
Removes upper limit on RDNSS and DNSSL lifetimes.

rtadvd (in config.c) limits both rdnssltime and dnsslltime to 2*maxinterval. If this limit is exceeded, rtadvd completely discards the corresponding rdnss or dnssl and sends router advertisements without it. This means that sending RAs every 15s places an upper limit on rdnssltime of 30s.

Specifically, this short lifetime seems to prevent Android 11 (maybe others) from accepting the RDNSS option. (It's unclear what its minimum is, but 600s seems to be fine.)

I've attached a patch to effectively remove the upper limits. To make it minimally intrusive, I just set the upper limit to USHRT_MAX. (Potentially making it 32-bit would be a separate issue.)

Note that RFC 8106 (https://tools.ietf.org/html/rfc8106) recommends a default value of 3*maxinterval for both parameters, and doesn't mention any sort of upper limit.