int main(int argc, char **argv) { DNS_RR *rr; MAI_HOSTADDR_STR hostaddr; VSTRING *why; int type; myname = argv[0]; if (argc < 3) usage(); why = vstring_alloc(1); while (*++argv) { if (argv[1] == 0) usage(); if ((type = dns_type(argv[0])) == 0) usage(); if (dns_lookup(argv[1], type, 0, &rr, (VSTRING *) 0, why) != DNS_OK) msg_fatal("%s: %s", argv[1], vstring_str(why)); if (dns_rr_to_pa(rr, &hostaddr) == 0) msg_fatal("dns_rr_to_sa: %m"); vstream_printf("%s -> %s\n", argv[1], hostaddr.buf); vstream_fflush(VSTREAM_OUT); argv += 1; dns_rr_free(rr); } vstring_free(why); return (0); }
int main(int argc, char **argv) { ARGV *types_argv; unsigned *types; char *name; VSTRING *fqdn = vstring_alloc(100); VSTRING *why = vstring_alloc(100); int rcode; DNS_RR *rr; int i; msg_vstream_init(argv[0], VSTREAM_ERR); if (argc != 3) msg_fatal("usage: %s types name", argv[0]); types_argv = argv_split(argv[1], ", \t\r\n"); types = (unsigned *) mymalloc(sizeof(*types) * (types_argv->argc + 1)); for (i = 0; i < types_argv->argc; i++) if ((types[i] = dns_type(types_argv->argv[i])) == 0) msg_fatal("invalid query type: %s", types_argv->argv[i]); types[i] = 0; argv_free(types_argv); name = argv[2]; msg_verbose = 1; switch (dns_lookup_rv(name, RES_DEBUG | RES_USE_DNSSEC, &rr, fqdn, why, &rcode, DNS_REQ_FLAG_NONE, types)) { default: msg_fatal("%s (rcode=%d)", vstring_str(why), rcode); case DNS_OK: printf("%s: fqdn: %s\n", name, vstring_str(fqdn)); print_rr(rr); dns_rr_free(rr); } myfree((char *) types); exit(0); }
int main(int argc, char **argv) { DNS_RR *rr; MAI_HOSTADDR_STR hostaddr; MAI_SERVPORT_STR portnum; struct sockaddr_storage ss; struct sockaddr *sa = (struct sockaddr *) &ss; SOCKADDR_SIZE sa_length = sizeof(ss); VSTRING *why; int type; int port; myname = argv[0]; if (argc < 4) usage(); why = vstring_alloc(1); while (*++argv) { if (argv[1] == 0 || argv[2] == 0) usage(); if ((type = dns_type(argv[0])) == 0) usage(); if (!alldig(argv[2]) || (port = atoi(argv[2])) > 65535) usage(); if (dns_lookup(argv[1], type, 0, &rr, (VSTRING *) 0, why) != DNS_OK) msg_fatal("%s: %s", argv[1], vstring_str(why)); sa_length = sizeof(ss); if (dns_rr_to_sa(rr, htons(port), sa, &sa_length) != 0) msg_fatal("dns_rr_to_sa: %m"); SOCKADDR_TO_HOSTADDR(sa, sa_length, &hostaddr, &portnum, 0); vstream_printf("%s %s -> %s %s\n", argv[1], argv[2], hostaddr.buf, portnum.buf); vstream_fflush(VSTREAM_OUT); argv += 2; dns_rr_free(rr); } vstring_free(why); return (0); }
int main(int argc, char **argv) { int type; char *name; VSTRING *fqdn = vstring_alloc(100); VSTRING *why = vstring_alloc(100); DNS_RR *rr; msg_vstream_init(argv[0], VSTREAM_ERR); if (argc != 3) msg_fatal("usage: %s type name", argv[0]); if ((type = dns_type(argv[1])) == 0) msg_fatal("invalid query type: %s", argv[1]); name = argv[2]; msg_verbose = 1; switch (dns_lookup_types(name, RES_DEFNAMES | RES_DEBUG, &rr, fqdn, why, type, 0)) { default: msg_fatal("%s", vstring_str(why)); case DNS_OK: printf("%s: fqdn: %s\n", name, vstring_str(fqdn)); print_rr(rr); } exit(0); }