X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;ds=sidebyside;f=include%2Fdns.h;h=8284971032300b29644e677b2ab3a805ad89b9df;hb=f36892a2d478cb37e00c36dceb05e24852c784da;hp=a780505d072fff09b0f551af84b9bbe43b0e11d4;hpb=248a14477c435ef28b71df42080ec931b1003e3f;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/include/dns.h b/include/dns.h index a780505d0..828497103 100644 --- a/include/dns.h +++ b/include/dns.h @@ -1,16 +1,24 @@ -/* +------------------------------------+ - * | Inspire Internet Relay Chat Daemon | - * +------------------------------------+ +/* + * InspIRCd -- Internet Relay Chat Daemon + * + * Copyright (C) 2009 Daniel De Graaf + * Copyright (C) 2005-2008 Craig Edwards + * Copyright (C) 2007 Dennis Friis * - * InspIRCd: (C) 2002-2009 InspIRCd Development Team - * See: http://wiki.inspircd.org/Credits + * This file is part of InspIRCd. InspIRCd is free software: you can + * redistribute it and/or modify it under the terms of the GNU General Public + * License as published by the Free Software Foundation, version 2. * - * This program is free but copyrighted software; see - * the file COPYING for details. + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. * - * --------------------------------------------------- + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . */ + /* dns.h - dns library very very loosely based on firedns, Copyright (C) 2002 Ian Gulliver @@ -29,18 +37,16 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#ifndef _DNS_H -#define _DNS_H +#ifndef DNS_H +#define DNS_H #include "socket.h" #include "hashcomp.h" -class Module; - /** * Result status, used internally */ -class CoreExport DNSResult : public classbase +class CoreExport DNSResult { public: /** Result ID @@ -72,7 +78,7 @@ typedef std::pair DNSInfo; /** Cached item stored in the query cache. */ -class CoreExport CachedQuery : public classbase +class CoreExport CachedQuery { public: /** The cached result data, an IP or hostname @@ -86,19 +92,12 @@ class CoreExport CachedQuery : public classbase * @param res The result data, an IP or hostname * @param ttl The time-to-live value of the query result */ - CachedQuery(const std::string &res, unsigned int ttl) : data(res) - { - expires = time(NULL) + ttl; - } + CachedQuery(const std::string &res, unsigned int ttl); /** Returns the number of seconds remaining before this * cache item has expired and should be removed. */ - int CalcTTLRemaining() - { - int n = (int)expires - (int)time(NULL); - return (n < 0 ? 0 : n); - } + int CalcTTLRemaining(); }; /** DNS cache information. Holds IPs mapped to hostnames, and hostnames mapped to IPs. @@ -106,7 +105,7 @@ class CoreExport CachedQuery : public classbase #if defined(WINDOWS) && !defined(HASHMAP_DEPRECATED) typedef nspace::hash_map > dnscache; #else -typedef nspace::hash_map > dnscache; +typedef nspace::hash_map dnscache; #endif /** @@ -122,21 +121,6 @@ enum ResolverError RESOLVER_FORCEUNLOAD = 5 }; -/** - * A DNS request - */ -class DNSRequest; - -/** - * A DNS packet header - */ -class DNSHeader; - -/** - * A DNS Resource Record (rr) - */ -struct ResourceRecord; - /** * Query and resource record types */ @@ -181,17 +165,13 @@ enum ForceProtocol * can occur by calling virtual methods, one is a success situation, and the other * an error situation. */ -class CoreExport Resolver : public Extensible +class CoreExport Resolver { protected: - /** - * Pointer to creator - */ - InspIRCd* ServerInstance; /** * Pointer to creator module (if any, or NULL) */ - Module* Creator; + ModuleRef Creator; /** * The input data, either a host or an IP address */ @@ -255,7 +235,7 @@ class CoreExport Resolver : public Extensible * whilst lookups are in progress, they can be safely removed and your module will not * crash the server. */ - Resolver(InspIRCd* Instance, const std::string &source, QueryType qt, bool &cached, Module* creator = NULL); + Resolver(const std::string &source, QueryType qt, bool &cached, Module* creator); /** * The default destructor does nothing. @@ -312,11 +292,6 @@ class CoreExport DNS : public EventHandler { private: - /** - * Creator/Owner object - */ - InspIRCd* ServerInstance; - /** * The maximum value of a dns request id, * 16 bits wide, 0xFFFF. @@ -328,14 +303,6 @@ class CoreExport DNS : public EventHandler */ int currid; - /** - * We have to turn off a few checks on received packets - * when people are using 4in6 (e.g. ::ffff:xxxx). This is - * a temporary kludge, Please let me know if you know how - * to fix it. - */ - bool ip6munge; - /** * Currently cached items */ @@ -353,20 +320,7 @@ class CoreExport DNS : public EventHandler public: - /** - * Server address being used currently - */ - int socketfamily; - - /** - * IPV6 server address - */ - in6_addr myserver6; - - /** - * IPV4 server address - */ - in_addr myserver4; + irc::sockets::sockaddrs myserver; /** * Currently active Resolver classes @@ -447,7 +401,7 @@ class CoreExport DNS : public EventHandler * The constructor initialises the dns socket, * and clears the request lists. */ - DNS(InspIRCd* Instance); + DNS(); /** * Re-initialize the DNS subsystem. @@ -459,13 +413,6 @@ class CoreExport DNS : public EventHandler */ ~DNS(); - /** Portable random number generator, generates - * its random number from the ircd stats counters, - * effective user id, time of day and the rollover - * counter (currid) - */ - unsigned long PRNG(); - /** * Turn an in6_addr into a .ip6.arpa domain */