diff options
author | Lennart Poettering <lennart@poettering.net> | 2022-02-02 15:45:59 +0100 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2022-02-16 22:20:10 +0100 |
commit | 281df579a725188cf46d420edd6ea2415c8b925e (patch) | |
tree | e97134ea35c63899928c56bef5079e7b45baa994 /src/resolve/resolved-manager.c | |
parent | 5d11af60ac997606269385bcfb0ec5905fc01c38 (diff) | |
download | systemd-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.c | 23 |
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; |