From 7586f4d172dd9c3ccc3126fc47dca9e49adec132 Mon Sep 17 00:00:00 2001 From: Tom Gundersen Date: Wed, 24 Jun 2015 15:08:40 +0200 Subject: resolved: set the DNSSEC OK (DO) flag This indicates that we can handle DNSSEC records (per RFC3225), even if all we do is silently drop them. This feature requires EDNS0 support. As we do not yet support larger UDP packets, this feature increases the risk of getting truncated packets. Similarly to how we fall back to plain UDP if EDNS0 fails, we will fall back to plain EDNS0 if EDNS0+DO fails (with the same logic of remembering success and retrying after a grace period after failure). --- src/resolve/resolved-dns-scope.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'src/resolve/resolved-dns-scope.c') diff --git a/src/resolve/resolved-dns-scope.c b/src/resolve/resolved-dns-scope.c index 42478e41e2..80070da2b9 100644 --- a/src/resolve/resolved-dns-scope.c +++ b/src/resolve/resolved-dns-scope.c @@ -185,7 +185,11 @@ int dns_scope_emit(DnsScope *s, int fd, DnsServer *server, DnsPacket *p) { return -EOPNOTSUPP; if (server->possible_features >= DNS_SERVER_FEATURE_LEVEL_EDNS0) { - r = dns_packet_append_opt_rr(p, DNS_PACKET_UNICAST_SIZE_MAX, &saved_size); + bool edns_do; + + edns_do = server->possible_features >= DNS_SERVER_FEATURE_LEVEL_DO; + + r = dns_packet_append_opt_rr(p, DNS_PACKET_UNICAST_SIZE_MAX, edns_do, &saved_size); if (r < 0) return r; -- cgit v1.2.3-54-g00ecf