summaryrefslogtreecommitdiff
path: root/src/resolve/resolved-dns-scope.c
diff options
context:
space:
mode:
authorSergey Bugaev <bugaevc@gmail.com>2021-02-13 17:16:56 +0300
committerSergey Bugaev <bugaevc@gmail.com>2021-02-22 14:52:13 +0300
commitbb4e030fcb5aa8e6c60615ae5189a3b0e89a0670 (patch)
treec33f9a743cf803cc1af49ccf4e4a7ecfbf7bc8f7 /src/resolve/resolved-dns-scope.c
parent4ad017cda57b04b9d65e7da962806cfcc50b5f0c (diff)
downloadsystemd-bb4e030fcb5aa8e6c60615ae5189a3b0e89a0670.tar.gz
resolved: set the AA bit for mDNS responses
This is required by RFC 6762. Fixes https://github.com/systemd/systemd/issues/17972
Diffstat (limited to 'src/resolve/resolved-dns-scope.c')
-rw-r--r--src/resolve/resolved-dns-scope.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/resolve/resolved-dns-scope.c b/src/resolve/resolved-dns-scope.c
index 2d24b5d101..2a8680aa91 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) */,