24#include <sys/socket.h>
25#include <netinet/in.h>
44#if defined(WIN32) || defined(__QNX__)
45#define strcasecmp(a,b) stricmp(a,b)
46#define strncasecmp(a,b,c) strnicmp(a,b,c)
51#define INADDR_NONE 0xffffffff
120 "QUERY",
"IQUERY",
"STATUS",
"(reserved)",
"NOTIFY",
121 "(unknown)",
"(unknown)",
"(unknown)",
"(unknown)",
122 "UPDATEA",
"UPDATED",
"UPDATEDA",
"UPDATEM",
"UPDATEMA",
123 "ZONEINIT",
"ZONEREF"
127 "NOERROR",
"FORMERR",
"SERVFAIL",
"NXDOMAIN",
"NOTIMP",
"REFUSED",
128 "(unknown)",
"(unknown)",
"(unknown)",
"(unknown)",
"(unknown)",
129 "(unknown)",
"(unknown)",
"(unknown)",
"(unknown)",
"NOCHANGE"
132static void callback(
void *arg,
int status,
unsigned char *abuf,
int alen);
134 const unsigned char *abuf,
137 const unsigned char *abuf,
int alen);
140static void usage(
void);
172 if (*p ==
'-' &&
isalnum((
unsigned char)*(p+1)))
179 for(
i = 0 ;
i <
l;
i++)
213 int status,
nfds, count;
388static void callback(
void *arg,
int status,
unsigned char *abuf,
int alen)
390 char *name = (
char *) arg;
393 const unsigned char *
aptr;
397 printf(
"Answer for query %s:\n", name);
429 printf(
"flags: %s%s%s%s%s\n",
467 printf(
"Additional records:\n");
477 const unsigned char *abuf,
481 int type, dnsclass, status, len;
506 printf(
"\t%-15s.\t", name);
507 if (dnsclass !=
C_IN)
515 const unsigned char *abuf,
int alen)
517 const unsigned char *p;
519 int type, dnsclass, ttl,
dlen, status, len;
551 printf(
"\t%-15s.\t%d", name, ttl);
552 if (dnsclass !=
C_IN)
582 printf(
"\t%.*s", len, p + 1);
587 printf(
"\t%.*s", len, p + 1);
634 printf(
"\t\t\t\t\t\t%s.\n", name);
639 printf(
"\t\t\t\t\t\t( %d %d %d %d %d )",
640 (p[0] << 24) | (p[1] << 16) | (p[2] << 8) | p[3],
641 (p[4] << 24) | (p[5] << 16) | (p[6] << 8) | p[7],
642 (p[8] << 24) | (p[9] << 16) | (p[10] << 8) | p[11],
643 (p[12] << 24) | (p[13] << 16) | (p[14] << 8) | p[15],
644 (p[16] << 24) | (p[17] << 16) | (p[18] << 8) | p[19]);
656 printf(
"\t%.*s", len, p + 1);
704 printf(
" %.*s", len, p + 1);
709 printf(
" %.*s", len, p + 1);
714 printf(
" %.*s", len, p + 1);
724 printf(
"\t[Unknown RR; cannot parse]");
737 if (
types[
i].value == type)
757 fprintf(
stderr,
"usage: adig [-f flag] [-s server] [-c class] "
758 "[-t type] [-p port] name ...\n");
#define resip_assert(x)
This file needs to work for both C and C++ code.
static const char * rcodes[]
static const struct nv flags[]
static const char * class_name(int dnsclass)
int main(int argc, char **argv)
static const char * type_name(int type)
static const int nclasses
static const struct nv types[]
static void callback(void *arg, int status, unsigned char *abuf, int alen)
static const unsigned char * display_rr(const unsigned char *aptr, const unsigned char *abuf, int alen)
static const unsigned char * display_question(const unsigned char *aptr, const unsigned char *abuf, int alen)
static const char * opcodes[]
static const struct nv classes[]
#define ARES_FLAG_NOALIASES
#define ARES_FLAG_PRIMARY
#define ARES_OPT_UDP_PORT
struct timeval * ares_timeout(ares_channel channel, struct timeval *maxtv, struct timeval *tv)
void ares_process(ares_channel channel, fd_set *read_fds, fd_set *write_fds)
const char * ares_strerror(int code)
#define DNS_HEADER_QDCOUNT(h)
void ares_destroy(ares_channel channel)
#define DNS_HEADER_NSCOUNT(h)
#define DNS_HEADER_ANCOUNT(h)
#define ARES_OPT_TCP_PORT
#define ARES_FLAG_NOCHECKRESP
#define DNS_HEADER_ARCOUNT(h)
int ares_expand_name(const unsigned char *encoded, const unsigned char *abuf, int alen, char **s, long *enclen)
#define ARES_FLAG_NORECURSE
#define ARES_FLAG_STAYOPEN
int ares_fds(ares_channel channel, fd_set *read_fds, fd_set *write_fds)
void ares_query(ares_channel channel, const char *name, int dnsclass, int type, ares_callback callback, void *arg)
int ares_init_options(ares_channel *channelptr, struct ares_options *options, int optmask)
#define DNS_QUESTION_CLASS(q)
#define DNS_QUESTION_TYPE(q)
#define DNS_HEADER_QID(h)
#define DNS_HEADER_OPCODE(h)
#define DNS_HEADER_RCODE(h)