diff options
author | Lennart Poettering <lennart@poettering.net> | 2016-01-20 21:28:22 +0100 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2016-01-25 15:59:40 +0100 |
commit | edbcc1fdd94355c5cf22263ba2c1cfa4ec2eb010 (patch) | |
tree | 7fe83782671de558758ce370f0da0d4efa48f085 /src/resolve/resolved-dns-scope.c | |
parent | 6955a3ba9dc5d36487724878333a5745987e6656 (diff) |
resolve: generate a nice clean error when clients try to resolve a name when the network is down
Diffstat (limited to 'src/resolve/resolved-dns-scope.c')
-rw-r--r-- | src/resolve/resolved-dns-scope.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/resolve/resolved-dns-scope.c b/src/resolve/resolved-dns-scope.c index 8a52d66fad..ac4887abea 100644 --- a/src/resolve/resolved-dns-scope.c +++ b/src/resolve/resolved-dns-scope.c @@ -1015,3 +1015,22 @@ bool dns_scope_name_needs_search_domain(DnsScope *s, const char *name) { return dns_name_is_single_label(name); } + +bool dns_scope_network_good(DnsScope *s) { + Iterator i; + Link *l; + + /* Checks whether the network is in good state for lookups on this scope. For mDNS/LLMNR/Classic DNS scopes + * bound to links this is easy, as they don't even exist if the link isn't in a suitable state. For the global + * DNS scope we check whether there are any links that are up and have an address. */ + + if (s->link) + return true; + + HASHMAP_FOREACH(l, s->manager->links, i) { + if (link_relevant(l, AF_UNSPEC, false)) + return true; + } + + return false; +} |