Commit 373bed0a authored by Michal 'vorner' Vaner's avatar Michal 'vorner' Vaner
Browse files
parents a01f7fc6 5355f8f1
......@@ -20,10 +20,10 @@ pkglibexecdir = $(libexecdir)/@PACKAGE@
CLEANFILES = *.gcno *.gcda
CLEANFILES += resolver.spec spec_config.h
CLEANFILES += resolverdef.cc resolverdef.h
CLEANFILES += resolver_messages.cc resolver_messages.h
man_MANS = b10-resolver.8
EXTRA_DIST = $(man_MANS) b10-resolver.xml resolverdef.mes
EXTRA_DIST = $(man_MANS) b10-resolver.xml resolver_messages.mes
if ENABLE_MAN
......@@ -39,11 +39,11 @@ spec_config.h: spec_config.h.pre
$(SED) -e "s|@@LOCALSTATEDIR@@|$(localstatedir)|" spec_config.h.pre >$@
# Define rule to build logging source files from message file
resolverdef.h resolverdef.cc: resolverdef.mes
$(top_builddir)/src/lib/log/compiler/message $(top_srcdir)/src/bin/resolver/resolverdef.mes
resolver_messages.h resolver_messages.cc: resolver_messages.mes
$(top_builddir)/src/lib/log/compiler/message $(top_srcdir)/src/bin/resolver/resolver_messages.mes
BUILT_SOURCES = spec_config.h resolverdef.cc resolverdef.h
BUILT_SOURCES = spec_config.h resolver_messages.cc resolver_messages.h
pkglibexec_PROGRAMS = b10-resolver
b10_resolver_SOURCES = resolver.cc resolver.h
......@@ -53,7 +53,7 @@ b10_resolver_SOURCES += $(top_builddir)/src/bin/auth/change_user.h
b10_resolver_SOURCES += $(top_builddir)/src/bin/auth/common.h
b10_resolver_SOURCES += main.cc
nodist_b10_resolver_SOURCES = resolverdef.cc resolverdef.h
nodist_b10_resolver_SOURCES = resolver_messages.cc resolver_messages.h
b10_resolver_LDADD = $(top_builddir)/src/lib/dns/libdns++.la
......
......@@ -80,7 +80,7 @@ my_command_handler(const string& command, ConstElementPtr args) {
ConstElementPtr answer = createAnswer();
if (command == "print_message") {
LOG_INFO(resolver_logger, RESOLVER_PRINTMSG).arg(args);
LOG_INFO(resolver_logger, RESOLVER_PRINT_COMMAND).arg(args);
/* let's add that message to our answer as well */
answer = createAnswer(0, args);
} else if (command == "shutdown") {
......@@ -203,14 +203,14 @@ main(int argc, char* argv[]) {
DNSService dns_service(io_service, checkin, lookup, answer);
resolver->setDNSService(dns_service);
LOG_DEBUG(resolver_logger, RESOLVER_DBG_INIT, RESOLVER_SERVICE);
LOG_DEBUG(resolver_logger, RESOLVER_DBG_INIT, RESOLVER_SERVICE_CREATED);
cc_session = new Session(io_service.get_io_service());
config_session = new ModuleCCSession(specfile, *cc_session,
my_config_handler,
my_command_handler,
true, true);
LOG_DEBUG(resolver_logger, RESOLVER_DBG_INIT, RESOLVER_CONFIGCHAN);
LOG_DEBUG(resolver_logger, RESOLVER_DBG_INIT, RESOLVER_CONFIG_CHANNEL);
// FIXME: This does not belong here, but inside Boss
if (uid != NULL) {
......@@ -218,7 +218,7 @@ main(int argc, char* argv[]) {
}
resolver->setConfigSession(config_session);
LOG_DEBUG(resolver_logger, RESOLVER_DBG_INIT, RESOLVER_CONFIGLOAD);
LOG_DEBUG(resolver_logger, RESOLVER_DBG_INIT, RESOLVER_CONFIG_LOADED);
LOG_INFO(resolver_logger, RESOLVER_STARTED);
io_service.run();
......
......@@ -83,7 +83,7 @@ public:
isc::cache::ResolverCache& cache)
{
assert(!rec_query_); // queryShutdown must be called first
LOG_DEBUG(resolver_logger, RESOLVER_DBG_INIT, RESOLVER_QUSETUP);
LOG_DEBUG(resolver_logger, RESOLVER_DBG_INIT, RESOLVER_QUERY_SETUP);
rec_query_ = new RecursiveQuery(dnss,
nsas, cache,
upstream_,
......@@ -99,7 +99,8 @@ public:
// (this is not a safety check, just to prevent logging of
// actions that are not performed
if (rec_query_) {
LOG_DEBUG(resolver_logger, RESOLVER_DBG_INIT, RESOLVER_QUSHUT);
LOG_DEBUG(resolver_logger, RESOLVER_DBG_INIT,
RESOLVER_QUERY_SHUTDOWN);
delete rec_query_;
rec_query_ = NULL;
}
......@@ -112,7 +113,7 @@ public:
if (dnss) {
if (!upstream_.empty()) {
BOOST_FOREACH(const AddressPair& address, upstream) {
LOG_INFO(resolver_logger, RESOLVER_FWDADDR)
LOG_INFO(resolver_logger, RESOLVER_FORWARD_ADDRESS)
.arg(address.first).arg(address.second);
}
} else {
......@@ -128,11 +129,11 @@ public:
if (dnss) {
if (!upstream_root_.empty()) {
BOOST_FOREACH(const AddressPair& address, upstream_root) {
LOG_INFO(resolver_logger, RESOLVER_ROOTADDR)
LOG_INFO(resolver_logger, RESOLVER_SET_ROOT_ADDRESS)
.arg(address.first).arg(address.second);
}
} else {
LOG_WARN(resolver_logger, RESOLVER_NOROOTADDR);
LOG_WARN(resolver_logger, RESOLVER_NO_ROOT_ADDRESS);
}
}
}
......@@ -302,7 +303,8 @@ public:
answer_message->toWire(renderer);
LOG_DEBUG(resolver_logger, RESOLVER_DBG_DETAIL, RESOLVER_DNSMSGSENT)
LOG_DEBUG(resolver_logger, RESOLVER_DBG_DETAIL,
RESOLVER_DNS_MESSAGE_SENT)
.arg(renderer.getLength()).arg(*answer_message);
}
};
......@@ -395,13 +397,13 @@ Resolver::processMessage(const IOMessage& io_message,
// Ignore all responses.
if (query_message->getHeaderFlag(Message::HEADERFLAG_QR)) {
LOG_DEBUG(resolver_logger, RESOLVER_DBG_IO, RESOLVER_UNEXRESP);
LOG_DEBUG(resolver_logger, RESOLVER_DBG_IO, RESOLVER_UNEXPECTED_RESPONSE);
server->resume(false);
return;
}
} catch (const Exception& ex) {
LOG_DEBUG(resolver_logger, RESOLVER_DBG_IO, RESOLVER_HDRERR)
LOG_DEBUG(resolver_logger, RESOLVER_DBG_IO, RESOLVER_HEADER_ERROR)
.arg(ex.what());
server->resume(false);
return;
......@@ -411,14 +413,14 @@ Resolver::processMessage(const IOMessage& io_message,
try {
query_message->fromWire(request_buffer);
} catch (const DNSProtocolError& error) {
LOG_DEBUG(resolver_logger, RESOLVER_DBG_IO, RESOLVER_PROTERR)
LOG_DEBUG(resolver_logger, RESOLVER_DBG_IO, RESOLVER_PROTOCOL_ERROR)
.arg(error.what()).arg(error.getRcode());
makeErrorMessage(query_message, answer_message,
buffer, error.getRcode());
server->resume(true);
return;
} catch (const Exception& ex) {
LOG_DEBUG(resolver_logger, RESOLVER_DBG_IO, RESOLVER_PROTERR)
LOG_DEBUG(resolver_logger, RESOLVER_DBG_IO, RESOLVER_MESSAGE_ERROR)
.arg(ex.what()).arg(Rcode::SERVFAIL());
makeErrorMessage(query_message, answer_message,
buffer, Rcode::SERVFAIL());
......@@ -429,8 +431,8 @@ Resolver::processMessage(const IOMessage& io_message,
// Note: there appears to be no LOG_DEBUG for a successfully-received
// message. This is not an oversight - it is handled below. In the
// meantime, output the full message for debug purposes (if requested).
LOG_DEBUG(resolver_logger, RESOLVER_DBG_DETAIL, RESOLVER_DNSMSGRCVD)
.arg(*query_message);
LOG_DEBUG(resolver_logger, RESOLVER_DBG_DETAIL,
RESOLVER_DNS_MESSAGE_RECEIVED).arg(*query_message);
// Perform further protocol-level validation.
bool sendAnswer = true;
......@@ -439,20 +441,22 @@ Resolver::processMessage(const IOMessage& io_message,
makeErrorMessage(query_message, answer_message,
buffer, Rcode::NOTAUTH());
// Notify arrived, but we are not authoritative.
LOG_DEBUG(resolver_logger, RESOLVER_DBG_PROCESS, RESOLVER_NFYNOTAUTH);
LOG_DEBUG(resolver_logger, RESOLVER_DBG_PROCESS,
RESOLVER_NOTIFY_RECEIVED);
} else if (query_message->getOpcode() != Opcode::QUERY()) {
// Unsupported opcode.
LOG_DEBUG(resolver_logger, RESOLVER_DBG_PROCESS, RESOLVER_OPCODEUNS)
.arg(query_message->getOpcode());
LOG_DEBUG(resolver_logger, RESOLVER_DBG_PROCESS,
RESOLVER_UNSUPPORTED_OPCODE).arg(query_message->getOpcode());
makeErrorMessage(query_message, answer_message,
buffer, Rcode::NOTIMP());
} else if (query_message->getRRCount(Message::SECTION_QUESTION) != 1) {
// Not one question
LOG_DEBUG(resolver_logger, RESOLVER_DBG_PROCESS, RESOLVER_NOTONEQUES)
LOG_DEBUG(resolver_logger, RESOLVER_DBG_PROCESS,
RESOLVER_NOT_ONE_QUESTION)
.arg(query_message->getRRCount(Message::SECTION_QUESTION));
makeErrorMessage(query_message, answer_message,
buffer, Rcode::FORMERR());
......@@ -464,14 +468,14 @@ Resolver::processMessage(const IOMessage& io_message,
// Can't process AXFR request receoved over UDP
LOG_DEBUG(resolver_logger, RESOLVER_DBG_PROCESS,
RESOLVER_AXFRUDP);
RESOLVER_AXFR_UDP);
makeErrorMessage(query_message, answer_message,
buffer, Rcode::FORMERR());
} else {
// ... or over TCP for that matter
LOG_DEBUG(resolver_logger, RESOLVER_DBG_PROCESS,
RESOLVER_AXFRTCP);
RESOLVER_AXFR_TCP);
makeErrorMessage(query_message, answer_message,
buffer, Rcode::NOTIMP());
}
......@@ -485,7 +489,7 @@ Resolver::processMessage(const IOMessage& io_message,
} else if (question->getClass() != RRClass::IN()) {
// Non-IN message received, refuse it.
LOG_DEBUG(resolver_logger, RESOLVER_DBG_PROCESS, RESOLVER_NOTIN)
LOG_DEBUG(resolver_logger, RESOLVER_DBG_PROCESS, RESOLVER_NON_IN_PACKET)
.arg(question->getClass());
makeErrorMessage(query_message, answer_message,
buffer, Rcode::REFUSED());
......@@ -518,21 +522,21 @@ ResolverImpl::processNormalQuery(ConstMessagePtr query_message,
{
if (upstream_.empty()) {
// Processing normal query
LOG_DEBUG(resolver_logger, RESOLVER_DBG_IO, RESOLVER_NORMQUERY);
LOG_DEBUG(resolver_logger, RESOLVER_DBG_IO, RESOLVER_NORMAL_QUERY);
ConstQuestionPtr question = *query_message->beginQuestion();
rec_query_->resolve(*question, answer_message, buffer, server);
} else {
// Processing forward query
LOG_DEBUG(resolver_logger, RESOLVER_DBG_IO, RESOLVER_FWDQUERY);
LOG_DEBUG(resolver_logger, RESOLVER_DBG_IO, RESOLVER_FORWARD_QUERY);
rec_query_->forward(query_message, answer_message, buffer, server);
}
}
ConstElementPtr
Resolver::updateConfig(ConstElementPtr config) {
LOG_DEBUG(resolver_logger, RESOLVER_DBG_CONFIG, RESOLVER_CONFIGUPD)
LOG_DEBUG(resolver_logger, RESOLVER_DBG_CONFIG, RESOLVER_CONFIG_UPDATED)
.arg(*config);
try {
......@@ -560,7 +564,8 @@ Resolver::updateConfig(ConstElementPtr config) {
// check for us
qtimeout = qtimeoutE->intValue();
if (qtimeout < -1) {
LOG_ERROR(resolver_logger, RESOLVER_QUTMOSMALL).arg(qtimeout);
LOG_ERROR(resolver_logger, RESOLVER_QUERY_TIME_SMALL)
.arg(qtimeout);
isc_throw(BadValue, "Query timeout too small");
}
set_timeouts = true;
......@@ -568,7 +573,8 @@ Resolver::updateConfig(ConstElementPtr config) {
if (ctimeoutE) {
ctimeout = ctimeoutE->intValue();
if (ctimeout < -1) {
LOG_ERROR(resolver_logger, RESOLVER_CLTMOSMALL).arg(ctimeout);
LOG_ERROR(resolver_logger, RESOLVER_CLIENT_TIME_SMALL)
.arg(ctimeout);
isc_throw(BadValue, "Client timeout too small");
}
set_timeouts = true;
......@@ -576,7 +582,8 @@ Resolver::updateConfig(ConstElementPtr config) {
if (ltimeoutE) {
ltimeout = ltimeoutE->intValue();
if (ltimeout < -1) {
LOG_ERROR(resolver_logger, RESOLVER_LKTMOSMALL).arg(ltimeout);
LOG_ERROR(resolver_logger, RESOLVER_LOOKUP_TIME_SMALL)
.arg(ltimeout);
isc_throw(BadValue, "Lookup timeout too small");
}
set_timeouts = true;
......@@ -586,7 +593,7 @@ Resolver::updateConfig(ConstElementPtr config) {
// _after_ the comparison (as opposed to before it for the timeouts)
// because "retries" is unsigned.
if (retriesE->intValue() < 0) {
LOG_ERROR(resolver_logger, RESOLVER_RETRYNEG)
LOG_ERROR(resolver_logger, RESOLVER_NEGATIVE_RETRIES)
.arg(retriesE->intValue());
isc_throw(BadValue, "Negative number of retries");
}
......@@ -633,7 +640,7 @@ Resolver::updateConfig(ConstElementPtr config) {
} catch (const isc::Exception& error) {
// Configuration error
LOG_ERROR(resolver_logger, RESOLVER_CONFIGERR).arg(error.what());
LOG_ERROR(resolver_logger, RESOLVER_CONFIG_ERROR).arg(error.what());
return (isc::config::createAnswer(1, error.what()));
}
}
......@@ -673,7 +680,7 @@ Resolver::setListenAddresses(const AddressList& addresses) {
void
Resolver::setTimeouts(int query_timeout, int client_timeout,
int lookup_timeout, unsigned retries) {
LOG_DEBUG(resolver_logger, RESOLVER_DBG_CONFIG, RESOLVER_SETPARAM)
LOG_DEBUG(resolver_logger, RESOLVER_DBG_CONFIG, RESOLVER_SET_PARAMS)
.arg(query_timeout).arg(client_timeout).arg(lookup_timeout)
.arg(retries);
......
......@@ -16,7 +16,7 @@
#define __RESOLVER_LOG__H
#include <log/macros.h>
#include "resolverdef.h"
#include "resolver_messages.h"
/// \brief Resolver Logging
///
......
......@@ -12,155 +12,151 @@
# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
# PERFORMANCE OF THIS SOFTWARE.
$PREFIX RESOLVER_
# No namespace declaration - these constants go in the global namespace
# along with the resolver methods.
% AXFRTCP AXFR request received over TCP
% RESOLVER_AXFR_TCP AXFR request received over TCP
A debug message, the resolver received a NOTIFY message over TCP. The server
cannot process it and will return an error message to the sender with the
RCODE set to NOTIMP.
% AXFRUDP AXFR request received over UDP
% RESOLVER_AXFR_UDP AXFR request received over UDP
A debug message, the resolver received a NOTIFY message over UDP. The server
cannot process it (and in any case, an AXFR request should be sent over TCP)
and will return an error message to the sender with the RCODE set to FORMERR.
% CONFIGCHAN configuration channel created
% RESOLVER_CLIENT_TIME_SMALL client timeout of %1 is too small
An error indicating that the configuration value specified for the query
timeout is too small.
% RESOLVER_CONFIG_CHANNEL configuration channel created
A debug message, output when the resolver has successfully established a
connection to the configuration channel.
% CONFIGERR error in configuration: %1
% RESOLVER_CONFIG_ERROR error in configuration: %1
An error was detected in a configuration update received by the resolver. This
may be in the format of the configuration message (in which case this is a
programming error) or it may be in the data supplied (in which case it is
a user error). The reason for the error, given as a parameter in the message,
will give more details.
% CONFIGLOAD configuration loaded
% RESOLVER_CONFIG_LOADED configuration loaded
A debug message, output when the resolver configuration has been successfully
loaded.
% CONFIGUPD configuration updated: %1
% RESOLVER_CONFIG_UPDATED configuration updated: %1
A debug message, the configuration has been updated with the specified
information.
% DNSMSGRCVD DNS message received: %1
% RESOLVER_CREATED main resolver object created
A debug message, output when the Resolver() object has been created.
% RESOLVER_DNS_MESSAGE_RECEIVED DNS message received: %1
A debug message, this always precedes some other logging message and is the
formatted contents of the DNS packet that the other message refers to.
% DNSMSGSENT DNS message of %1 bytes sent: %2
% RESOLVER_DNS_MESSAGE_SENT DNS message of %1 bytes sent: %2
A debug message, this contains details of the response sent back to the querying
system.
% CLTMOSMALL client timeout of %1 is too small
An error indicating that the configuration value specified for the query
timeout is too small.
% CREATED main resolver object created
A debug message, output when the Resolver() object has been created.
% FAILED resolver failed, reason: %1
% RESOLVER_FAILED resolver failed, reason: %1
This is an error message output when an unhandled exception is caught by the
resolver. All it can do is to shut down.
% FWDADDR setting forward address %1(%2)
% RESOLVER_FORWARD_ADDRESS setting forward address %1(%2)
This message may appear multiple times during startup, and it lists the
forward addresses used by the resolver when running in forwarding mode.
% FWDQUERY processing forward query
% RESOLVER_FORWARD_QUERY processing forward query
The received query has passed all checks and is being forwarded to upstream
servers.
% HDRERR message received, exception when processing header: %1
% RESOLVER_HEADER_ERROR message received, exception when processing header: %1
A debug message noting that an exception occurred during the processing of
a received packet. The packet has been dropped.
% IXFR IXFR request received
% RESOLVER_IXFR IXFR request received
The resolver received a NOTIFY message over TCP. The server cannot process it
and will return an error message to the sender with the RCODE set to NOTIMP.
% LKTMOSMALL lookup timeout of %1 is too small
% RESOLVER_LOOKUP_TIME_SMALL lookup timeout of %1 is too small
An error indicating that the configuration value specified for the lookup
timeout is too small.
% NFYNOTAUTH NOTIFY arrived but server is not authoritative
The resolver received a NOTIFY message. As the server is not authoritative it
cannot process it, so it returns an error message to the sender with the RCODE
set to NOTAUTH.
% RESOLVER_MESSAGE_ERROR error parsing received message: %1 - returning %2
A debug message noting that the resolver received a message and the
parsing of the body of the message failed due to some error (although
the parsing of the header succeeded). The message parameters give a
textual description of the problem and the RCODE returned.
% NORMQUERY processing normal query
The received query has passed all checks and is being processed by the resolver.
% RESOLVER_NEGATIVE_RETRIES negative number of retries (%1) specified in the configuration
An error message indicating that the resolver configuration has specified a
negative retry count. Only zero or positive values are valid.
% NOTIN non-IN class request received, returning REFUSED message
% RESOLVER_NON_IN_PACKET non-IN class request received, returning REFUSED message
A debug message, the resolver has received a DNS packet that was not IN class.
The resolver cannot handle such packets, so is returning a REFUSED response to
the sender.
% NOROOTADDR no root addresses available
A warning message during startup, indicates that no root addresses have been
set. This may be because the resolver will get them from a priming query.
% RESOLVER_NORMAL_QUERY processing normal query
The received query has passed all checks and is being processed by the resolver.
% RESOLVER_NOTIFY_RECEIVED NOTIFY arrived but server is not authoritative
The resolver received a NOTIFY message. As the server is not authoritative it
cannot process it, so it returns an error message to the sender with the RCODE
set to NOTAUTH.
% NOTONEQUES query contained %1 questions, exactly one question was expected
% RESOLVER_NOT_ONE_QUESTION query contained %1 questions, exactly one question was expected
A debug message, the resolver received a query that contained the number of
entires in the question section detailed in the message. This is a malformed
message, as a DNS query must contain only one question. The resolver will
return a message to the sender with the RCODE set to FORMERR.
% OPCODEUNS opcode %1 not supported by the resolver
A debug message, the resolver received a message with an unsupported opcode
(it can only process QUERY opcodes). It will return a message to the sender
with the RCODE set to NOTIMP.
% RESOLVER_NO_ROOT_ADDRESS no root addresses available
A warning message during startup, indicates that no root addresses have been
set. This may be because the resolver will get them from a priming query.
% PARSEERR error parsing received message: %1 - returning %2
% RESOLVER_PARSE_ERROR error parsing received message: %1 - returning %2
A debug message noting that the resolver received a message and the parsing
of the body of the message failed due to some non-protocol related reason
(although the parsing of the header succeeded). The message parameters give
a textual description of the problem and the RCODE returned.
% PRINTMSG print message command, arguments are: %1
% RESOLVER_PRINT_COMMAND print message command, arguments are: %1
This message is logged when a "print_message" command is received over the
command channel.
% PROTERR protocol error parsing received message: %1 - returning %2
% RESOLVER_PROTOCOL_ERROR protocol error parsing received message: %1 - returning %2
A debug message noting that the resolver received a message and the parsing
of the body of the message failed due to some protocol error (although the
parsing of the header succeeded). The message parameters give a textual
description of the problem and the RCODE returned.
% QUSETUP query setup
% RESOLVER_QUERY_SETUP query setup
A debug message noting that the resolver is creating a RecursiveQuery object.
% QUSHUT query shutdown
% RESOLVER_QUERY_SHUTDOWN query shutdown
A debug message noting that the resolver is destroying a RecursiveQuery object.
% QUTMOSMALL query timeout of %1 is too small
% RESOLVER_QUERY_TIME_SMALL query timeout of %1 is too small
An error indicating that the configuration value specified for the query
timeout is too small.
% RECURSIVE running in recursive mode
This is an informational message that appears at startup noting that the
resolver is running in recursive mode.
% RECVMSG resolver has received a DNS message
% RESOLVER_RECEIVED_MESSAGE resolver has received a DNS message
A debug message indicating that the resolver has received a message. Depending
on the debug settings, subsequent log output will indicate the nature of the
message.
% RETRYNEG negative number of retries (%1) specified in the configuration
An error message indicating that the resolver configuration has specified a
negative retry count. Only zero or positive values are valid.
% ROOTADDR setting root address %1(%2)
This message may appear multiple times during startup; it lists the root
addresses used by the resolver.
% RESOLVER_RECURSIVE running in recursive mode
This is an informational message that appears at startup noting that the
resolver is running in recursive mode.
% SERVICE service object created
% RESOLVER_SERVICE_CREATED service object created
A debug message, output when the main service object (which handles the
received queries) is created.
% SETPARAM query timeout: %1, client timeout: %2, lookup timeout: %3, retry count: %4
A debug message, lists the parameters associated with the message. These are:
% RESOLVER_SET_PARAMS query timeout: %1, client timeout: %2, lookup timeout: %3, retry count: %4
A debug message, lists the parameters being set for the resolver. These are:
query timeout: the timeout (in ms) used for queries originated by the resolver
to upstream servers. Client timeout: the interval to resolver a query by
a client: after this time, the resolver sends back a SERVFAIL to the client
......@@ -174,20 +170,29 @@ upstream nameservers. Even if none of these queries timeout, the total time
taken to perform all the queries may exceed the client timeout. When this
happens, a SERVFAIL is returned to the client, but the resolver continues
with the resolution process. Data received is added to the cache. However,
there comes a time - the lookup timeout - when even the resolve gives up.
there comes a time - the lookup timeout - when even the resolver gives up.
At this point it will wait for pending upstream queries to complete or
timeout and drop the query.
% SHUTDOWN resolver shutdown complete
% RESOLVER_SET_ROOT_ADDRESS setting root address %1(%2)
This message may appear multiple times during startup; it lists the root
addresses used by the resolver.
% RESOLVER_SHUTDOWN resolver shutdown complete
This information message is output when the resolver has shut down.
% STARTED resolver started
% RESOLVER_STARTED resolver started
This informational message is output by the resolver when all initialization
has been completed and it is entering its main loop.
% STARTING starting resolver with command line '%1'
% RESOLVER_STARTING starting resolver with command line '%1'
An informational message, this is output when the resolver starts up.
% UNEXRESP received unexpected response, ignoring
% RESOLVER_UNEXPECTED_RESPONSE received unexpected response, ignoring
A debug message noting that the server has received a response instead of a
query and is ignoring it.
% RESOLVER_UNSUPPORTED_OPCODE opcode %1 not supported by the resolver
A debug message, the resolver received a message with an unsupported opcode
(it can only process QUERY opcodes). It will return a message to the sender
with the RCODE set to NOTIMP.
......@@ -28,7 +28,7 @@ run_unittests_SOURCES += resolver_config_unittest.cc
run_unittests_SOURCES += response_scrubber_unittest.cc
run_unittests_SOURCES += run_unittests.cc
nodist_run_unittests_SOURCES = ../resolverdef.h ../resolverdef.cc
nodist_run_unittests_SOURCES = ../resolver_messages.h ../resolver_messages.cc
run_unittests_CPPFLAGS = $(AM_CPPFLAGS) $(GTEST_INCLUDES)
run_unittests_LDFLAGS = $(AM_LDFLAGS) $(GTEST_LDFLAGS)
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment