]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - include/dns.h
Merge pull request #1018 from SaberUK/insp20+hidekills
[user/henk/code/inspircd.git] / include / dns.h
index b88f3a24767aaacf4f343a1c050d5792c8872fb9..de4bcf4223fb713273b3edc2a4a1243f67b35490 100644 (file)
@@ -43,6 +43,28 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 #include "socket.h"
 #include "hashcomp.h"
 
+/**
+ * Query and resource record types
+ */
+enum QueryType
+{
+       /** Uninitialized Query */
+       DNS_QUERY_NONE  = 0,
+       /** 'A' record: an ipv4 address */
+       DNS_QUERY_A     = 1,
+       /** 'CNAME' record: An alias */
+       DNS_QUERY_CNAME = 5,
+       /** 'PTR' record: a hostname */
+       DNS_QUERY_PTR   = 12,
+       /** 'AAAA' record: an ipv6 address */
+       DNS_QUERY_AAAA  = 28,
+
+       /** Force 'PTR' to use IPV4 scemantics */
+       DNS_QUERY_PTR4  = 0xFFFD,
+       /** Force 'PTR' to use IPV6 scemantics */
+       DNS_QUERY_PTR6  = 0xFFFE
+};
+
 /**
  * Result status, used internally
  */
@@ -61,14 +83,18 @@ class CoreExport DNSResult
        /** The original request, a hostname or IP address
         */
        std::string original;
+       /** The type of the request
+        */
+       QueryType type;
 
        /** 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
+        * @param qt The type of DNS query this result represents.
         */
-       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, QueryType qt = DNS_QUERY_NONE) : id(i), result(res), ttl(timetolive), original(orig), type(qt) { }
 };
 
 /**
@@ -84,15 +110,19 @@ class CoreExport CachedQuery
        /** The cached result data, an IP or hostname
         */
        std::string data;
+       /** The type of result this is
+        */
+       QueryType type;
        /** The time when the item is due to expire
         */
        time_t expires;
 
        /** Build a cached query
         * @param res The result data, an IP or hostname
+        * @param qt The type of DNS query this instance represents.
         * @param ttl The time-to-live value of the query result
         */
-       CachedQuery(const std::string &res, unsigned int ttl);
+       CachedQuery(const std::string &res, QueryType qt, unsigned int ttl);
 
        /** Returns the number of seconds remaining before this
         * cache item has expired and should be removed.
@@ -117,28 +147,6 @@ enum ResolverError
        RESOLVER_FORCEUNLOAD    =       5
 };
 
-/**
- * Query and resource record types
- */
-enum QueryType
-{
-       /** Uninitialized Query */
-       DNS_QUERY_NONE  = 0,
-       /** 'A' record: an ipv4 address */
-       DNS_QUERY_A     = 1,
-       /** 'CNAME' record: An alias */
-       DNS_QUERY_CNAME = 5,
-       /** 'PTR' record: a hostname */
-       DNS_QUERY_PTR   = 12,
-       /** 'AAAA' record: an ipv6 address */
-       DNS_QUERY_AAAA  = 28,
-
-       /** Force 'PTR' to use IPV4 scemantics */
-       DNS_QUERY_PTR4  = 0xFFFD,
-       /** Force 'PTR' to use IPV6 scemantics */
-       DNS_QUERY_PTR6  = 0xFFFE
-};
-
 /**
  * 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.
@@ -294,11 +302,6 @@ class CoreExport DNS : public EventHandler
         */
        static const int MAX_REQUEST_ID = 0xFFFF;
 
-       /**
-        * A counter used to form part of the pseudo-random id
-        */
-       int currid;
-
        /**
         * Currently cached items
         */