resolve: use custom hash_ops for managing Link objects

This commit is contained in:
Yu Watanabe
2026-09-23 11:38:15 +09:00
parent 7a19ecb825
commit a4e4ced188
2 changed files with 10 additions and 7 deletions
+9 -1
View File
@@ -34,6 +34,14 @@
#include "strv.h"
#include "tmpfile-util.h"
DEFINE_PRIVATE_HASH_OPS_WITH_VALUE_DESTRUCTOR(
link_hash_ops,
void,
trivial_hash_func,
trivial_compare_func,
Link,
link_free);
int link_new(Manager *m, Link **ret, int ifindex) {
_cleanup_(link_freep) Link *l = NULL;
int r;
@@ -58,7 +66,7 @@ int link_new(Manager *m, Link **ret, int ifindex) {
if (asprintf(&l->state_file, "/run/systemd/resolve/netif/%i", ifindex) < 0)
return -ENOMEM;
r = hashmap_ensure_put(&m->links, NULL, INT_TO_PTR(ifindex), l);
r = hashmap_ensure_put(&m->links, &link_hash_ops, INT_TO_PTR(ifindex), l);
if (r < 0)
return r;
+1 -6
View File
@@ -839,8 +839,6 @@ int manager_start(Manager *m) {
}
Manager* manager_free(Manager *m) {
Link *l;
if (!m)
return NULL;
@@ -848,9 +846,7 @@ Manager* manager_free(Manager *m) {
dns_server_unlink_all(m->fallback_dns_servers);
dns_search_domain_unlink_all(m->search_domains);
while ((l = hashmap_first(m->links)))
link_free(l);
m->links = hashmap_free(m->links);
m->delegates = hashmap_free(m->delegates);
while (m->dns_queries)
@@ -869,7 +865,6 @@ Manager* manager_free(Manager *m) {
#endif
set_free(m->refuse_record_types);
hashmap_free(m->links);
hashmap_free(m->dns_transactions);
sd_event_source_unref(m->network_event_source);