X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fresolve%2Fresolved-manager.c;h=fed9a7797359020bb2c30d62289a7a494f257637;hb=a2ba62c719224a4b47751623ca5e8b0333f49721;hp=3d2979dbbe196922eba809f3dcad72f6f1b592f8;hpb=ad867662936a4c7ab2c7116d804c272338801231;p=elogind.git diff --git a/src/resolve/resolved-manager.c b/src/resolve/resolved-manager.c index 3d2979dbb..fed9a7797 100644 --- a/src/resolve/resolved-manager.c +++ b/src/resolve/resolved-manager.c @@ -282,7 +282,7 @@ static int manager_network_monitor_listen(Manager *m) { assert(m); - r = sd_network_monitor_new(NULL, &m->network_monitor); + r = sd_network_monitor_new(&m->network_monitor, NULL); if (r < 0) return r; @@ -373,18 +373,12 @@ int config_parse_dnsv( } int manager_parse_config_file(Manager *m) { - int r; - assert(m); - r = config_parse(NULL, "/etc/systemd/resolved.conf", NULL, - "Resolve\0", - config_item_perf_lookup, resolved_gperf_lookup, - false, false, m); - if (r < 0) - log_warning("Failed to parse configuration file: %s", strerror(-r)); - - return 0; + return config_parse(NULL, "/etc/systemd/resolved.conf", NULL, + "Resolve\0", + config_item_perf_lookup, resolved_gperf_lookup, + false, false, true, m); } int manager_new(Manager **ret) { @@ -884,3 +878,23 @@ void manager_next_dns_server(Manager *m) { m->current_dns_server = m->dns_servers; } + +uint32_t manager_find_mtu(Manager *m) { + uint32_t mtu = 0; + Link *l; + Iterator i; + + /* If we don't know on which link a DNS packet would be + * delivered, let's find the largest MTU that works on all + * interfaces we know of */ + + HASHMAP_FOREACH(l, m->links, i) { + if (l->mtu <= 0) + continue; + + if (mtu <= 0 || l->mtu < mtu) + mtu = l->mtu; + } + + return mtu; +}