* | Inspire Internet Relay Chat Daemon |
* +------------------------------------+
*
- * InspIRCd: (C) 2002-2007 InspIRCd Development Team
+ * InspIRCd: (C) 2002-2008 InspIRCd Development Team
* See: http://www.inspircd.org/wiki/index.php/Credits
*
* This program is free but copyrighted software; see
#ifndef _DNS_H
#define _DNS_H
-#include <string>
-#include "inspircd_config.h"
-#include "base.h"
-#include "socketengine.h"
#include "socket.h"
-#include "hash_map.h"
#include "hashcomp.h"
-using namespace std;
-using irc::sockets::insp_aton;
-using irc::sockets::insp_ntoa;
-using irc::sockets::insp_sockaddr;
-using irc::sockets::insp_inaddr;
-
-class InspIRCd;
class Module;
/**
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_PTR6 = 0xFFFE /* Force 'PTR' to use IPV6 scemantics */
};
#ifdef IPV6
const QueryType DNS_QUERY_FORWARD = DNS_QUERY_AAAA;
-const QueryType DNS_QUERY_REVERSE = DNS_QUERY_PTR;
#else
const QueryType DNS_QUERY_FORWARD = DNS_QUERY_A;
-const QueryType DNS_QUERY_REVERSE = DNS_QUERY_PTR;
#endif
-
+const QueryType DNS_QUERY_REVERSE = DNS_QUERY_PTR;
/**
* 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.
* result, this is the number of seconds remaining before refresh/expiry.
* @param cached True if the result is a cached result, false if it was requested
* from the DNS server.
+ * @param resultnum Result number, for records with multiple matching results.
+ * Normally, you will only want to act on this when the result is 0.
*/
- virtual void OnLookupComplete(const std::string &result, unsigned int ttl, bool cached) = 0;
+ virtual void OnLookupComplete(const std::string &result, unsigned int ttl, bool cached, int resultnum = 0) = 0;
/**
* If an error occurs (such as NXDOMAIN, no domain name found) then this method
* will be called.
* e.g. use ipv6 reverse lookup when built for ipv6,
* or ipv4 lookup when built for ipv4.
*/
- int GetName(const insp_inaddr* ip);
+ int GetName(const irc::sockets::insp_inaddr* ip);
/**
* Start lookup of a hostname from an ip, but
/**
* Fetch the result string (an ip or host)
* and/or an error message to go with it.
+ * @param resultnum Result number to fetch
*/
- DNSResult GetResult();
+ DNSResult GetResult(int resultnum);
/**
* Handle a SocketEngine read event