ucspi-ssl  0.99e
TLS encryption for IPv6 communication
dns_resolve.c
Go to the documentation of this file.
1 #include "iopause.h"
2 #include "taia.h"
3 #include "byte.h"
4 #include "dns.h"
5 #include "ip6.h"
6 
8 
9 int dns_resolve(const char *q,const char qtype[2])
10 {
11  struct taia stamp;
12  struct taia deadline;
13  char servers[256];
14  iopause_fd x[1];
15  int r;
16 
17  if (dns_resolvconfip(servers) == -1) return -1;
18  if (dns_transmit_start(&dns_resolve_tx,servers,1,q,qtype,V6any) == -1) return -1;
19 
20  for (;;) {
21  taia_now(&stamp);
22  taia_uint(&deadline,120);
23  taia_add(&deadline,&deadline,&stamp);
24  dns_transmit_io(&dns_resolve_tx,x,&deadline);
25  iopause(x,1,&deadline,&stamp);
26  r = dns_transmit_get(&dns_resolve_tx,x,&stamp);
27  if (r == -1) return -1;
28  if (r == 1) return 0;
29  }
30 }
Definition: taia.h:8
int iopause(iopause_fd *x, unsigned int len, struct taia *deadline, struct taia *stamp)
Definition: iopause.c:7
const unsigned char V6any[16]
Definition: socket_v6any.c:2
void dns_transmit_io(struct dns_transmit *, iopause_fd *, struct taia *)
Definition: dns_transmit.c:227
int dns_transmit_start(struct dns_transmit *, const char *, int, const char *, const char *, const unsigned char *)
int taia_now(struct taia *)
Definition: taia_now.c:8
int dns_resolve(const char *q, const char qtype[2])
Definition: dns_resolve.c:9
int dns_transmit_get(struct dns_transmit *, const iopause_fd *, const struct taia *)
Definition: dns_transmit.c:244
void taia_add(struct taia *, const struct taia *, const struct taia *)
Definition: taia_add.c:7
char qtype[2]
Definition: dns.h:40
struct dns_transmit dns_resolve_tx
Definition: dns_resolve.c:7
void taia_uint(struct taia *, unsigned int)
Definition: taia_uint.c:7
int dns_resolvconfip(char *)