#include "path-util.h"
#include "conf-files.h"
#include "conf-parser.h"
+#include "util.h"
static int network_load_one(Manager *manager, const char *filename) {
_cleanup_network_free_ Network *network = NULL;
network->manager = manager;
- LIST_HEAD_INIT(network->addresses);
- LIST_HEAD_INIT(network->routes);
+ LIST_HEAD_INIT(network->static_addresses);
+ LIST_HEAD_INIT(network->static_routes);
network->addresses_by_section = hashmap_new(uint64_hash_func, uint64_compare_func);
if (!network->addresses_by_section)
if (r < 0) {
log_warning("Could not parse config file %s: %s", filename, strerror(-r));
return r;
- } else
- log_debug("Parsed configuration file %s", filename);
+ }
LIST_PREPEND(networks, manager->networks, network);
network = NULL;
int network_load(Manager *manager) {
Network *network;
- char **files, **f;
+ _cleanup_strv_free_ char **files = NULL;
+ char **f;
int r;
assert(manager);
r = conf_files_list_strv(&files, ".network", NULL, (const char **)manager->network_dirs);
if (r < 0) {
- log_error("failed to enumerate network files: %s", strerror(-r));
+ log_error("Failed to enumerate network files: %s", strerror(-r));
return r;
}
return r;
}
- strv_free(files);
-
return 0;
}
if (!network)
return;
+ assert(network->manager);
+
free(network->filename);
free(network->match_mac);
free(network->description);
- while ((route = network->routes))
+ while ((route = network->static_routes))
route_free(route);
- while ((address = network->addresses))
+ while ((address = network->static_addresses))
address_free(address);
hashmap_free(network->addresses_by_section);
hashmap_free(network->routes_by_section);
- LIST_REMOVE(networks, network->manager->networks, network);
+ if (network->manager->networks)
+ LIST_REMOVE(networks, network->manager->networks, network);
free(network);
}
udev_device_get_driver(device),
udev_device_get_devtype(device),
udev_device_get_sysname(device))) {
- log_debug("Network file %s applies to link %s",
- network->filename,
- udev_device_get_sysname(device));
+ log_debug("%s: found matching network '%s'",
+ udev_device_get_sysname(device),
+ network->filename);
*ret = network;
return 0;
}
int network_apply(Manager *manager, Network *network, Link *link) {
int r;
- log_info("Network '%s' being applied to link '%s'",
- network->description, link->ifname);
-
link->network = network;
r = link_configure(link);