40 lines
2.3 KiB
C
40 lines
2.3 KiB
C
/* SPDX-License-Identifier: LGPL-2.1+ */
|
|
#pragma once
|
|
|
|
#include "sd-resolve.h"
|
|
|
|
int resolve_getaddrinfo_with_destroy_callback(
|
|
sd_resolve *resolve, sd_resolve_query **q,
|
|
const char *node, const char *service, const struct addrinfo *hints,
|
|
sd_resolve_getaddrinfo_handler_t callback,
|
|
sd_resolve_destroy_t destroy_callback, void *userdata);
|
|
int resolve_getnameinfo_with_destroy_callback(
|
|
sd_resolve *resolve, sd_resolve_query **q,
|
|
const struct sockaddr *sa, socklen_t salen, int flags, uint64_t get,
|
|
sd_resolve_getnameinfo_handler_t callback,
|
|
sd_resolve_destroy_t destroy_callback, void *userdata);
|
|
|
|
#define resolve_getaddrinfo(resolve, ret_query, node, service, hints, callback, destroy_callback, userdata) \
|
|
({ \
|
|
int (*_callback_)(sd_resolve_query*, int, const struct addrinfo*, typeof(userdata)) = callback; \
|
|
void (*_destroy_)(typeof(userdata)) = destroy_callback; \
|
|
resolve_getaddrinfo_with_destroy_callback( \
|
|
resolve, ret_query, \
|
|
node, service, hints, \
|
|
(sd_resolve_getaddrinfo_handler_t) _callback_, \
|
|
(sd_resolve_destroy_t) _destroy_, \
|
|
userdata); \
|
|
})
|
|
|
|
#define resolve_getnameinfo(resolve, ret_query, sa, salen, flags, get, callback, destroy_callback, userdata) \
|
|
({ \
|
|
int (*_callback_)(sd_resolve_query*, int, const char*, const char*, typeof(userdata)) = callback; \
|
|
void (*_destroy_)(typeof(userdata)) = destroy_callback; \
|
|
resolve_getaddrinfo_with_destroy_callback( \
|
|
resolve, ret_query, \
|
|
sa, salen, flags, get, \
|
|
(sd_resolve_getnameinfo_handler_t) _callback_, \
|
|
(sd_resolve_destroy_t) _destroy_, \
|
|
userdata); \
|
|
})
|