1280849Scy/*
2280849Scy * ntp_intres.h - client interface to blocking-worker name resolution.
3280849Scy */
4258945Sroberto#ifndef NTP_INTRES_H
5258945Sroberto#define NTP_INTRES_H
6258945Sroberto
7280849Scy#include <ntp_worker.h>
8280849Scy
9280849Scy#ifdef WORKER
10280849Scy#define	INITIAL_DNS_RETRY	2	/* seconds between queries */
11280849Scy
12310419Sdelphij/* flags for extended addrinfo version */
13310419Sdelphij#define GAIR_F_IGNDNSERR	0x0001	/* ignore DNS errors */
14310419Sdelphij
15258945Sroberto/*
16280849Scy * you call getaddrinfo_sometime(name, service, &hints, retry, callback_func, context);
17280849Scy * later (*callback_func)(rescode, gai_errno, context, name, service, hints, ai_result) is called.
18258945Sroberto */
19280849Scytypedef void	(*gai_sometime_callback)
20280849Scy		    (int, int, void *, const char *, const char *,
21280849Scy		     const struct addrinfo *, const struct addrinfo *);
22280849Scyextern int	getaddrinfo_sometime(const char *, const char *,
23280849Scy				     const struct addrinfo *, int,
24280849Scy				     gai_sometime_callback, void *);
25310419Sdelphijextern int	getaddrinfo_sometime_ex(const char *, const char *,
26310419Sdelphij				     const struct addrinfo *, int,
27310419Sdelphij				     gai_sometime_callback, void *, u_int);
28280849Scy/*
29280849Scy * In gai_sometime_callback routines, the resulting addrinfo list is
30280849Scy * only available until the callback returns.  To hold on to the list
31280849Scy * of addresses after the callback returns, use copy_addrinfo_list():
32280849Scy *
33280849Scy * struct addrinfo *copy_addrinfo_list(const struct addrinfo *);
34280849Scy */
35258945Sroberto
36280849Scy
37280849Scy/*
38280849Scy * you call getnameinfo_sometime(sockaddr, namelen, servlen, flags, callback_func, context);
39280849Scy * later (*callback_func)(rescode, gni_errno, sockaddr, flags, name, service, context) is called.
40280849Scy */
41280849Scytypedef void	(*gni_sometime_callback)
42280849Scy		    (int, int, sockaddr_u *, int, const char *,
43280849Scy		     const char *, void *);
44280849Scyextern int getnameinfo_sometime(sockaddr_u *, size_t, size_t, int,
45280849Scy				gni_sometime_callback, void *);
46280849Scy#endif	/* WORKER */
47280849Scy
48280849Scy/* intres_timeout_req() is provided by the client, ntpd or sntp. */
49280849Scyextern void intres_timeout_req(u_int);
50280849Scy
51280849Scy#endif	/* NTP_INTRES_H */
52