]> git.ipfire.org Git - thirdparty/systemd.git/commit - src/resolve/resolved-dns-server.c
resolved: implement minimal EDNS0 support
authorTom Gundersen <teg@jklm.no>
Tue, 23 Jun 2015 21:06:09 +0000 (23:06 +0200)
committerTom Gundersen <teg@jklm.no>
Fri, 27 Nov 2015 00:35:34 +0000 (01:35 +0100)
commit9c5e12a4314e7192e834e1b855e5e80111e636a6
treefc82c7ab5220ad0847ed439b44946528a327d50b
parentdc913c9a1f243bca291d47b1a5d8e270c471d113
resolved: implement minimal EDNS0 support

This is a minimal implementation of RFC6891. Only default values
are used, so in reality this will be a noop.

EDNS0 support is dependent on the current server's feature level,
so appending the OPT pseudo RR is done when the packet is emitted,
rather than when it is assembled. To handle different feature
levels on retransmission, we strip off the OPT RR again after
sending the packet.

Similarly, to how we fall back to TCP if UDP fails, we fall back
to plain UDP if EDNS0 fails (but if EDNS0 ever succeeded we never
fall back again, and after a timeout we will retry EDNS0).
src/resolve/resolved-dns-packet.c
src/resolve/resolved-dns-packet.h
src/resolve/resolved-dns-scope.c
src/resolve/resolved-dns-scope.h
src/resolve/resolved-dns-server.c
src/resolve/resolved-dns-server.h
src/resolve/resolved-dns-transaction.c