djbdnscurve6  38
djbdnscurve6
dnsqr.c
Go to the documentation of this file.
1 #include "uint_t.h"
2 #include "buffer.h"
3 #include "scan.h"
4 #include "str.h"
5 #include "byte.h"
6 #include "logmsg.h"
7 #include "printpacket.h"
8 #include "parsetype.h"
9 #include "dns.h"
10 #include "exit.h"
11 #include "base32.h"
12 
13 #define WHO "dnsqr"
14 
15 void usage(void)
16 {
17  logmsg(WHO,100,USAGE,"type name");
18 }
19 void oops(void)
20 {
21  logmsg(WHO,111,FATAL,"unable to parse");
22 }
23 
24 char type[2];
25 static char *q;
26 
27 static stralloc out;
28 
29 static char seed[128];
30 
31 int main(int argc,char **argv)
32 {
33  uint16 u16;
34 
36 
37  if (!*argv) usage();
38  if (!*++argv) usage();
39  if (!parsetype(*argv,type)) usage();
40 
41  if (!*++argv) usage();
42  if (dns_domain_fromdot(&q,*argv,str_len(*argv)) <= 0) oops();
43 
44  if (*++argv) usage();
45 
46  if (!stralloc_copys(&out,"")) oops();
47  uint16_unpack_big(type,&u16);
48  if (!stralloc_catulong0(&out,u16,0)) oops();
49  if (!stralloc_cats(&out," ")) oops();
50  if (dns_domain_todot_cat(&out,q) <= 0) oops();
51  if (!stralloc_cats(&out,":\n")) oops();
52 
53  if (dns_resolve(q,type) < 0) {
54  if (!stralloc_cats(&out,errstr(errno))) oops();
55  if (!stralloc_cats(&out,"\n")) oops();
56  }
57  else {
58  if (dns_resolve_tx.packetlen < 4) oops();
59  dns_resolve_tx.packet[2] &= ~1;
60  dns_resolve_tx.packet[3] &= ~128;
62  }
63 
64  buffer_putflush(buffer_1,out.s,out.len);
65  _exit(0);
66 }
int dns_domain_fromdot(char **, const char *, unsigned int)
Definition: dns_dfd.c:6
int dns_domain_todot_cat(stralloc *, const char *)
Definition: dns_dtda.c:11
int dns_resolve(const char *, const char *)
void dns_random_init(const char *)
struct dns_transmit dns_resolve_tx
Definition: dns_resolve.c:7
uint32 seed[32]
Definition: dnscache-conf.c:36
int main(int argc, char **argv)
Definition: dnsqr.c:31
void oops(void)
Definition: dnsqr.c:19
char type[2]
Definition: dnsqr.c:24
#define WHO
Definition: dnsqr.c:13
void usage(void)
Definition: dnsqr.c:15
int parsetype(char *s, char type[2])
Definition: parsetype.c:8
unsigned int printpacket_cat(stralloc *out, char *buf, unsigned int len)
Definition: printpacket.c:14
unsigned int packetlen
Definition: dns.h:77
char * packet
Definition: dns.h:76