1 /*
2  * res.h for referencing functions in res.c, reslib.c
3  *
4  * Originally from Charybdis (before that, hybrid), but very little of the
5  * original remains, so...
6  */
7 
8 #ifndef __MOWGLI_DNS_RES_H__
9 #define __MOWGLI_DNS_RES_H__
10 
11 /* Maximum number of nameservers we track */
12 #define MOWGLI_DNS_MAXNS 10
13 
14 typedef struct
15 {
16 	mowgli_vio_sockaddr_t nsaddr_list[MOWGLI_DNS_MAXNS];
17 	int nscount;
18 
19 	int retrycnt;
20 
21 	int timeout_count[MOWGLI_DNS_MAXNS];
22 
23 	mowgli_vio_t *vio;
24 	mowgli_eventloop_t *eventloop;
25 	mowgli_eventloop_timer_t *timeout_resolver_timer;
26 
27 	mowgli_list_t request_list;
28 
29 	mowgli_random_t *rand;
30 
31 	const char *resolvconf;
32 	bool dns_init;
33 
34 	char domain[MOWGLI_DNS_RES_HOSTLEN];
35 } mowgli_dns_evloop_t;
36 
37 extern int mowgli_dns_evloop_init(mowgli_dns_t *dns, mowgli_eventloop_t *eventloop);
38 extern int mowgli_dns_evloop_restart(mowgli_dns_t *dns);
39 extern void mowgli_dns_evloop_destroy(mowgli_dns_t *dns);
40 extern void mowgli_dns_evloop_delete_queries(mowgli_dns_t *dns, const mowgli_dns_query_t *);
41 extern void mowgli_dns_evloop_gethost_byname(mowgli_dns_t *dns, const char *, mowgli_dns_query_t *, int);
42 extern void mowgli_dns_evloop_gethost_byaddr(mowgli_dns_t *dns, const struct sockaddr_storage *, mowgli_dns_query_t *);
43 
44 extern void mowgli_dns_evloop_add_local_domain(mowgli_dns_t * dns, char *, size_t);
45 extern int mowgli_dns_evloop_set_resolvconf(mowgli_dns_t *dns, const char *respath);
46 
47 extern const mowgli_dns_ops_t mowgli_dns_evloop_resolver;
48 
49 #endif
50