11 #include "printpacket.h"
12 #include "parsetype.h"
16 extern int respond(char *,char *,char *);
18 #define FATAL "tinydns-get: fatal: "
22 strerr_die1x(100,"tinydns-get: usage: tinydns-get type name [ip]");
26 strerr_die2sys(111,FATAL
,"unable to parse: ");
35 int main(int argc
,char **argv
)
41 if (!*++argv
) usage();
42 if (!parsetype(*argv
,type
)) usage();
44 if (!*++argv
) usage();
45 if (!dns_domain_fromdot(&q
,*argv
,str_len(*argv
))) oops();
48 if (!ip4_scan(*argv
,ip
)) usage();
51 if (!stralloc_copys(&out
,"")) oops();
52 uint16_unpack_big(type
,&u16
);
53 if (!stralloc_catulong0(&out
,u16
,0)) oops();
54 if (!stralloc_cats(&out
," ")) oops();
55 if (!dns_domain_todot_cat(&out
,q
)) oops();
56 if (!stralloc_cats(&out
,":\n")) oops();
58 if (!response_query(q
,type
,DNS_C_IN
)) oops();
62 case_lowerb(q
,dns_domain_length(q
));
64 if (byte_equal(type
,2,DNS_T_AXFR
)) {
69 if (!respond(q
,type
,ip
)) goto DONE
;
71 if (!printpacket_cat(&out
,response
,response_len
)) oops();
74 buffer_putflush(buffer_1
,out
.s
,out
.len
);