From 636e813dc98ea40c58c6c85bc5e7e3c9f0904ea2 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 24 Nov 2015 16:48:13 +0100 Subject: resolved: unify code for parsing dns server information Let's use the same parser when parsing dns server information from /etc/resolv.conf and our native configuration file. Also, move all code that manages lists of dns servers to a single place. resolved-dns-server.c --- src/resolve/resolved-dns-server.c | 42 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) (limited to 'src/resolve/resolved-dns-server.c') diff --git a/src/resolve/resolved-dns-server.c b/src/resolve/resolved-dns-server.c index e803f635ab..3d6a6c92b3 100644 --- a/src/resolve/resolved-dns-server.c +++ b/src/resolve/resolved-dns-server.c @@ -161,3 +161,45 @@ const struct hash_ops dns_server_hash_ops = { .hash = dns_server_hash_func, .compare = dns_server_compare_func }; + +void manager_flush_dns_servers(Manager *m, DnsServerType type) { + DnsServer **first, *s; + + assert(m); + + first = type == DNS_SERVER_FALLBACK ? &m->fallback_dns_servers : &m->dns_servers; + + while (*first) { + s = *first; + + LIST_REMOVE(servers, *first, s); + dns_server_unref(s); + } +} + +void manager_flush_marked_dns_servers(Manager *m, DnsServerType type) { + DnsServer **first, *s, *next; + + assert(m); + + first = type == DNS_SERVER_FALLBACK ? &m->fallback_dns_servers : &m->dns_servers; + + LIST_FOREACH_SAFE(servers, s, next, *first) { + if (!s->marked) + continue; + + LIST_REMOVE(servers, *first, s); + dns_server_unref(s); + } +} + +void manager_mark_dns_servers(Manager *m, DnsServerType type) { + DnsServer *first, *s; + + assert(m); + + first = type == DNS_SERVER_FALLBACK ? m->fallback_dns_servers : m->dns_servers; + + LIST_FOREACH(servers, s, first) + s->marked = true; +} -- cgit v1.2.3-54-g00ecf