From: Sergey Bugaev Date: Sat, 13 Feb 2021 14:16:56 +0000 (+0300) Subject: resolved: set the AA bit for mDNS responses X-Git-Tag: v248-rc1~9^2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F18575%2Fhead;p=thirdparty%2Fsystemd.git resolved: set the AA bit for mDNS responses This is required by RFC 6762. Fixes https://github.com/systemd/systemd/issues/17972 --- diff --git a/src/resolve/resolved-dns-scope.c b/src/resolve/resolved-dns-scope.c index 2d24b5d1018..2a8680aa911 100644 --- a/src/resolve/resolved-dns-scope.c +++ b/src/resolve/resolved-dns-scope.c @@ -883,6 +883,7 @@ int dns_scope_make_reply_packet( _cleanup_(dns_packet_unrefp) DnsPacket *p = NULL; unsigned n_answer = 0, n_soa = 0; int r; + bool c_or_aa; assert(s); assert(ret); @@ -896,11 +897,14 @@ int dns_scope_make_reply_packet( if (r < 0) return r; + /* mDNS answers must have the Authoritative Answer bit set, see RFC 6762, section 18.4. */ + c_or_aa = s->protocol == DNS_PROTOCOL_MDNS; + DNS_PACKET_HEADER(p)->id = id; DNS_PACKET_HEADER(p)->flags = htobe16(DNS_PACKET_MAKE_FLAGS( 1 /* qr */, 0 /* opcode */, - 0 /* c */, + c_or_aa, 0 /* tc */, tentative, 0 /* (ra) */,