#include "strv.h"
#include "tclass.h"
+DEFINE_PRIVATE_HASH_OPS_WITH_VALUE_DESTRUCTOR(
+ stacked_netdevs_hash_ops,
+ char, string_hash_func, string_compare_func,
+ NetDev, netdev_unref);
+
static int network_resolve_netdev_one(Network *network, const char *name, NetDevKind kind, NetDev **ret) {
const char *kind_string;
NetDev *netdev;
if (network_resolve_netdev_one(network, name, PTR_TO_INT(kind), &netdev) <= 0)
continue;
- r = hashmap_ensure_put(&network->stacked_netdevs, &string_hash_ops, netdev->ifname, netdev);
+ r = hashmap_ensure_put(&network->stacked_netdevs, &stacked_netdevs_hash_ops, netdev->ifname, netdev);
if (r == -ENOMEM)
return log_oom();
if (r < 0)
log_warning_errno(r, "%s: Failed to add NetDev '%s' to network, ignoring: %m",
network->filename, (const char *) name);
- netdev = NULL;
+ TAKE_PTR(netdev);
}
return 0;
netdev_unref(network->bridge);
netdev_unref(network->bond);
netdev_unref(network->vrf);
- hashmap_free_with_destructor(network->stacked_netdevs, netdev_unref);
+ hashmap_free(network->stacked_netdevs);
/* static configs */
set_free_free(network->ipv6_proxy_ndp_addresses);