* | 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;
/**
/** Cached item stored in the query cache.
*/
-class CoreExport CachedQuery
+class CoreExport CachedQuery : public classbase
{
public:
/** The cached result data, an IP or hostname
* 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