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;
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)
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;
}