]> git.ipfire.org Git - thirdparty/systemd.git/blame - src/systemd/sd-resolve.h
Merge pull request #11827 from keszybz/pkgconfig-variables
[thirdparty/systemd.git] / src / systemd / sd-resolve.h
CommitLineData
53e1b683 1/* SPDX-License-Identifier: LGPL-2.1+ */
3bedba4a
TG
2#ifndef foosdresolvehfoo
3#define foosdresolvehfoo
e963e3ad
DB
4
5/***
1783d897
TG
6 systemd is free software; you can redistribute it and/or modify it
7 under the terms of the GNU Lesser General Public License as published by
8 the Free Software Foundation; either version 2.1 of the License, or
9 (at your option) any later version.
e963e3ad 10
1783d897 11 systemd is distributed in the hope that it will be useful, but
e963e3ad
DB
12 WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 Lesser General Public License for more details.
15
1783d897
TG
16 You should have received a copy of the GNU Lesser General Public License
17 along with systemd; If not, see <http://www.gnu.org/licenses/>.
e963e3ad
DB
18***/
19
35f2cb28
YW
20/* 'struct addrinfo' needs _GNU_SOURCE */
21#ifndef _GNU_SOURCE
22#define _GNU_SOURCE 1
23#endif
24
04c01369 25#include <inttypes.h>
e963e3ad 26#include <netdb.h>
04c01369
LP
27#include <sys/socket.h>
28#include <sys/types.h>
968d3d24 29
93f1bcf4 30#include "sd-event.h"
71d35b6b 31
04c01369 32#include "_sd-common.h"
1783d897
TG
33
34_SD_BEGIN_DECLARATIONS;
35
93f1bcf4 36/* An opaque sd-resolve session structure */
4f809256 37typedef struct sd_resolve sd_resolve;
e963e3ad 38
93f1bcf4 39/* An opaque sd-resolve query structure */
4f809256 40typedef struct sd_resolve_query sd_resolve_query;
e963e3ad 41
93f1bcf4
LP
42/* A callback on completion */
43typedef int (*sd_resolve_getaddrinfo_handler_t)(sd_resolve_query *q, int ret, const struct addrinfo *ai, void *userdata);
44typedef int (*sd_resolve_getnameinfo_handler_t)(sd_resolve_query *q, int ret, const char *host, const char *serv, void *userdata);
deae09cc 45typedef _sd_destroy_t sd_resolve_destroy_t;
93f1bcf4
LP
46
47enum {
9b505bc2
ZJS
48 SD_RESOLVE_GET_HOST = 1 << 0,
49 SD_RESOLVE_GET_SERVICE = 1 << 1,
50 SD_RESOLVE_GET_BOTH = SD_RESOLVE_GET_HOST | SD_RESOLVE_GET_SERVICE,
93f1bcf4
LP
51};
52
53int sd_resolve_default(sd_resolve **ret);
54
55/* Allocate a new sd-resolve session. */
968d3d24 56int sd_resolve_new(sd_resolve **ret);
e963e3ad 57
93f1bcf4 58/* Free a sd-resolve session. This destroys all attached
10b17992 59 * sd_resolve_query objects automatically. */
968d3d24 60sd_resolve* sd_resolve_unref(sd_resolve *resolve);
93f1bcf4 61sd_resolve* sd_resolve_ref(sd_resolve *resolve);
968d3d24 62
93f1bcf4 63/* Return the UNIX file descriptor to poll() for events on. Use this
968d3d24
LP
64 * function to integrate sd-resolve with your custom main loop. */
65int sd_resolve_get_fd(sd_resolve *resolve);
66
93f1bcf4 67/* Return the poll() events (a combination of flags like POLLIN,
968d3d24
LP
68 * POLLOUT, ...) to check for. */
69int sd_resolve_get_events(sd_resolve *resolve);
e963e3ad 70
93f1bcf4 71/* Return the poll() timeout to pass. Returns (uint64_t) -1 as
10b17992 72 * timeout if no timeout is needed. */
968d3d24 73int sd_resolve_get_timeout(sd_resolve *resolve, uint64_t *timeout_usec);
e963e3ad 74
93f1bcf4 75/* Process pending responses. After this function is called, you can
968d3d24
LP
76 * get the next completed query object(s) using
77 * sd_resolve_get_next(). */
78int sd_resolve_process(sd_resolve *resolve);
79
93f1bcf4 80/* Wait for a resolve event to complete. */
968d3d24 81int sd_resolve_wait(sd_resolve *resolve, uint64_t timeout_usec);
e963e3ad 82
93f1bcf4
LP
83int sd_resolve_get_tid(sd_resolve *resolve, pid_t *tid);
84
32d20645 85int sd_resolve_attach_event(sd_resolve *resolve, sd_event *e, int64_t priority);
93f1bcf4
LP
86int sd_resolve_detach_event(sd_resolve *resolve);
87sd_event *sd_resolve_get_event(sd_resolve *resolve);
88
89/* Issue a name-to-address query on the specified session. The
10b17992 90 * arguments are compatible with those of libc's
e963e3ad 91 * getaddrinfo(3). The function returns a new query object. When the
10b17992 92 * query is completed, you may retrieve the results using
968d3d24 93 * sd_resolve_getaddrinfo_done(). */
93f1bcf4
LP
94int sd_resolve_getaddrinfo(sd_resolve *resolve, sd_resolve_query **q, const char *node, const char *service, const struct addrinfo *hints, sd_resolve_getaddrinfo_handler_t callback, void *userdata);
95
96/* Issue an address-to-name query on the specified session. The
10b17992 97 * arguments are compatible with those of libc's
e963e3ad 98 * getnameinfo(3). The function returns a new query object. When the
10b17992 99 * query is completed, you may retrieve the results using
3bedba4a 100 * sd_resolve_getnameinfo_done(). Set gethost (resp. getserv) to non-zero
e963e3ad 101 * if you want to query the hostname (resp. the service name). */
93f1bcf4 102int sd_resolve_getnameinfo(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, void *userdata);
e963e3ad 103
f2a3de01
YW
104sd_resolve_query *sd_resolve_query_ref(sd_resolve_query *q);
105sd_resolve_query *sd_resolve_query_unref(sd_resolve_query *q);
93f1bcf4
LP
106
107/* Returns non-zero when the query operation specified by q has been completed. */
f2a3de01 108int sd_resolve_query_is_done(sd_resolve_query *q);
93f1bcf4
LP
109
110void *sd_resolve_query_get_userdata(sd_resolve_query *q);
111void *sd_resolve_query_set_userdata(sd_resolve_query *q, void *userdata);
a8319dea
YW
112int sd_resolve_query_get_destroy_callback(sd_resolve_query *q, sd_resolve_destroy_t *destroy_callback);
113int sd_resolve_query_set_destroy_callback(sd_resolve_query *q, sd_resolve_destroy_t destroy_callback);
b3ae7237
YW
114int sd_resolve_query_get_floating(sd_resolve_query *q);
115int sd_resolve_query_set_floating(sd_resolve_query *q, int b);
93f1bcf4
LP
116
117sd_resolve *sd_resolve_query_get_resolve(sd_resolve_query *q);
e963e3ad 118
4afd3348
LP
119_SD_DEFINE_POINTER_CLEANUP_FUNC(sd_resolve, sd_resolve_unref);
120_SD_DEFINE_POINTER_CLEANUP_FUNC(sd_resolve_query, sd_resolve_query_unref);
121
1783d897
TG
122_SD_END_DECLARATIONS;
123
e963e3ad 124#endif