X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fresolve%2Fresolved-link.c;h=2c02f0947305e1acf4d880ea99d6352e3e9fe715;hb=edc501d4674dadc304d45a7e1c5b69e207eb8cd4;hp=93ccc04491cf6a0a98de39db18d965264f26ab3a;hpb=4e945a6f7971fd7d1f6b2c62ee3afdaff3c95ce4;p=elogind.git diff --git a/src/resolve/resolved-link.c b/src/resolve/resolved-link.c index 93ccc0449..2c02f0947 100644 --- a/src/resolve/resolved-link.c +++ b/src/resolve/resolved-link.c @@ -150,13 +150,13 @@ static int link_update_dns_servers(Link *l) { assert(l); - LIST_FOREACH(servers, s, l->dns_servers) - s->marked = true; - r = sd_network_get_dns(l->ifindex, &nameservers); if (r < 0) goto clear; + LIST_FOREACH(servers, s, l->dns_servers) + s->marked = true; + STRV_FOREACH(nameserver, nameservers) { union in_addr_union a; int family; @@ -248,7 +248,7 @@ DnsServer* link_find_dns_server(Link *l, int family, const union in_addr_union * return NULL; } -static DnsServer* link_set_dns_server(Link *l, DnsServer *s) { +DnsServer* link_set_dns_server(Link *l, DnsServer *s) { assert(l); if (l->current_dns_server == s) @@ -259,10 +259,13 @@ static DnsServer* link_set_dns_server(Link *l, DnsServer *s) { in_addr_to_string(s->family, &s->address, &ip); log_info("Switching to DNS server %s for interface %s.", strna(ip), l->name); - } else - log_info("No DNS server set for interface %s.", l->name); + } l->current_dns_server = s; + + if (l->unicast_scope) + dns_cache_flush(&l->unicast_scope->cache); + return s; }