]> git.ipfire.org Git - thirdparty/unbound.git/commitdiff
- Print understandable debug log when unusable DS record is seen.
authorWouter Wijngaards <wouter@nlnetlabs.nl>
Fri, 19 Feb 2016 10:48:23 +0000 (10:48 +0000)
committerWouter Wijngaards <wouter@nlnetlabs.nl>
Fri, 19 Feb 2016 10:48:23 +0000 (10:48 +0000)
git-svn-id: file:///svn/unbound/trunk@3627 be551aaa-1e26-0410-a405-d3ace91eadb9

doc/Changelog
validator/val_utils.c

index eeca4ca1fe58c14f0806378df30e3a268d768db8..cf0e56b45837a9c78732d98f0178d7ef09b516f9 100644 (file)
@@ -1,3 +1,6 @@
+19 February 2016: Wouter
+       - Print understandable debug log when unusable DS record is seen.
+
 17 February 2016: Wouter
        - Fix that "make install" fails due to "text file busy" error.
 
index 475b0c9054e04fe0dc90fb8810693fde0dc58089..0315cade2be3cb969326f746464aef234caed01e 100644 (file)
@@ -54,6 +54,8 @@
 #include "util/net_help.h"
 #include "util/module.h"
 #include "util/regional.h"
+#include "sldns/wire2str.h"
+#include "sldns/parseutil.h"
 
 enum val_classification 
 val_classify_response(uint16_t query_flags, struct query_info* origqinf,
@@ -691,6 +693,31 @@ val_dsset_isusable(struct ub_packed_rrset_key* ds_rrset)
                        ds_key_algo_is_supported(ds_rrset, i))
                        return 1;
        }
+       if(verbose < VERB_ALGO)
+               return 0;
+       if(rrset_get_count(ds_rrset) == 0)
+               verbose(VERB_ALGO, "DS is not usable");
+       else {
+               /* report usability for the first DS RR */
+               sldns_lookup_table *lt;
+               char herr[64], aerr[64];
+               lt = sldns_lookup_by_id(sldns_hashes,
+                       (int)ds_get_digest_algo(ds_rrset, i));
+               if(lt) snprintf(herr, sizeof(herr), "%s", lt->name);
+               else snprintf(herr, sizeof(herr), "%d",
+                       (int)ds_get_digest_algo(ds_rrset, i));
+               lt = sldns_lookup_by_id(sldns_algorithms,
+                       (int)ds_get_key_algo(ds_rrset, i));
+               if(lt) snprintf(aerr, sizeof(aerr), "%s", lt->name);
+               else snprintf(aerr, sizeof(aerr), "%d",
+                       (int)ds_get_key_algo(ds_rrset, i));
+               verbose(VERB_ALGO, "DS unsupported, hash %s %s, "
+                       "key algorithm %s %s", herr,
+                       (ds_digest_algo_is_supported(ds_rrset, 0)?
+                       "(supported)":"(unsupported)"), aerr, 
+                       (ds_key_algo_is_supported(ds_rrset, 0)?
+                       "(supported)":"(unsupported)"));
+       }
        return 0;
 }