+ /** Build a DNS result.
+ * @param i The request ID
+ * @param res The request result, a hostname or IP
+ * @param timetolive The request time-to-live
+ * @param orig The original request, a hostname or IP
+ */
DNSResult(int i, const std::string &res, unsigned long timetolive, const std::string &orig) : id(i), result(res), ttl(timetolive), original(orig) { }
};
DNSResult(int i, const std::string &res, unsigned long timetolive, const std::string &orig) : id(i), result(res), ttl(timetolive), original(orig) { }
};
CachedQuery(const std::string &res, unsigned int ttl) : data(res)
{
expires = time(NULL) + ttl;
}
CachedQuery(const std::string &res, unsigned int ttl) : data(res)
{
expires = time(NULL) + ttl;
}
- DNS_QUERY_NONE = 0, /* Uninitialized Query */
- DNS_QUERY_A = 1, /* 'A' record: an ipv4 address */
- DNS_QUERY_CNAME = 5, /* 'CNAME' record: An alias */
- DNS_QUERY_PTR = 12, /* 'PTR' record: a hostname */
- DNS_QUERY_AAAA = 28, /* 'AAAA' record: an ipv6 address */
-
- DNS_QUERY_PTR4 = 0xFFFD, /* Force 'PTR' to use IPV4 scemantics */
- DNS_QUERY_PTR6 = 0xFFFE, /* Force 'PTR' to use IPV6 scemantics */
+ DNS_QUERY_NONE = 0, /* Uninitialized Query */
+ DNS_QUERY_A = 1, /* 'A' record: an ipv4 address */
+ DNS_QUERY_CNAME = 5, /* 'CNAME' record: An alias */
+ DNS_QUERY_PTR = 12, /* 'PTR' record: a hostname */
+ DNS_QUERY_AAAA = 28, /* 'AAAA' record: an ipv6 address */
+
+ DNS_QUERY_PTR4 = 0xFFFD, /* Force 'PTR' to use IPV4 scemantics */
+ DNS_QUERY_PTR6 = 0xFFFE, /* Force 'PTR' to use IPV6 scemantics */
/**
* Used internally to force PTR lookups to use a certain protocol scemantics,
* e.g. x.x.x.x.in-addr.arpa for v4, and *.ip6.arpa for v6.
/**
* Used internally to force PTR lookups to use a certain protocol scemantics,
* e.g. x.x.x.x.in-addr.arpa for v4, and *.ip6.arpa for v6.
* back to Resolver objects, based upon the request ID. You
* should never use this class yourself.
*/
* back to Resolver objects, based upon the request ID. You
* should never use this class yourself.
*/
int MakePayload(const char* name, const QueryType rr, const unsigned short rr_class, unsigned char* payload);
public:
int MakePayload(const char* name, const QueryType rr, const unsigned short rr_class, unsigned char* payload);
public:
/**
* The port number DNS requests are made on,
* and replies have as a source-port number.
/**
* The port number DNS requests are made on,
* and replies have as a source-port number.
* Fill an rr (resource record) with data from input
*/
static void FillResourceRecord(ResourceRecord* rr, const unsigned char* input);
* Fill an rr (resource record) with data from input
*/
static void FillResourceRecord(ResourceRecord* rr, const unsigned char* input);
/**
* Fill a header with data from input limited by a length
*/
static void FillHeader(DNSHeader *header, const unsigned char *input, const int length);
/**
* Fill a header with data from input limited by a length
*/
static void FillHeader(DNSHeader *header, const unsigned char *input, const int length);
/**
* Empty out a header into a data stream ready for transmission "on the wire"
*/
static void EmptyHeader(unsigned char *output, const DNSHeader *header, const int length);
/**
* Empty out a header into a data stream ready for transmission "on the wire"
*/
static void EmptyHeader(unsigned char *output, const DNSHeader *header, const int length);