]> git.ipfire.org Git - thirdparty/unbound.git/commitdiff
print validator classification type.
authorWouter Wijngaards <wouter@nlnetlabs.nl>
Tue, 18 Sep 2007 12:33:51 +0000 (12:33 +0000)
committerWouter Wijngaards <wouter@nlnetlabs.nl>
Tue, 18 Sep 2007 12:33:51 +0000 (12:33 +0000)
update plan items.

git-svn-id: file:///svn/unbound/trunk@619 be551aaa-1e26-0410-a405-d3ace91eadb9

doc/Changelog
doc/plan
validator/val_utils.c
validator/val_utils.h
validator/validator.c

index 72313047c73a469ed9717bc8b5fa3615f7a27245..9745ad62237cb8350d28f64490920e894781cd19 100644 (file)
@@ -1,5 +1,6 @@
 18 September 2007: Wouter
        - wildcard nsec3 testcases, and fixup to get correct wildcard name.
+       - validator prints subtype classification for debug.
 
 17 September 2007: Wouter
        - NSEC3 hash cache unit test.
index 96ba41c2d8cdb197a79d5a2712b6f795be0bcc49..00b8bf5cb8321209375b7198707a4c8b308f89a9 100644 (file)
--- a/doc/plan
+++ b/doc/plan
@@ -153,9 +153,22 @@ Styleguide:
 *** Bigger and Better
 * Config file syntax checker program. Tests on checker.
 * Logging first class feature with config options.
+       * with logfile turnover to avoid Gbs of logs.
 * donotqueryaddresses with trie for blocking entire netblocks.
 * Memory overhaul, special allocators for hashtable caches, and mesh qstates.
+       * keep a preallocated list of region-chunks per worker thread.
+       * allocate region struct and cleanup list in region itself; use
+         linked list cleanup list. unit test on this. do not call region
+         to avoid name-collision with nsd regions, 'regional'.
 * read root hints from file.
+* failure to return answer, w. reason (donotq, noanswer servers, cannot
+  find servers, validationfail w.classification, error), 
+  with threadno, starttime and endtime and qname/type/class, prime/qflags, 
+  from-clients, from-internal, has-subrequests, a nice error report,
+  so that an excerpt from those times can be made from the logs.
+  logfileparsing tool that makes these excerpts and emails them.
+* ANS failure workaround (nxdomain for ENT; check if nxdomain is ENTnodata).
+* clear cache as a callback from the new-rrset-id routine.
 
 *** Local zones feature.
 * Build in local zone features. First the total stop for1912.
@@ -205,7 +218,9 @@ Styleguide:
 * Be able to prime roots using several queries (like, get only NS first).
 * Nicer statistics
 * private TTL, dTLS features.
-
+* retry-mode, where a bogus result triggers a retry-mode query, where a list
+  of responses over a time interval is collected, and each is validated.
+* draft-timers, DLV features.
 
 treeshrew/
        validator/ *.c *.h
index f1e5dd1157946376918e4ac4229a9bab9ed8d6e5..975ea9c8a570ca640071fdd6370d5068b494b3ac 100644 (file)
@@ -698,3 +698,21 @@ val_next_unchecked(struct reply_info* rep, size_t skip)
        }
        return rep->rrset_count;
 }
+
+const char*
+val_classification_to_string(enum val_classification subtype)
+{
+       switch(subtype) {
+               case VAL_CLASS_UNTYPED:         return "untyped";
+               case VAL_CLASS_UNKNOWN:         return "unknown";
+               case VAL_CLASS_POSITIVE:        return "positive";
+               case VAL_CLASS_CNAME:           return "cname";
+               case VAL_CLASS_NODATA:          return "nodata";
+               case VAL_CLASS_NAMEERROR:       return "nameerror";
+               case VAL_CLASS_CNAMENOANSWER:   return "cnamenoanswer";
+               case VAL_CLASS_REFERRAL:        return "referral";
+               case VAL_CLASS_ANY:             return "qtype_any";
+               default:
+                       return "bad_val_classification";
+       }
+}
index d19bf5f19a1f7d8aca9d745284b6baac329fde35..c6fe5f7488898029ed58f34a9c766535a53983f3 100644 (file)
@@ -250,4 +250,11 @@ void val_mark_insecure(struct reply_info* rep, struct key_entry_key* kkey,
  */
 size_t val_next_unchecked(struct reply_info* rep, size_t skip);
 
+/**
+ * Get string to denote the classification result.
+ * @param subtype: from classification function.
+ * @return static string to describe the classification.
+ */
+const char* val_classification_to_string(enum val_classification subtype);
+
 #endif /* VALIDATOR_VAL_UTILS_H */
index f1cf63a8312eaa8743124bcdbf0d0bf32a66f81e..398c82b921f4a35da81efe4c45a7dfb2cf0cda62 100644 (file)
@@ -1019,6 +1019,8 @@ processInit(struct module_qstate* qstate, struct val_qstate* vq,
        enum val_classification subtype = val_classify_response(
                qstate->query_flags, &vq->qchase, vq->orig_msg->rep, 
                vq->rrset_skip);
+       verbose(VERB_ALGO, "validator classification %s", 
+               val_classification_to_string(subtype));
        if(subtype == VAL_CLASS_REFERRAL && 
                vq->rrset_skip < vq->orig_msg->rep->rrset_count) {
                /* referral uses the rrset name as qchase, to find keys for