odhcpd: add DNR (RFC 9463) support
authorDavid Härdeman <david@hardeman.nu>
Fri, 9 Feb 2024 13:14:03 +0000 (14:14 +0100)
committerdedeckeh <dedeckeh@gmail.com>
Sun, 29 Dec 2024 11:50:42 +0000 (12:50 +0100)
commit6d342cc03bf72f27d0838942d009bf1c5df4f954
tree6301afd3e4f9bdfcefd7940208827019542ac3cc
parent2859741d971efaed279585e9d7ad3aafa49d936a
odhcpd: add DNR (RFC 9463) support

Discovery of Network-designated Resolvers (DNR) allows devices on the network
to discover encrypted DNS resolvers, which has so far required either manual
configuration or other approaches (like systemd-resolved's "opportunistic"
mode).

To enable DNR, a new uci parameter has been added, which needs to contain at
the very least, the priority (1-65535, lower = higher priority) and the server
hostname (Authentication Domain Name, ADN, to use the wording of RFC9463):

config dhcp 'lan'
        …
        list dnr '100 foobar.example.com'

Optionally (and preferably), a comma-separated list of IP addresses and
SvcParams can also be specified, like this (line wrapping added):

config dhcp 'lan'
        …
        list dnr '100 resolver1.example.com
                    fda7:ab54:69fb::1,fda7:ab54:69fb::2,10.0.0.1
                    alpn=dot port=853'
        list dnr '200 resolver2.example.com
                    fda7:ab54:69fb::2,10.0.1.1,10.0.1.2
                    alpn=dot port=853'

Client support is on it's way (e.g. in systemd PR #30952 or in the Windows
Insiders program).

Signed-off-by: David Härdeman <david@hardeman.nu>
README
src/config.c
src/dhcpv4.c
src/dhcpv4.h
src/dhcpv6.c
src/dhcpv6.h
src/odhcpd.h
src/router.c