xref: /netbsd-src/external/bsd/ntp/dist/include/ntp_intres.h (revision cdfa2a7ef92791ba9db70a584a1d904730e6fb46)
1 /*	$NetBSD: ntp_intres.h,v 1.6 2020/05/25 20:47:19 christos Exp $	*/
2 
3 /*
4  * ntp_intres.h - client interface to blocking-worker name resolution.
5  */
6 #ifndef NTP_INTRES_H
7 #define NTP_INTRES_H
8 
9 #include <ntp_worker.h>
10 
11 #ifdef WORKER
12 #define	INITIAL_DNS_RETRY	2	/* seconds between queries */
13 
14 /* flags for extended addrinfo version */
15 #define GAIR_F_IGNDNSERR	0x0001	/* ignore DNS errors */
16 
17 /*
18  * you call getaddrinfo_sometime(name, service, &hints, retry, callback_func, context);
19  * later (*callback_func)(rescode, gai_errno, context, name, service, hints, ai_result) is called.
20  */
21 typedef void	(*gai_sometime_callback)
22 		    (int, int, void *, const char *, const char *,
23 		     const struct addrinfo *, const struct addrinfo *);
24 extern int	getaddrinfo_sometime(const char *, const char *,
25 				     const struct addrinfo *, int,
26 				     gai_sometime_callback, void *);
27 extern int	getaddrinfo_sometime_ex(const char *, const char *,
28 				     const struct addrinfo *, int,
29 				     gai_sometime_callback, void *, u_int);
30 /*
31  * In gai_sometime_callback routines, the resulting addrinfo list is
32  * only available until the callback returns.  To hold on to the list
33  * of addresses after the callback returns, use copy_addrinfo_list():
34  *
35  * struct addrinfo *copy_addrinfo_list(const struct addrinfo *);
36  */
37 
38 
39 /*
40  * you call getnameinfo_sometime(sockaddr, namelen, servlen, flags, callback_func, context);
41  * later (*callback_func)(rescode, gni_errno, sockaddr, flags, name, service, context) is called.
42  */
43 typedef void	(*gni_sometime_callback)
44 		    (int, int, sockaddr_u *, int, const char *,
45 		     const char *, void *);
46 extern int getnameinfo_sometime(sockaddr_u *, size_t, size_t, int,
47 				gni_sometime_callback, void *);
48 #endif	/* WORKER */
49 
50 /* intres_timeout_req() is provided by the client, ntpd or sntp. */
51 extern void intres_timeout_req(u_int);
52 
53 #endif	/* NTP_INTRES_H */
54