djbdnscurve6 45
djbdnscurve6
Loading...
Searching...
No Matches
dns_resolve.c
Go to the documentation of this file.
1#include "iopause.h"
2#include "taia.h"
3#include "byte.h"
4#include "ip.h"
5#include "dns.h"
6
8
9int dns_resolve(const char *q,const char qtype[2])
10{
11 struct taia stamp;
12 struct taia deadline;
14 uint32 scopes[QUERY_MAXNS];
15 iopause_fd x[1];
16 int r;
17
18 if (dns_resolvconfip(servers,scopes) < 0) return DNS_INT;
19
20 if (dns_transmit_start6(&dns_resolve_tx,servers,1,q,qtype,(const char *)V6localnet,scopes) < 0) return DNS_COM;
21
22 for (;;) {
23 taia_now(&stamp);
24 taia_uint(&deadline,120);
25 taia_add(&deadline,&deadline,&stamp);
27 iopause(x,1,&deadline,&stamp);
29 if (r < 0) return DNS_COM;
30 if (r == 1) return 0;
31 }
32}
#define QUERY_MAXIPLEN
Definition: dns.h:45
#define DNS_INT
Definition: dns.h:34
#define QUERY_MAXNS
Definition: dns.h:44
#define DNS_COM
Definition: dns.h:33
int dns_resolvconfip(char s[QUERY_MAXIPLEN], uint32 scope[QUERY_MAXNS])
Definition: dns_rcip.c:87
int dns_resolve(const char *q, const char qtype[2])
Definition: dns_resolve.c:9
struct dns_transmit dns_resolve_tx
Definition: dns_resolve.c:7
void dns_transmit_io(struct dns_transmit *d, iopause_fd *x, struct taia *deadline)
Definition: dns_transmit.c:279
int dns_transmit_start6(struct dns_transmit *d, const char servers[QUERY_MAXIPLEN], int flagrecursive, const char *q, const char qtype[2], const char localip[16], const uint32 scopes[QUERY_MAXNS])
Definition: dns_transmit.c:270
int dns_transmit_get(struct dns_transmit *d, const iopause_fd *x, const struct taia *when)
Definition: dns_transmit.c:296
char servers[QUERY_MAXIPLEN]
Definition: dnsfilter.c:48
struct line * x
uint32 scopes[QUERY_MAXNS]
Definition: dnsfilter.c:49
char qtype[2]
Definition: dns.h:112