djbdnscurve6 53
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
15unsigned int msgsize;
16unsigned int flagedns0 = 0;
17
18void usage(void)
19{
20 logmsg(WHO,100,USAGE,"type name");
21}
22void oops(void)
23{
24 logmsg(WHO,111,FATAL,"unable to parse");
25}
26
27char type[2];
28static char *q;
29
30static stralloc out;
31
32static char seed[128];
33
34int main(int argc,char **argv)
35{
36 uint16 u16;
37
39
40 if (!*argv) usage();
41 if (!*++argv) usage();
42 if (!parsetype(*argv,type)) usage();
43
44 if (!*++argv) usage();
45 if (dns_domain_fromdot(&q,*argv,str_len(*argv)) <= 0) oops();
46
47 if (*++argv) usage();
48
49 if (!stralloc_copys(&out,"")) oops();
50 uint16_unpack_big(type,&u16);
51 if (!stralloc_catulong0(&out,u16,0)) oops();
52 if (!stralloc_cats(&out," ")) oops();
53 if (dns_domain_todot_cat(&out,q) <= 0) oops();
54 if (!stralloc_cats(&out,":\n")) oops();
55
56 if (dns_resolve(q,type) < 0) {
57 if (!stralloc_cats(&out,errstr(errno))) oops();
58 if (!stralloc_cats(&out,"\n")) oops();
59 }
60 else {
61 if (dns_resolve_tx.packetlen < 4) oops();
62 dns_resolve_tx.packet[2] &= ~1;
63 dns_resolve_tx.packet[3] &= ~128;
65 }
66
67 buffer_putflush(buffer_1,out.s,out.len);
68 _exit(0);
69}
int main()
Definition: axfrdns.c:326
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:36
int dns_resolve(const char *q, const char qtype[2])
Definition: dns_resolve.c:11
struct dns_transmit dns_resolve_tx
Definition: dns_resolve.c:9
uint32 seed[32]
Definition: dnscache-conf.c:36
void oops(void)
Definition: dnsqr.c:22
char type[2]
Definition: dnsqr.c:27
unsigned int flagedns0
Definition: dnsqr.c:16
unsigned int msgsize
Definition: dnsqr.c:15
#define WHO
Definition: dnsqr.c:13
void usage(void)
Definition: dnsqr.c:18
int parsetype(char *, char[2])
Definition: parsetype.c:8
unsigned int printpacket_cat(stralloc *, char *, unsigned int)
Definition: printpacket.c:14
unsigned int packetlen
Definition: dns.h:109
char * packet
Definition: dns.h:108