Data Structures | Public Member Functions | Static Public Member Functions | Data Fields | Private Types | Private Attributes

DNSManager Class Reference

#include <dns.h>

Inherits Timer.

Collaboration diagram for DNSManager:
Collaboration graph
[legend]

Data Structures

class  ReplySocket
class  TCPSocket
class  UDPSocket

Public Member Functions

 DNSManager (const Anope::string &nameserver, const Anope::string &ip, int port)
 ~DNSManager ()
bool HandlePacket (ReplySocket *s, const unsigned char *const data, int len, sockaddrs *from)
void AddCache (DNSQuery &r)
bool CheckCache (DNSRequest *request)
void Tick (time_t now) anope_override
void Cleanup (Module *mod)
void UpdateSerial ()
uint32_t GetSerial () const

Static Public Member Functions

static DNSQuery BlockingQuery (const Anope::string &mask, QueryType qt)

Data Fields

TCPSockettcpsock
UDPSocketudpsock
sockaddrs addrs
std::map< unsigned short,
DNSRequest * > 
requests

Private Types

typedef std::multimap
< Anope::string,
ResourceRecord, ci::less
cache_map

Private Attributes

cache_map cache
bool listen
uint32_t serial

Detailed Description

DNS manager

Definition at line 161 of file dns.h.


Member Typedef Documentation

typedef std::multimap<Anope::string, ResourceRecord, ci::less> DNSManager::cache_map [private]

Definition at line 216 of file dns.h.


Constructor & Destructor Documentation

DNSManager::DNSManager ( const Anope::string nameserver,
const Anope::string ip,
int  port 
)
DNSManager::~DNSManager (  ) 

Definition at line 661 of file dns.cpp.

References cache, DNSQuery::error, DNSRequest::OnError(), requests, tcpsock, and udpsock.


Member Function Documentation

void DNSManager::AddCache ( DNSQuery r  ) 

Add a record to the dns cache

Parameters:
r The record

Definition at line 830 of file dns.cpp.

References DNSQuery::answers, cache, LOG_DEBUG_3, Question::name, ResourceRecord::rdata, and ResourceRecord::ttl.

Referenced by HandlePacket().

DNSQuery DNSManager::BlockingQuery ( const Anope::string mask,
QueryType  qt 
) [static]

Does a BLOCKING DNS query and returns the first IP. Only use this if you know what you are doing. Unless you specifically need a blocking query use the DNSRequest system

Definition at line 910 of file dns.cpp.

References sockaddrs::addr(), DNSQuery::answers, Anope::string::c_str(), DNS_QUERY_A, DNS_QUERY_AAAA, LOG_DEBUG_2, and ResourceRecord::rdata.

Referenced by Connect().

bool DNSManager::CheckCache ( DNSRequest request  ) 

Check the DNS cache to see if request can be handled by a cached result

Returns:
true if a cached result was found.

Definition at line 840 of file dns.cpp.

References DNSQuery::answers, cache, ResourceRecord::created, Anope::CurTime, LOG_DEBUG_3, Question::name, DNSRequest::OnLookupComplete(), and ResourceRecord::ttl.

Referenced by DNSRequest::Process().

void DNSManager::Cleanup ( Module mod  ) 

Cleanup all pending DNS queries for a module

Parameters:
mod The module

Definition at line 880 of file dns.cpp.

References DNSRequest::creator, DNSQuery::error, DNSRequest::OnError(), and requests.

Referenced by Module::~Module().

uint32_t DNSManager::GetSerial (  )  const

Definition at line 905 of file dns.cpp.

References serial.

Referenced by DNSPacket::Pack().

bool DNSManager::HandlePacket ( ReplySocket s,
const unsigned char *const   data,
int  len,
sockaddrs from 
)
void DNSManager::Tick ( time_t  now  )  [virtual]

Tick this timer, used to clear the DNS cache.

Implements Timer.

Definition at line 865 of file dns.cpp.

References cache, ResourceRecord::created, LOG_DEBUG_2, and ResourceRecord::ttl.

void DNSManager::UpdateSerial (  ) 

Definition at line 900 of file dns.cpp.

References Anope::CurTime, and serial.

Referenced by CommandOSDNS::AddIP(), CommandOSDNS::DelIP(), DNSManager(), and DNSServer::Pool().


Field Documentation

Definition at line 226 of file dns.h.

Referenced by DNSManager(), HandlePacket(), and DNSRequest::Process().

Definition at line 217 of file dns.h.

Referenced by AddCache(), CheckCache(), Tick(), and ~DNSManager().

bool DNSManager::listen [private]

Definition at line 219 of file dns.h.

Referenced by DNSManager(), and HandlePacket().

std::map<unsigned short, DNSRequest *> DNSManager::requests
uint32_t DNSManager::serial [private]

Definition at line 220 of file dns.h.

Referenced by GetSerial(), and UpdateSerial().

Definition at line 223 of file dns.h.

Referenced by DNSManager(), and ~DNSManager().

Definition at line 224 of file dns.h.

Referenced by DNSManager(), DNSRequest::DNSRequest(), DNSRequest::Process(), and ~DNSManager().


The documentation for this class was generated from the following files: