djbdnscurve6 45
djbdnscurve6
Loading...
Searching...
No Matches
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
15void usage(void)
16{
17 logmsg(WHO,100,USAGE,"type name");
18}
19void oops(void)
20{
21 logmsg(WHO,111,FATAL,"unable to parse");
22}
23
24char type[2];
25static char *q;
26
27static stralloc out;
28
29static char seed[128];
30
31int 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 main()
Definition: axfrdns.c:323
int dns_domain_fromdot(char **out, const char *buf, unsigned int n)
Definition: dns_dfd.c:6
int dns_domain_todot_cat(stralloc *out, const char *d)
Definition: dns_dtda.c:11
void dns_random_init(const char data[128])
Definition: dns_random.c:37
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
uint32 seed[32]
Definition: dnscache-conf.c:36
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 *, char *)
unsigned int printpacket_cat(stralloc *, char *, unsigned int)
Definition: printpacket.c:14
unsigned int packetlen
Definition: dns.h:96
char * packet
Definition: dns.h:95