diff options
author | 2018-12-15 20:57:50 +0900 | |
---|---|---|
committer | 2018-12-17 10:02:36 +0900 | |
commit | 1061dab129df8ca42ec2cd17700cd90b741f2389 (patch) | |
tree | f3e6425dd70fa210f5c7df24c630376d42c013d8 /src | |
parent | netdev: sort headers (diff) | |
download | systemd-1061dab129df8ca42ec2cd17700cd90b741f2389.tar.gz systemd-1061dab129df8ca42ec2cd17700cd90b741f2389.tar.bz2 systemd-1061dab129df8ca42ec2cd17700cd90b741f2389.zip |
netdev: use typesafe resolve_getaddrinfo() in wireguard.c
Diffstat (limited to 'src')
-rw-r--r-- | src/network/netdev/wireguard.c | 42 |
1 files changed, 15 insertions, 27 deletions
diff --git a/src/network/netdev/wireguard.c b/src/network/netdev/wireguard.c index f216f8025..167cf6504 100644 --- a/src/network/netdev/wireguard.c +++ b/src/network/netdev/wireguard.c @@ -15,6 +15,7 @@ #include "networkd-manager.h" #include "networkd-util.h" #include "parse-util.h" +#include "resolve-private.h" #include "string-util.h" #include "strv.h" #include "wireguard.h" @@ -205,9 +206,7 @@ static WireguardEndpoint* wireguard_endpoint_free(WireguardEndpoint *e) { return mfree(e); } -static void wireguard_endpoint_destroy_callback(void *userdata) { - WireguardEndpoint *e = userdata; - +static void wireguard_endpoint_destroy_callback(WireguardEndpoint *e) { assert(e); assert(e->netdev); @@ -248,18 +247,16 @@ static int exponential_backoff_milliseconds(unsigned n_retries) { static int wireguard_resolve_handler(sd_resolve_query *q, int ret, const struct addrinfo *ai, - void *userdata) { + WireguardEndpoint *e) { _cleanup_(netdev_unrefp) NetDev *netdev_will_unrefed = NULL; - NetDev *netdev = NULL; - WireguardEndpoint *e; + NetDev *netdev; Wireguard *w; int r; - assert(userdata); - e = userdata; - netdev = e->netdev; + assert(e); + assert(e->netdev); - assert(netdev); + netdev = e->netdev; w = WIREGUARD(netdev); assert(w); @@ -328,15 +325,14 @@ static void resolve_endpoints(NetDev *netdev) { assert(w); LIST_FOREACH(endpoints, endpoint, w->unresolved_endpoints) { - _cleanup_(sd_resolve_query_unrefp) sd_resolve_query *q = NULL; - - r = sd_resolve_getaddrinfo(netdev->manager->resolve, - &q, - endpoint->host, - endpoint->port, - &hints, - wireguard_resolve_handler, - endpoint); + r = resolve_getaddrinfo(netdev->manager->resolve, + NULL, + endpoint->host, + endpoint->port, + &hints, + wireguard_resolve_handler, + wireguard_endpoint_destroy_callback, + endpoint); if (r == -ENOBUFS) break; @@ -345,14 +341,6 @@ static void resolve_endpoints(NetDev *netdev) { continue; } - r = sd_resolve_query_set_destroy_callback(q, wireguard_endpoint_destroy_callback); - if (r < 0) { - log_netdev_error_errno(netdev, r, "Failed to set destroy callback to resolving query: %m"); - continue; - } - - (void) sd_resolve_query_set_floating(q, true); - /* Avoid freeing netdev. It will be unrefed by the destroy callback. */ netdev_ref(netdev); |