LIST_HEAD_INIT(network->static_addresses);
LIST_HEAD_INIT(network->static_routes);
- network->stacked_netdevs = hashmap_new(string_hash_func, string_compare_func);
+ network->stacked_netdevs = hashmap_new(&string_hash_ops);
if (!network->stacked_netdevs)
return log_oom();
- network->addresses_by_section = hashmap_new(NULL, NULL);
+ network->addresses_by_section = hashmap_new(NULL);
if (!network->addresses_by_section)
return log_oom();
- network->routes_by_section = hashmap_new(NULL, NULL);
+ network->routes_by_section = hashmap_new(NULL);
if (!network->routes_by_section)
return log_oom();
network->dhcp_hostname = true;
network->dhcp_routes = true;
network->dhcp_sendhost = true;
+ network->dhcp_route_metric = DHCP_ROUTE_METRIC;
network->llmnr = LLMNR_SUPPORT_YES;
r = config_parse(NULL, filename, file,
- "Match\0Network\0Address\0Route\0DHCP\0DHCPv4\0",
+ "Match\0"
+ "Link\0"
+ "Network\0"
+ "Address\0"
+ "Route\0"
+ "DHCP\0"
+ "DHCPv4\0"
+ "BridgePort\0",
config_item_perf_lookup, network_network_gperf_lookup,
false, false, true, network);
if (r < 0)
network_free(network);
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;
- }
+ if (r < 0)
+ return log_error_errno(r, "Failed to enumerate network files: %m");
STRV_FOREACH_BACKWARDS(f, files) {
r = network_load_one(manager, *f);
free(network->description);
free(network->dhcp_vendor_class_identifier);
+ free(network->mac);
+
strv_free(network->ntp);
strv_free(network->dns);
strv_free(network->domains);
netdev_unref(network->bond);
- HASHMAP_FOREACH(netdev, network->stacked_netdevs, i)
+ HASHMAP_FOREACH(netdev, network->stacked_netdevs, i) {
+ hashmap_remove(network->stacked_netdevs, netdev->ifname);
netdev_unref(netdev);
+ }
hashmap_free(network->stacked_netdevs);
while ((route = network->static_routes))
udev_device_get_driver(udev_device_get_parent(device)),
udev_device_get_property_value(device, "ID_NET_DRIVER"),
udev_device_get_devtype(device),
- ifname)) {
+ ifname, false)) {
log_debug("%-*s: found matching network '%s'", IFNAMSIZ, ifname,
network->filename);
*ret = network;