summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Klink <flokli@flokli.de>2019-11-23 11:45:34 +0100
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2020-05-31 07:05:13 +0200
commit2bca2d77d37d93bcad48e104fec499f5e5c3332a (patch)
tree626c7ce00abdb4c2670540ca3e6076f41f1d8c8b
parenta3f60204325a820705cd00e87c27d429bd22b252 (diff)
downloadsystemd-2bca2d77d37d93bcad48e104fec499f5e5c3332a.tar.gz
resolved-dns-query: remove dns_query_candidate_is_routable
Resolved can't reliably determine on whether "it makes sense" to query AAAA records when not explicitly specifying it in the request, so we shouldn't remove them. After having done the resolving, applications can use RFC6724 to determine whether that address is reachable. We can't know whether an address is reachable before having resolved it and inspecting the routing table, and not resolving AAAA just because there's no IPv6 default route on the main interface link them breaks various setups, including IPv6-providing wireguard tunnels on a non-dualstacked environment. Fixes #5782 Fixes #5915 Fixes #8017 (cherry picked from commit 90bdc8be66765df09bbc355783cee7204a5ebb31)
-rw-r--r--src/resolve/resolved-dns-query.c28
1 files changed, 0 insertions, 28 deletions
diff --git a/src/resolve/resolved-dns-query.c b/src/resolve/resolved-dns-query.c
index 4a41921cf3..d6eca6dfdd 100644
--- a/src/resolve/resolved-dns-query.c
+++ b/src/resolve/resolved-dns-query.c
@@ -212,31 +212,6 @@ static DnsTransactionState dns_query_candidate_state(DnsQueryCandidate *c) {
return state;
}
-static bool dns_query_candidate_is_routable(DnsQueryCandidate *c, uint16_t type) {
- int family;
-
- assert(c);
-
- /* Checks whether the specified RR type matches an address family that is routable on the link(s) the scope of
- * this candidate belongs to. Specifically, whether there's a routable IPv4 address on it if we query an A RR,
- * or a routable IPv6 address if we query an AAAA RR. */
-
- if (!c->query->suppress_unroutable_family)
- return true;
-
- if (c->scope->protocol != DNS_PROTOCOL_DNS)
- return true;
-
- family = dns_type_to_af(type);
- if (family < 0)
- return true;
-
- if (c->scope->link)
- return link_relevant(c->scope->link, family, false);
- else
- return manager_routable(c->scope->manager, family);
-}
-
static int dns_query_candidate_setup_transactions(DnsQueryCandidate *c) {
DnsQuestion *question;
DnsResourceKey *key;
@@ -253,9 +228,6 @@ static int dns_query_candidate_setup_transactions(DnsQueryCandidate *c) {
_cleanup_(dns_resource_key_unrefp) DnsResourceKey *new_key = NULL;
DnsResourceKey *qkey;
- if (!dns_query_candidate_is_routable(c, key->type))
- continue;
-
if (c->search_domain) {
r = dns_resource_key_new_append_suffix(&new_key, key, c->search_domain->name);
if (r < 0)