| /* SPDX-License-Identifier: LGPL-2.1-or-later */ |
| #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); \ |
| }) |