}
DEFINE_HASH_OPS(hw_addr_hash_ops, struct hw_addr_data, hw_addr_hash_func, hw_addr_compare);
+DEFINE_HASH_OPS_WITH_KEY_DESTRUCTOR(hw_addr_hash_ops_free, struct hw_addr_data, hw_addr_hash_func, hw_addr_compare, free);
char* ether_addr_to_string(const struct ether_addr *addr, char buffer[ETHER_ADDR_TO_STRING_MAX]) {
assert(addr);
}
DEFINE_HASH_OPS(ether_addr_hash_ops, struct ether_addr, ether_addr_hash_func, ether_addr_compare);
+DEFINE_HASH_OPS_WITH_KEY_DESTRUCTOR(ether_addr_hash_ops_free, struct ether_addr, ether_addr_hash_func, ether_addr_compare, free);
static int parse_hw_addr_one_field(const char **s, char sep, size_t len, uint8_t *buf) {
const char *hex = HEXDIGITS, *p;
}
extern const struct hash_ops hw_addr_hash_ops;
+extern const struct hash_ops hw_addr_hash_ops_free;
#define ETHER_ADDR_FORMAT_STR "%02X%02X%02X%02X%02X%02X"
#define ETHER_ADDR_FORMAT_VAL(x) (x).ether_addr_octet[0], (x).ether_addr_octet[1], (x).ether_addr_octet[2], (x).ether_addr_octet[3], (x).ether_addr_octet[4], (x).ether_addr_octet[5]
}
extern const struct hash_ops ether_addr_hash_ops;
+extern const struct hash_ops ether_addr_hash_ops_free;
assert(m);
- set_free_free(m->match_source_mac);
+ set_free(m->match_source_mac);
}
static void macvlan_init(NetDev *n) {
if (isempty(rvalue)) {
/* Empty assignment resets the list */
- *hwaddrs = set_free_free(*hwaddrs);
+ *hwaddrs = set_free(*hwaddrs);
return 0;
}
continue;
}
- r = set_ensure_put(hwaddrs, ðer_addr_hash_ops, n);
+ r = set_ensure_consume(hwaddrs, ðer_addr_hash_ops_free, TAKE_PTR(n));
if (r < 0)
return log_oom();
- if (r > 0)
- TAKE_PTR(n); /* avoid cleanup */
}
}
if (!match)
return;
- match->mac = set_free_free(match->mac);
- match->permanent_mac = set_free_free(match->permanent_mac);
+ match->mac = set_free(match->mac);
+ match->permanent_mac = set_free(match->permanent_mac);
match->path = strv_free(match->path);
match->driver = strv_free(match->driver);
match->iftype = strv_free(match->iftype);
match->property = strv_free(match->property);
match->wlan_iftype = strv_free(match->wlan_iftype);
match->ssid = strv_free(match->ssid);
- match->bssid = set_free_free(match->bssid);
+ match->bssid = set_free(match->bssid);
}
bool net_match_is_empty(const NetMatch *match) {