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