diff options
author | Sergey Bugaev <bugaevc@gmail.com> | 2021-02-13 17:16:56 +0300 |
---|---|---|
committer | Sergey Bugaev <bugaevc@gmail.com> | 2021-02-22 14:52:13 +0300 |
commit | bb4e030fcb5aa8e6c60615ae5189a3b0e89a0670 (patch) | |
tree | c33f9a743cf803cc1af49ccf4e4a7ecfbf7bc8f7 /src/resolve/resolved-dns-scope.c | |
parent | 4ad017cda57b04b9d65e7da962806cfcc50b5f0c (diff) | |
download | systemd-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.c | 6 |
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) */, |