X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=include%2Fdns.h;h=de4bcf4223fb713273b3edc2a4a1243f67b35490;hb=4c751dbbe8945e5efc230a59b0ed51c2ba10cf92;hp=0e11f0d17eddd2f94a438e33fabe23dd84ca2860;hpb=df5f76832ee67d1cbfb1fc47a8d3ec3823f010c5;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/include/dns.h b/include/dns.h index 0e11f0d17..de4bcf422 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-2010 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 @@ -35,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 */ @@ -53,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) { } }; /** @@ -76,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. @@ -94,11 +132,7 @@ class CoreExport CachedQuery /** DNS cache information. Holds IPs mapped to hostnames, and hostnames mapped to IPs. */ -#if defined(WINDOWS) && !defined(HASHMAP_DEPRECATED) -typedef nspace::hash_map > dnscache; -#else typedef nspace::hash_map dnscache; -#endif /** * Error types that class Resolver can emit to its error method. @@ -113,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. @@ -290,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 */