]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
resolved: set the AA bit for mDNS responses 18575/head
authorSergey Bugaev <bugaevc@gmail.com>
Sat, 13 Feb 2021 14:16:56 +0000 (17:16 +0300)
committerSergey Bugaev <bugaevc@gmail.com>
Mon, 22 Feb 2021 11:52:13 +0000 (14:52 +0300)
This is required by RFC 6762.

Fixes https://github.com/systemd/systemd/issues/17972

src/resolve/resolved-dns-scope.c

index 2d24b5d101875c547584ca547676f03c2c7d05a1..2a8680aa9113cd329154f318de194e74963eff7f 100644 (file)
@@ -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) */,