summaryrefslogtreecommitdiff
path: root/src/resolve/resolved-manager.c
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2022-02-02 15:45:59 +0100
committerLennart Poettering <lennart@poettering.net>2022-02-16 22:20:10 +0100
commit281df579a725188cf46d420edd6ea2415c8b925e (patch)
treee97134ea35c63899928c56bef5079e7b45baa994 /src/resolve/resolved-manager.c
parent5d11af60ac997606269385bcfb0ec5905fc01c38 (diff)
downloadsystemd-281df579a725188cf46d420edd6ea2415c8b925e.tar.gz
Revert "resolved: filter out our own stub resolvers when parsing servers"
This reverts commit 0ad4efb14beea9148838a0d974821e3b98cafc47. See https://github.com/systemd/systemd/pull/20559#issuecomment-1028011030 for reasoning. Quoting: > I think it should be OK to advertise extra stub listeners to local > clients, but you prohibit this now. i.e. there are two different > concepts here, and we shouldn't mix them up: > > 1. tracking configured dns servers and advertise them to local programs > 2. actually using them ourselves > > I am pretty sure that our own stubs are OK for 1 but not OK for 2, > hence we should filter at the time of use not at the time of parse.
Diffstat (limited to 'src/resolve/resolved-manager.c')
-rw-r--r--src/resolve/resolved-manager.c23
1 files changed, 8 insertions, 15 deletions
diff --git a/src/resolve/resolved-manager.c b/src/resolve/resolved-manager.c
index d10fd73d4d..615431ebb7 100644
--- a/src/resolve/resolved-manager.c
+++ b/src/resolve/resolved-manager.c
@@ -1619,37 +1619,30 @@ bool manager_next_dnssd_names(Manager *m) {
return tried;
}
-bool manager_server_address_is_stub(Manager *m, int family, const union in_addr_union *address, uint16_t port) {
+bool manager_server_is_stub(Manager *m, DnsServer *s) {
DnsStubListenerExtra *l;
assert(m);
- assert(address);
+ assert(s);
/* Safety check: we generally already skip the main stub when parsing configuration. But let's be
* extra careful, and check here again */
- if (family == AF_INET &&
- address->in.s_addr == htobe32(INADDR_DNS_STUB) &&
- port == 53)
+ if (s->family == AF_INET &&
+ s->address.in.s_addr == htobe32(INADDR_DNS_STUB) &&
+ dns_server_port(s) == 53)
return true;
/* Main reason to call this is to check server data against the extra listeners, and filter things
* out. */
ORDERED_SET_FOREACH(l, m->dns_extra_stub_listeners)
- if (family == l->family &&
- in_addr_equal(family, address, &l->address) &&
- port == dns_stub_listener_extra_port(l))
+ if (s->family == l->family &&
+ in_addr_equal(s->family, &s->address, &l->address) &&
+ dns_server_port(s) == dns_stub_listener_extra_port(l))
return true;
return false;
}
-bool manager_server_is_stub(Manager *m, DnsServer *s) {
- assert(m);
- assert(s);
-
- return manager_server_address_is_stub(m, s->family, &s->address, dns_server_port(s));
-}
-
int socket_disable_pmtud(int fd, int af) {
int r;