void *userdata) {
Manager *m = userdata;
- DnsServer **l;
int r;
assert(filename);
assert(rvalue);
assert(m);
- if (ltype == DNS_SERVER_FALLBACK)
- l = &m->fallback_dns_servers;
- else
- l = &m->dns_servers;
-
- /* Empty assignment means clear the list */
- if (isempty(rvalue)) {
- while (*l)
- dns_server_free(*l);
-
- return 0;
+ if (isempty(rvalue))
+ /* Empty assignment means clear the list */
+ manager_flush_dns_servers(m, ltype);
+ else {
+ /* Otherwise add to the list */
+ r = manager_parse_dns_server(m, ltype, rvalue);
+ if (r < 0) {
+ log_syntax(unit, LOG_ERR, filename, line, -r, "Failed to parse DNS server string '%s'. Ignoring.", rvalue);
+ return 0;
+ }
}
- r = manager_parse_dns_server(m, ltype, rvalue);
- if (r < 0) {
- log_syntax(unit, LOG_ERR, filename, line, -r, "Failed to parse DNS server string '%s'. Ignoring.", rvalue);
- return 0;
- }
+ /* If we have a manual setting, then we stop reading
+ * /etc/resolv.conf */
+ if (ltype == DNS_SERVER_SYSTEM)
+ m->read_resolv_conf = false;
return 0;
}
void *data,
void *userdata) {
- Manager *m = userdata;
Support support, *v = data;
int r;
assert(filename);
assert(lvalue);
assert(rvalue);
- assert(m);
support = support_from_string(rvalue);
if (support < 0) {
int manager_parse_config_file(Manager *m) {
assert(m);
- return config_parse(NULL, "/etc/systemd/resolved.conf", NULL,
- "Resolve\0",
- config_item_perf_lookup, resolved_gperf_lookup,
- false, false, true, m);
+ return config_parse_many("/etc/systemd/resolved.conf",
+ CONF_DIRS_NULSTR("systemd/resolved.conf"),
+ "Resolve\0",
+ config_item_perf_lookup, resolved_gperf_lookup,
+ false, m);
}