Go to the documentation of this file.
19 #ifdef HAVE_NETINET_IN_H
20 # include <netinet/in.h>
22 #ifdef HAVE_ARPA_INET_H
23 # include <arpa/inet.h>
42 # define strdup(ptr) ares_strdup(ptr)
45 #ifndef HAVE_STRCASECMP
47 # define strcasecmp(p1,p2) ares_strcasecmp(p1,p2)
50 #ifndef HAVE_STRNCASECMP
52 # define strncasecmp(p1,p2,n) ares_strncasecmp(p1,p2,n)
129 "QUERY",
"IQUERY",
"STATUS",
"(reserved)",
"NOTIFY",
130 "(unknown)",
"(unknown)",
"(unknown)",
"(unknown)",
131 "UPDATEA",
"UPDATED",
"UPDATEDA",
"UPDATEM",
"UPDATEMA",
132 "ZONEINIT",
"ZONEREF"
136 "NOERROR",
"FORMERR",
"SERVFAIL",
"NXDOMAIN",
"NOTIMP",
"REFUSED",
137 "(unknown)",
"(unknown)",
"(unknown)",
"(unknown)",
"(unknown)",
138 "(unknown)",
"(unknown)",
"(unknown)",
"(unknown)",
"NOCHANGE"
142 unsigned char *abuf,
int alen);
144 const unsigned char *abuf,
146 static const unsigned char *
display_rr(
const unsigned char *aptr,
147 const unsigned char *abuf,
int alen);
151 static void usage(
void);
157 int main(
int argc,
char **argv)
162 int use_ptr_helper = 0;
164 struct hostent *hostent;
165 fd_set read_fds, write_fds;
170 WORD wVersionRequested = MAKEWORD(USE_WINSOCK,USE_WINSOCK);
172 WSAStartup(wVersionRequested, &wsaData);
185 while ((
c =
ares_getopt(argc, argv,
"dh?f:s:c:t:T:U:x")) != -1)
218 fprintf(
stderr,
"Out of memory!\n");
229 hostent = gethostbyname(
optarg);
232 fprintf(
stderr,
"adig: server %s not found.\n",
optarg);
236 switch (hostent->h_addrtype)
250 "adig: server %s unsupported address family.\n",
optarg);
323 fprintf(
stderr,
"ares_init_options: %s\n",
334 fprintf(
stderr,
"ares_init_options: %s\n",
345 for (
i = 1; *argv;
i++, argv++)
365 count = select(nfds, &read_fds, &write_fds, NULL, tvp);
386 unsigned char *abuf,
int alen)
389 int id, qr,
opcode, aa, tc, rd, ra, rcode;
390 unsigned int qdcount, ancount, nscount, arcount,
i;
391 const unsigned char *aptr;
429 printf(
"flags: %s%s%s%s%s\n",
441 for (
i = 0;
i < qdcount;
i++)
450 for (
i = 0;
i < ancount;
i++)
459 for (
i = 0;
i < nscount;
i++)
467 printf(
"Additional records:\n");
468 for (
i = 0;
i < arcount;
i++)
477 const unsigned char *abuf,
508 if (dnsclass !=
C_IN)
515 static const unsigned char *
display_rr(
const unsigned char *aptr,
516 const unsigned char *abuf,
int alen)
518 const unsigned char *
p;
524 unsigned char * as_uchar;
550 if (aptr + dlen > abuf + alen)
558 if (dnsclass !=
C_IN)
586 if (
p +
len + 1 > aptr + dlen)
595 if (
p +
len + 1 > aptr + dlen)
651 if (
p + 20 > aptr + dlen)
653 printf(
"\t\t\t\t\t\t( %u %u %u %u %u )",
663 while (
p < aptr + dlen)
666 if (
p +
len + 1 > aptr + dlen)
686 vlen = (
int)dlen - ((
char)*
p) - 2;
699 if (
p + vlen > abuf + alen)
779 printf(
"\t[RR type parsing unavailable]");
783 printf(
"\t[Unknown RR; cannot parse]");
813 #define MAX_IP6_RR (16*sizeof(".x.x") + sizeof(".IP6.ARPA") + 1)
816 #ifdef HAVE_INET_PTON
817 #define ACCEPTED_RETVAL4 1
818 #define ACCEPTED_RETVAL6 1
820 #define ACCEPTED_RETVAL4 32
821 #define ACCEPTED_RETVAL6 128
825 static const char hex_chars[] =
"0123456789ABCDEF";
828 struct in_addr
addr4;
834 unsigned long laddr = ntohl(
addr.addr4.s_addr);
835 unsigned long a1 = (laddr >> 24UL) & 0xFFUL;
836 unsigned long a2 = (laddr >> 16UL) & 0xFFUL;
837 unsigned long a3 = (laddr >> 8UL) & 0xFFUL;
838 unsigned long a4 = laddr & 0xFFUL;
840 snprintf(new_name,
sizeof(new_name),
"%lu.%lu.%lu.%lu.in-addr.arpa", a4, a3,
a2,
a1);
848 const unsigned char *ip = (
const unsigned char*) &
addr.addr6;
849 int max_i = (
int)
sizeof(
addr.addr6) - 1;
860 for (
i = max_i;
i >= 0;
i--)
864 *
c++ = hex_chars [lo];
865 *
c++ = hex_chars [hi];
867 strcpy (
c,
"].IP6.ARPA");
871 for (
i = max_i;
i >= 0;
i--)
875 *
c++ = hex_chars [lo];
877 *
c++ = hex_chars [hi];
880 strcpy (
c,
"IP6.ARPA");
885 printf(
"Address %s was not legal for this query.\n", *name_p);
915 fprintf(
stderr,
"usage: adig [-h] [-d] [-f flag] [-s server] [-c class] "
916 "[-t type] [-T|U port] [-x|-xx] name ...\n");
950 printf(
"usage: adig [-h] [-d] [-f flag] [-s server] [-c class] [-t type] [-T|U port] [-x | -xx] name ...\n\n"
951 " d : Print some extra debugging output.\n"
952 " f : Add a flag. Possible values for flag are igntc, noaliases, norecurse, primary, stayopen, usevc.\n"
953 " h : Display this help and exit.\n\n"
954 " T port : Use specified TCP port to connect to DNS server.\n"
955 " U port : Use specified UDP port to connect to DNS server.\n"
956 " c class : Set the query class. Possible values for class are NY, CHAOS, HS, IN (default).\n"
957 " s server : Connect to specified DNS server, instead of the system's default one(s).\n"
958 " t type : Query records of specified type. \n"
959 " Possible values for type are A \n"
960 " (default), AAAA, AFSDB, ANY,\n"
961 " AXFR, CNAME, GPOS, HINFO, ISDN,\n"
962 " KEY, LOC, MAILA, MAILB, MB, MD,\n"
963 " MF, MG, MINFO, MR, MX, NAPTR, NS,\n"
964 " NSAP, NSAP_PTR, NULL, PTR, PX, RP,\n"
965 " RT, SIG, SOA, SRV, TXT, WKS, X25\n\n"
966 " -x : For a '-t PTR a.b.c.d' lookup, query for 'd.c.b.a.in-addr.arpa.'\n"
967 " -xx : As above, but for IPv6, compact the format into a bitstring like\n"
968 " '[xabcdef00000000000000000000000000].IP6.ARPA.'\n");
static const struct nv flags[]
const CARES_EXTERN char * ares_inet_ntop(int af, const void *src, char *dst, ares_socklen_t size)
CARES_EXTERN int ares_inet_pton(int af, const char *src, void *dst)
CARES_EXTERN void ares_process(ares_channel channel, fd_set *read_fds, fd_set *write_fds)
CARES_EXTERN int ares_library_init(int flags)
CARES_EXTERN void ares_query(ares_channel channel, const char *name, int dnsclass, int type, ares_callback callback, void *arg)
#define DNS_HEADER_ARCOUNT(h)
int main(int argc, char **argv)
static const char * rcodes[]
CARES_EXTERN void ares_free_string(void *str)
_Use_decl_annotations_ int __cdecl printf(const char *_Format,...)
union ares_addr_node::@382 addr
CARES_EXTERN int ares_expand_string(const unsigned char *encoded, const unsigned char *abuf, int alen, unsigned char **s, long *enclen)
CARES_EXTERN int ares_fds(ares_channel channel, fd_set *read_fds, fd_set *write_fds)
#define ARES_OPT_UDP_PORT
struct ares_in6_addr addr6
#define ARES_LIB_INIT_ALL
struct ares_addr_node * next
static const unsigned char * display_question(const unsigned char *aptr, const unsigned char *abuf, int alen)
#define DNS_HEADER_OPCODE(h)
#define ARES_FLAG_NOCHECKRESP
#define DNS_HEADER_QID(h)
static void append_addr_list(struct ares_addr_node **head, struct ares_addr_node *node)
static void print_help_info_adig(void)
static void callback(void *arg, int status, int timeouts, unsigned char *abuf, int alen)
CARES_EXTERN int ares_expand_name(const unsigned char *encoded, const unsigned char *abuf, int alen, char **s, long *enclen)
memcpy(mem, inblock.get(), min(CONTAINING_RECORD(inblock.get(), MEMBLOCK, data) ->size, size))
#define DNS_QUESTION_CLASS(q)
wrapped_grpc_channel * channel
#define DNS_QUESTION_TYPE(q)
static struct sockaddr_in6 addr6
#define DNS_HEADER_NSCOUNT(h)
#define ARES_FLAG_STAYOPEN
static const unsigned char * display_rr(const unsigned char *aptr, const unsigned char *abuf, int alen)
#define ARES_OPT_TCP_PORT
#define DNS_HEADER_QDCOUNT(h)
const CARES_EXTERN char * ares_strerror(int code)
#define DNS_HEADER_RCODE(h)
CARES_EXTERN int ares_set_servers(ares_channel channel, struct ares_addr_node *servers)
static const char * class_name(int dnsclass)
#define ARES_FLAG_PRIMARY
static struct sockaddr_in addr4
static const int nclasses
static const struct nv classes[]
int ares_getopt(int nargc, char *const nargv[], const char *ostr)
#define strcasecmp(p1, p2)
CARES_EXTERN void ares_library_cleanup(void)
CARES_EXTERN void ares_destroy(ares_channel channel)
CARES_EXTERN struct timeval * ares_timeout(ares_channel channel, struct timeval *maxtv, struct timeval *tv)
static void destroy_addr_list(struct ares_addr_node *head)
#define ARES_FLAG_NORECURSE
static const struct nv types[]
#define DNS_HEADER_ANCOUNT(h)
#define ARES_FLAG_NOALIASES
CARES_EXTERN int ares_init_options(ares_channel *channelptr, struct ares_options *options, int optmask)
static const char * opcodes[]
static int convert_query(char **name, int use_bitstring)
static const char * type_name(int type)
grpc
Author(s):
autogenerated on Fri May 16 2025 02:57:40