/*      $NetBSD: ntp_intres.h,v 1.6 2020/05/25 20:47:19 christos Exp $  */

/*
* ntp_intres.h - client interface to blocking-worker name resolution.
*/
#ifndef NTP_INTRES_H
#define NTP_INTRES_H

#include <ntp_worker.h>

#ifdef WORKER
#define INITIAL_DNS_RETRY       2       /* seconds between queries */

/* flags for extended addrinfo version */
#define GAIR_F_IGNDNSERR        0x0001  /* ignore DNS errors */

/*
* you call getaddrinfo_sometime(name, service, &hints, retry, callback_func, context);
* later (*callback_func)(rescode, gai_errno, context, name, service, hints, ai_result) is called.
*/
typedef void    (*gai_sometime_callback)
                   (int, int, void *, const char *, const char *,
                    const struct addrinfo *, const struct addrinfo *);
extern int      getaddrinfo_sometime(const char *, const char *,
                                    const struct addrinfo *, int,
                                    gai_sometime_callback, void *);
extern int      getaddrinfo_sometime_ex(const char *, const char *,
                                    const struct addrinfo *, int,
                                    gai_sometime_callback, void *, u_int);
/*
* In gai_sometime_callback routines, the resulting addrinfo list is
* only available until the callback returns.  To hold on to the list
* of addresses after the callback returns, use copy_addrinfo_list():
*
* struct addrinfo *copy_addrinfo_list(const struct addrinfo *);
*/


/*
* you call getnameinfo_sometime(sockaddr, namelen, servlen, flags, callback_func, context);
* later (*callback_func)(rescode, gni_errno, sockaddr, flags, name, service, context) is called.
*/
typedef void    (*gni_sometime_callback)
                   (int, int, sockaddr_u *, int, const char *,
                    const char *, void *);
extern int getnameinfo_sometime(sockaddr_u *, size_t, size_t, int,
                               gni_sometime_callback, void *);
#endif  /* WORKER */

/* intres_timeout_req() is provided by the client, ntpd or sntp. */
extern void intres_timeout_req(u_int);

#endif  /* NTP_INTRES_H */