1
0
mirror of https://github.com/systemd/systemd.git synced 2024-11-02 02:21:44 +03:00

resolved: make sure that route-only domains are never added to /etc/resolv.conf

After all, /etc/resolv.conf doesn't know the concept of "route-only domains",
hence the domains should really not appear there.
This commit is contained in:
Lennart Poettering 2016-06-15 22:30:11 +02:00
parent 35ca4ce022
commit 6f7da49d00
3 changed files with 13 additions and 3 deletions

View File

@ -1153,7 +1153,7 @@ int manager_compile_dns_servers(Manager *m, OrderedSet **dns) {
return 0; return 0;
} }
int manager_compile_search_domains(Manager *m, OrderedSet **domains) { int manager_compile_search_domains(Manager *m, OrderedSet **domains, int filter_route) {
DnsSearchDomain *d; DnsSearchDomain *d;
Iterator i; Iterator i;
Link *l; Link *l;
@ -1167,6 +1167,11 @@ int manager_compile_search_domains(Manager *m, OrderedSet **domains) {
return r; return r;
LIST_FOREACH(domains, d, m->search_domains) { LIST_FOREACH(domains, d, m->search_domains) {
if (filter_route >= 0 &&
d->route_only != !!filter_route)
continue;
r = ordered_set_put(*domains, d->name); r = ordered_set_put(*domains, d->name);
if (r == -EEXIST) if (r == -EEXIST)
continue; continue;
@ -1177,6 +1182,11 @@ int manager_compile_search_domains(Manager *m, OrderedSet **domains) {
HASHMAP_FOREACH(l, m->links, i) { HASHMAP_FOREACH(l, m->links, i) {
LIST_FOREACH(domains, d, l->search_domains) { LIST_FOREACH(domains, d, l->search_domains) {
if (filter_route >= 0 &&
d->route_only != !!filter_route)
continue;
r = ordered_set_put(*domains, d->name); r = ordered_set_put(*domains, d->name);
if (r == -EEXIST) if (r == -EEXIST)
continue; continue;

View File

@ -162,7 +162,7 @@ DEFINE_TRIVIAL_CLEANUP_FUNC(Manager*, manager_free);
int manager_is_own_hostname(Manager *m, const char *name); int manager_is_own_hostname(Manager *m, const char *name);
int manager_compile_dns_servers(Manager *m, OrderedSet **servers); int manager_compile_dns_servers(Manager *m, OrderedSet **servers);
int manager_compile_search_domains(Manager *m, OrderedSet **domains); int manager_compile_search_domains(Manager *m, OrderedSet **domains, int filter_route);
DnssecMode manager_get_dnssec_mode(Manager *m); DnssecMode manager_get_dnssec_mode(Manager *m);
bool manager_dnssec_supported(Manager *m); bool manager_dnssec_supported(Manager *m);

View File

@ -232,7 +232,7 @@ int manager_write_resolv_conf(Manager *m) {
if (r < 0) if (r < 0)
return log_warning_errno(r, "Failed to compile list of DNS servers: %m"); return log_warning_errno(r, "Failed to compile list of DNS servers: %m");
r = manager_compile_search_domains(m, &domains); r = manager_compile_search_domains(m, &domains, false);
if (r < 0) if (r < 0)
return log_warning_errno(r, "Failed to compile list of search domains: %m"); return log_warning_errno(r, "Failed to compile list of search domains: %m");