#ifndef res_9_private_h
#define res_9_private_h
#include <arpa/inet.h>
#include <sys/time.h>
#include <stdint.h>
#define DNS_RES_STATUS_TIMEOUT -1001
#define DNS_RES_STATUS_CANCELLED -1002
#define DNS_RES_STATUS_INVALID_QUERY -1003
#define DNS_RES_STATUS_INVALID_ARGUMENT -1004
#define DNS_RES_STATUS_INVALID_RES_STATE -1005
#define DNS_RES_STATUS_INVALID_REPLY -1006
#define DNS_RES_STATUS_CONNECTION_REFUSED -1007
#define DNS_RES_STATUS_SEND_FAILED -1008
#define DNS_RES_STATUS_CONNECTION_FAILED -1009
#define DNS_RES_STATUS_SYSTEM_ERROR -1010
#define RES_EXT_SUFFIX_LEN 64
typedef struct {
unsigned id :16;
#if BYTE_ORDER == BIG_ENDIAN
unsigned qr: 1;
unsigned opcode: 4;
unsigned aa: 1;
unsigned tc: 1;
unsigned rd: 1;
unsigned ra: 1;
unsigned unused :3;
unsigned rcode :4;
#endif
#if BYTE_ORDER == LITTLE_ENDIAN || BYTE_ORDER == PDP_ENDIAN
unsigned rd :1;
unsigned tc :1;
unsigned aa :1;
unsigned opcode :4;
unsigned qr :1;
unsigned rcode :4;
unsigned unused :3;
unsigned ra :1;
#endif
unsigned qdcount :16;
unsigned ancount :16;
unsigned nscount :16;
unsigned arcount :16;
} HEADER;
#ifndef __res_state_ext
#define __res_state_ext __res_9_res_state_ext
#endif
struct __res_state_ext {
union res_sockaddr_union nsaddrs[MAXNS];
struct sort_list {
int af;
union {
struct in_addr ina;
struct in6_addr in6a;
} addr, mask;
} sort_list[MAXRESOLVSORT];
char nsuffix[64];
char bsuffix[64];
char nsuffix2[64];
};
#define get_nsaddr res_9_get_nsaddr
struct sockaddr *get_nsaddr __P((res_state, size_t));
#define res_nsend_2 res_9_nsend_2
int res_nsend_2(res_state, const u_char *, int, u_char *, int, struct sockaddr *, int *);
#define res_ourserver_p res_9_ourserver_p
int res_ourserver_p(const res_state, const struct sockaddr *);
res_state res_state_new();
void res_client_close(res_state res);
#define ThreadStateExitRequested 4
extern uint32_t notify_register_plain(const char *name, int *out_token);
extern int res_query_mDNSResponder(res_state statp, const char *name, int class, int type, u_char *answer, int anslen, struct sockaddr *from, uint32_t *fromlen);
int dns_res_once(struct sockaddr *server, struct timeval *timeout, int options, const char *name, int class, int type, u_char *res, int *reslen);
void res_interrupt_requests_enable(void);
void res_interrupt_requests_disable(void);
void res_interrupt_request(void *token);
void *res_init_interrupt_token(void);
void res_delete_interrupt_token(void *token);
#endif