Browse Source

[1066] Logging about wildcards

Michal 'vorner' Vaner 13 years ago
parent
commit
b4ae924f50
2 changed files with 47 additions and 0 deletions
  1. 20 0
      src/lib/datasrc/database.cc
  2. 27 0
      src/lib/datasrc/datasrc_messages.mes

+ 20 - 0
src/lib/datasrc/database.cc

@@ -380,6 +380,9 @@ DatabaseClient::Finder::find(const isc::dns::Name& name,
             // But check if something lives below this
             // But check if something lives below this
             // domain and if so, pretend something is here as well.
             // domain and if so, pretend something is here as well.
             if (hasSubdomains(name.toText())) {
             if (hasSubdomains(name.toText())) {
+                LOG_DEBUG(logger, DBG_TRACE_DETAILED,
+                          DATASRC_DATABASE_FOUND_EMPTY_NONTERMINAL).
+                    arg(database_->getDBName()).arg(name);
                 records_found = true;
                 records_found = true;
             } else {
             } else {
                 // It's not empty non-terminal. So check for wildcards.
                 // It's not empty non-terminal. So check for wildcards.
@@ -407,6 +410,10 @@ DatabaseClient::Finder::find(const isc::dns::Name& name,
                             records_found = true;
                             records_found = true;
                             // We pretend to switch to non-glue_ok mode
                             // We pretend to switch to non-glue_ok mode
                             glue_ok = false;
                             glue_ok = false;
+                            LOG_DEBUG(logger, DBG_TRACE_DETAILED,
+                                      DATASRC_DATABASE_WILDCARD_CANCEL_NS).
+                                arg(database_->getDBName()).arg(wildcard).
+                                arg(first_ns->getName());
                         } else if (!hasSubdomains(name.split(i - 1).toText()))
                         } else if (!hasSubdomains(name.split(i - 1).toText()))
                         {
                         {
                             // Nothing we added as part of the * can exist
                             // Nothing we added as part of the * can exist
@@ -415,11 +422,24 @@ DatabaseClient::Finder::find(const isc::dns::Name& name,
                             // that case, we need to cancel the match.
                             // that case, we need to cancel the match.
                             records_found = true;
                             records_found = true;
                             result_rrset = found.second;
                             result_rrset = found.second;
+                            LOG_DEBUG(logger, DBG_TRACE_DETAILED,
+                                      DATASRC_DATABASE_WILDCARD).
+                                arg(database_->getDBName()).arg(wildcard).
+                                arg(name);
+                        } else {
+                            LOG_DEBUG(logger, DBG_TRACE_DETAILED,
+                                      DATASRC_DATABASE_WILDCARD_CANCEL_SUB).
+                                arg(database_->getDBName()).arg(wildcard).
+                                arg(name).arg(superdomain);
                         }
                         }
                         break;
                         break;
                     } else if (hasSubdomains(wildcard.toText())) {
                     } else if (hasSubdomains(wildcard.toText())) {
                         // Empty non-terminal asterisk
                         // Empty non-terminal asterisk
                         records_found = true;
                         records_found = true;
+                        LOG_DEBUG(logger, DBG_TRACE_DETAILED,
+                                  DATASRC_DATABASE_WILDCARD_EMPTY).
+                            arg(database_->getDBName()).arg(wildcard).
+                            arg(name);
                         break;
                         break;
                     }
                     }
                 }
                 }

+ 27 - 0
src/lib/datasrc/datasrc_messages.mes

@@ -104,6 +104,11 @@ When searching for a domain, the program met a DNAME redirection to a different
 place in the domain space at the given domain name. It will return that one
 place in the domain space at the given domain name. It will return that one
 instead.
 instead.
 
 
+% DATASRC_DATABASE_FOUND_EMPTY_NONTERMINAL empty non-terminal %2 in %1
+The domain name doesn't have any RRs, so it doesn't exist in the database.
+However, it has a subdomain, so it exists in the DNS address space. So we
+return NXRRSET instead of NXDOMAIN.
+
 % DATASRC_DATABASE_FOUND_NXDOMAIN search in datasource %1 resulted in NXDOMAIN for %2/%3/%4
 % DATASRC_DATABASE_FOUND_NXDOMAIN search in datasource %1 resulted in NXDOMAIN for %2/%3/%4
 The data returned by the database backend did not contain any data for the given
 The data returned by the database backend did not contain any data for the given
 domain name, class and type.
 domain name, class and type.
@@ -117,6 +122,28 @@ The data returned by the database backend contained data for the given domain
 name, and it either matches the type or has a relevant type. The RRset that is
 name, and it either matches the type or has a relevant type. The RRset that is
 returned is printed.
 returned is printed.
 
 
+% DATASRC_DATABASE_WILDCARD constructing RRset %3 from wildcard %2 in %1
+The database doesn't contain directly matching domain, but it does contain a
+wildcard one which is being used to synthesize the answer.
+
+% DATASRC_DATABASE_WILDCARD_CANCEL_NS canceled wildcard match on %2 because %3 contains NS in %1
+The database was queried to provide glue data and it didn't find direct match.
+It could create it from given wildcard, but matching wildcards is forbidden
+under a zone cut, which was found. Therefore the delegation will be returned
+instead.
+
+% DATASRC_DATABASE_WILDCARD_CANCEL_SUB wildcard %2 can't be used to construct %3 because %4 exists in %1
+The answer could be constructed using the wildcard, but the given subdomain
+exists, therefore this name is something like empty non-terminal (actually,
+from the protocol point of view, it is empty non-terminal, but the code
+discovers it differently).
+
+% DATASRC_DATABASE_WILDCARD_EMPTY implicit wildcard %2 used to construct %3 in %1
+The given wildcard exists implicitly in the domainspace, as empty nonterminal
+(eg. there's something like subdomain.*.example.org, so *.example.org exists
+implicitly, but is empty). This will produce NXRRSET, because the constructed
+domain is empty as well as the wildcard.
+
 % DATASRC_DO_QUERY handling query for '%1/%2'
 % DATASRC_DO_QUERY handling query for '%1/%2'
 A debug message indicating that a query for the given name and RR type is being
 A debug message indicating that a query for the given name and RR type is being
 processed.
 processed.