resolve: use custom hash_ops for managing Link objects
This commit is contained in:
@@ -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;
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user