X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fnetwork%2Fnetworkd-network.c;h=40f6b230584478e9104e17b05f2ec7899d2320ea;hb=5972fe953ec56c77936a1e612ca87d8a0e6c0c64;hp=0326fe675bae06e3c11fae58142cd7abd80d44e7;hpb=b3070dc0258831c7e2b13624f75fa3dbd80d9833;p=elogind.git diff --git a/src/network/networkd-network.c b/src/network/networkd-network.c index 0326fe675..40f6b2305 100644 --- a/src/network/networkd-network.c +++ b/src/network/networkd-network.c @@ -65,7 +65,11 @@ static int network_load_one(Manager *manager, const char *filename) { if (!network->filename) return log_oom(); - r = config_parse(NULL, filename, file, "Match\0Network\0Address\0Route\0", config_item_perf_lookup, + network->dhcp_dns = true; + network->dhcp_hostname = true; + network->dhcp_domainname = true; + + r = config_parse(NULL, filename, file, "Match\0Network\0Address\0Route\0DHCPv4\0", config_item_perf_lookup, (void*) network_gperf_lookup, false, false, network); if (r < 0) { log_warning("Could not parse config file %s: %s", filename, strerror(-r)); @@ -112,7 +116,7 @@ int network_load(Manager *manager) { while ((network = manager->networks)) network_free(network); - r = conf_files_list_strv(&files, ".network", NULL, (const char **)manager->network_dirs); + r = conf_files_list_strv(&files, ".network", NULL, network_dirs); if (r < 0) { log_error("Failed to enumerate network files: %s", strerror(-r)); return r; @@ -144,6 +148,8 @@ void network_free(Network *network) { free(network->description); + address_free(network->dns); + while ((route = network->static_routes)) route_free(route); @@ -166,9 +172,6 @@ int network_get(Manager *manager, struct udev_device *device, Network **ret) { assert(device); assert(ret); - if (manager_should_reload(manager)) - manager_load_config(manager); - LIST_FOREACH(networks, network, manager->networks) { if (net_match_config(network->match_mac, network->match_path, network->match_driver, network->match_type, @@ -200,6 +203,12 @@ int network_apply(Manager *manager, Network *network, Link *link) { if (r < 0) return r; + if (network->dns) { + r = manager_update_resolv_conf(manager); + if (r < 0) + return r; + } + return 0; }