diff options
author | Yu Watanabe <watanabe.yu+github@gmail.com> | 2021-11-05 01:33:25 +0900 |
---|---|---|
committer | Yu Watanabe <watanabe.yu+github@gmail.com> | 2021-11-09 21:39:09 +0900 |
commit | c6df73ca72ecbe5c9a41ff19b49f7187fa326a58 (patch) | |
tree | dc1ff2d6620425d6a08d6d28ae0850a90eecbd3c /src | |
parent | aa4f765326aa75622f1ab50068ca824ed33ecf8e (diff) | |
download | systemd-c6df73ca72ecbe5c9a41ff19b49f7187fa326a58.tar.gz |
ether-addr-util: introduce {hw,ether}_addr_hash_ops_free
Diffstat (limited to 'src')
-rw-r--r-- | src/basic/ether-addr-util.c | 2 | ||||
-rw-r--r-- | src/basic/ether-addr-util.h | 2 | ||||
-rw-r--r-- | src/network/netdev/macvlan.c | 2 | ||||
-rw-r--r-- | src/shared/conf-parser.c | 6 | ||||
-rw-r--r-- | src/shared/net-condition.c | 6 |
5 files changed, 10 insertions, 8 deletions
diff --git a/src/basic/ether-addr-util.c b/src/basic/ether-addr-util.c index ed0883886a..9be4baf123 100644 --- a/src/basic/ether-addr-util.c +++ b/src/basic/ether-addr-util.c @@ -48,6 +48,7 @@ static void hw_addr_hash_func(const struct hw_addr_data *p, struct siphash *stat } 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); @@ -93,6 +94,7 @@ static void ether_addr_hash_func(const struct ether_addr *p, struct siphash *sta } 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; diff --git a/src/basic/ether-addr-util.h b/src/basic/ether-addr-util.h index 62afe458b0..ae6605fb11 100644 --- a/src/basic/ether-addr-util.h +++ b/src/basic/ether-addr-util.h @@ -51,6 +51,7 @@ static inline bool hw_addr_is_null(const struct hw_addr_data *addr) { } 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] @@ -93,3 +94,4 @@ static inline bool ether_addr_is_local(const struct ether_addr *addr) { } extern const struct hash_ops ether_addr_hash_ops; +extern const struct hash_ops ether_addr_hash_ops_free; diff --git a/src/network/netdev/macvlan.c b/src/network/netdev/macvlan.c index 9d037c2f36..c295cae2cd 100644 --- a/src/network/netdev/macvlan.c +++ b/src/network/netdev/macvlan.c @@ -127,7 +127,7 @@ static void macvlan_done(NetDev *n) { assert(m); - set_free_free(m->match_source_mac); + set_free(m->match_source_mac); } static void macvlan_init(NetDev *n) { diff --git a/src/shared/conf-parser.c b/src/shared/conf-parser.c index f0633a71d1..35027b8dfa 100644 --- a/src/shared/conf-parser.c +++ b/src/shared/conf-parser.c @@ -1384,7 +1384,7 @@ int config_parse_ether_addrs( if (isempty(rvalue)) { /* Empty assignment resets the list */ - *hwaddrs = set_free_free(*hwaddrs); + *hwaddrs = set_free(*hwaddrs); return 0; } @@ -1414,11 +1414,9 @@ int config_parse_ether_addrs( 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 */ } } diff --git a/src/shared/net-condition.c b/src/shared/net-condition.c index 52cac19df3..ac0a364f06 100644 --- a/src/shared/net-condition.c +++ b/src/shared/net-condition.c @@ -17,8 +17,8 @@ void net_match_clear(NetMatch *match) { 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); @@ -26,7 +26,7 @@ void net_match_clear(NetMatch *match) { 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) { |