#ifndef _RESOLV_H_
#include_next <resolv.h>
#include <sys/cdefs.h>
#define nsaddr nsaddr_list[0]
#define RES_SET_H_ERRNO(r,x) __h_errno_set(r,x)
struct __res_state;
__BEGIN_DECLS
void __h_errno_set(struct __res_state *, int);
__END_DECLS
typedef enum { res_goahead, res_nextns, res_modified, res_done, res_error }
res_sendhookact;
typedef res_sendhookact (*res_send_qhook)(struct sockaddr * const *,
const u_char **, int *,
u_char *, int, int *);
typedef res_sendhookact (*res_send_rhook)(const struct sockaddr *,
const u_char *, int, u_char *,
int, int *);
union res_sockaddr_union {
struct sockaddr_in sin;
#ifdef IN6ADDR_ANY_INIT
struct sockaddr_in6 sin6;
#endif
#ifdef ISC_ALIGN64
int64_t __align64;
#else
int32_t __align32;
#endif
char __space[128];
};
#define RES_F__UNUSED 0x00000008
#define RES_F_LASTMASK 0x000000F0
#define RES_F_LASTSHIFT 4
#define RES_GETLAST(res) (((res)._flags & RES_F_LASTMASK) >> RES_F_LASTSHIFT)
#define RES_NSID (1 << 18)
#define RES_USE_DNAME 0x10000000
__BEGIN_DECLS
extern struct __res_state *__res_get_state(void);
extern void __res_put_state(struct __res_state *);
__END_DECLS
#ifndef __BIND_NOSTATIC
#define res_opt __res_opt
#define res_sendsigned __res_sendsigned
__BEGIN_DECLS
int res_opt(int, u_char *, int, int);
int res_sendsigned(const u_char *, int, ns_tsig_key *,
u_char *, int);
__END_DECLS
#endif
#if !defined(SHARED_LIBBIND) || defined(LIB)
extern const struct res_sym __p_key_syms[];
extern const struct res_sym __p_cert_syms[];
extern const struct res_sym __p_class_syms[];
extern const struct res_sym __p_type_syms[];
extern const struct res_sym __p_rcode_syms[];
#endif
#define p_secstodate __p_secstodate
#define p_section __p_section
#define p_sockun __p_sockun
#define putlong __putlong
#define putshort __putshort
#define res_check __res_check
#define res_findzonecut __res_findzonecut
#define res_findzonecut2 __res_findzonecut2
#define res_pquery __res_pquery
#define res_nsendsigned __res_nsendsigned
#define res_nisourserver __res_nisourserver
#define res_rndinit __res_rndinit
#define res_nrandomid __res_nrandomid
#define res_nopt __res_nopt
#define res_nopt_rdata __res_nopt_rdata
#define res_ndestroy __res_ndestroy
#define res_nametoclass __res_nametoclass
#define res_nametotype __res_nametotype
#define res_setservers __res_setservers
#define res_getservers __res_getservers
#define res_buildprotolist __res_buildprotolist
#define res_destroyprotolist __res_destroyprotolist
#define res_destroyservicelist __res_destroyservicelist
#define res_get_nibblesuffix __res_get_nibblesuffix
#define res_get_nibblesuffix2 __res_get_nibblesuffix2
#define res_ourserver_p __res_ourserver_p
#define res_send_setqhook __res_send_setqhook
#define res_send_setrhook __res_send_setrhook
#define res_servicename __res_servicename
#define res_servicenumber __res_servicenumber
__BEGIN_DECLS
struct timespec;
int res_check(res_state, struct timespec *);
void putlong(uint32_t, u_char *);
void putshort(uint16_t, u_char *);
#ifndef __ultrix__
uint16_t _getshort(const u_char *);
uint32_t _getlong(const u_char *);
#endif
const char * p_sockun(union res_sockaddr_union, char *, size_t);
char * p_secstodate(u_long);
void res_rndinit(res_state);
u_int res_nrandomid(res_state);
const char * p_section(int, int);
void res_pquery(const res_state, const u_char *, int, FILE *);
int res_nisourserver(const res_state, const struct sockaddr_in *);
int res_nsendsigned(res_state, const u_char *, int,
ns_tsig_key *, u_char *, int);
int res_findzonecut(res_state, const char *, ns_class, int,
char *, size_t, struct in_addr *, int);
int res_findzonecut2(res_state, const char *, ns_class, int,
char *, size_t,
union res_sockaddr_union *, int);
int res_nopt(res_state, int, u_char *, int, int);
int res_nopt_rdata(res_state, int, u_char *, int, u_char *,
u_short, u_short, u_char *);
void res_send_setqhook(res_send_qhook);
void res_send_setrhook(res_send_rhook);
int __res_vinit(res_state, int);
void res_destroyservicelist(void);
const char * res_servicename(uint16_t, const char *);
void res_destroyprotolist(void);
void res_buildprotolist(void);
const char * res_get_nibblesuffix(res_state);
const char * res_get_nibblesuffix2(res_state);
void res_ndestroy(res_state);
uint16_t res_nametoclass(const char *, int *);
uint16_t res_nametotype(const char *, int *);
void res_setservers(res_state,
const union res_sockaddr_union *, int);
int res_getservers(res_state,
union res_sockaddr_union *, int);
__END_DECLS
#endif