summaryrefslogtreecommitdiff
path: root/src/libmowgli/dns/dns_evloop_res.h
blob: 3973533ba904d619e7d8d7057ddf81f91383db25 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
/*
 * res.h for referencing functions in res.c, reslib.c
 *
 * Originally from Charybdis (before that, hybrid), but very little of the
 * original remains, so...
 */

#ifndef __MOWGLI_DNS_RES_H__
#define __MOWGLI_DNS_RES_H__

/* Maximum number of nameservers we track */
#define MOWGLI_DNS_MAXNS 10

typedef struct
{
	mowgli_vio_sockaddr_t nsaddr_list[MOWGLI_DNS_MAXNS];
	int nscount;

	int retrycnt;

	int timeout_count[MOWGLI_DNS_MAXNS];

	mowgli_vio_t *vio;
	mowgli_eventloop_t *eventloop;
	mowgli_eventloop_timer_t *timeout_resolver_timer;

	mowgli_list_t request_list;

	mowgli_random_t *rand;

	char domain[MOWGLI_DNS_RES_HOSTLEN];	
} mowgli_dns_evloop_t;

extern int mowgli_dns_evloop_init(mowgli_dns_t *dns, mowgli_eventloop_t *eventloop);
extern int mowgli_dns_evloop_restart(mowgli_dns_t *dns);
extern void mowgli_dns_evloop_destroy(mowgli_dns_t *dns);
extern void mowgli_dns_evloop_delete_queries(mowgli_dns_t *dns, const mowgli_dns_query_t *);
extern void mowgli_dns_evloop_gethost_byname(mowgli_dns_t *dns, const char *, mowgli_dns_query_t *, int);
extern void mowgli_dns_evloop_gethost_byaddr(mowgli_dns_t *dns, const struct sockaddr_storage *, mowgli_dns_query_t *);
extern void mowgli_dns_evloop_add_local_domain(mowgli_dns_t *dns, char *, size_t);

extern const mowgli_dns_ops_t mowgli_dns_evloop_resolver;

#endif