DNSSECOK=true;
g_stats.dnssecQueries++;
}
+ if (dc->d_mdp.d_header.cd) {
+ /* Per rfc6840 section 5.9, "When processing a request with
+ the Checking Disabled (CD) bit set, a resolver SHOULD attempt
+ to return all response data, even data that has failed DNSSEC
+ validation. */
+ ++g_stats.dnssecCheckDisabledQueries;
+ }
+ if (dc->d_mdp.d_header.ad) {
+ /* Per rfc6840 section 5.7, "the AD bit in a query as a signal
+ indicating that the requester understands and is interested in the
+ value of the AD bit in the response. This allows a requester to
+ indicate that it understands the AD bit without also requesting
+ DNSSEC data via the DO bit. */
+ ++g_stats.dnssecAuthenticDataQueries;
+ }
} else {
// Ignore the client-set CD flag
pw.getHeader()->cd=0;
static const oid queryPipeFullDropsOID[] = { RECURSOR_STATS_OID, 92 };
static const oid truncatedDropsOID[] = { RECURSOR_STATS_OID, 93 };
static const oid emptyQueriesOID[] = { RECURSOR_STATS_OID, 94 };
+static const oid dnssecAuthenticDataQueriesOID[] = { RECURSOR_STATS_OID, 95 };
+static const oid dnssecCheckDisabledQueriesOID[] = { RECURSOR_STATS_OID, 96 };
static std::unordered_map<oid, std::string> s_statsMap;
registerCounter64Stat("edns-ping-matches", ednsPingMatchesOID, OID_LENGTH(ednsPingMatchesOID));
registerCounter64Stat("edns-ping-mismatches", ednsPingMismatchesOID, OID_LENGTH(ednsPingMismatchesOID));
registerCounter64Stat("dnssec-queries", dnssecQueriesOID, OID_LENGTH(dnssecQueriesOID));
+ registerCounter64Stat("dnssec-authentic-data-queries", dnssecAuthenticDataQueriesOID, OID_LENGTH(dnssecAuthenticDataQueriesOID));
+ registerCounter64Stat("dnssec-check-disabled-queries", dnssecCheckDisabledQueriesOID, OID_LENGTH(dnssecCheckDisabledQueriesOID));
registerCounter64Stat("noping-outqueries", nopingOutqueriesOID, OID_LENGTH(nopingOutqueriesOID));
registerCounter64Stat("noedns-outqueries", noednsOutqueriesOID, OID_LENGTH(noednsOutqueriesOID));
registerCounter64Stat("uptime", uptimeOID, OID_LENGTH(uptimeOID));
addGetStat("edns-ping-matches", &g_stats.ednsPingMatches);
addGetStat("edns-ping-mismatches", &g_stats.ednsPingMismatches);
addGetStat("dnssec-queries", &g_stats.dnssecQueries);
+ addGetStat("dnssec-authentic-data-queries", &g_stats.dnssecAuthenticDataQueries);
+ addGetStat("dnssec-check-disabled-queries", &g_stats.dnssecCheckDisabledQueries);
addGetStat("noping-outqueries", &g_stats.noPingOutQueries);
addGetStat("noedns-outqueries", &g_stats.noEdnsOutQueries);
FROM SNMPv2-CONF;
rec MODULE-IDENTITY
- LAST-UPDATED "201611290000Z"
+ LAST-UPDATED "201812240000Z"
ORGANIZATION "PowerDNS BV"
CONTACT-INFO "support@powerdns.com"
DESCRIPTION
REVISION "201611290000Z"
DESCRIPTION "Initial revision."
+ REVISION "201812240000Z"
+ DESCRIPTION "Added the dnssecAuthenticDataQueries and dnssecCheckDisabledQueries stats."
+
::= { powerdns 2 }
powerdns OBJECT IDENTIFIER ::= { enterprises 43315 }
"Number of queries dropped because they had a QD count of 0"
::= { stats 94 }
+dnssecAuthenticDataQueries OBJECT-TYPE
+ SYNTAX Counter64
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "Number of queries received with the AD bit set"
+ ::= { stats 95 }
+
+dnssecCheckDisabledQueries OBJECT-TYPE
+ SYNTAX Counter64
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "Number of queries received with the CD bit set"
+ ::= { stats 96 }
+
---
--- Traps / Notifications
---
policyResultCustom,
queryPipeFullDrops,
truncatedDrops,
+ emptyQueries,
+ dnssecAuthenticDataQueries,
+ dnssecCheckDisabledQueries
trapReason
}
STATUS current
^^^^^^^^^^^^^^
number of records dropped because of :ref:`setting-delegation-only` setting
+dnssec-authentic-data-queries
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+.. versionadded:: 4.2
+
+number of queries received with the AD bit set
+
+dnssec-check-disabled-queries
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+.. versionadded:: 4.2
+
+number of queries received with the CD bit set
+
dnssec-queries
^^^^^^^^^^^^^^
number of queries received with the DO bit set
std::atomic<uint64_t> emptyQueriesCount;
time_t startupTime;
std::atomic<uint64_t> dnssecQueries;
+ std::atomic<uint64_t> dnssecAuthenticDataQueries;
+ std::atomic<uint64_t> dnssecCheckDisabledQueries;
unsigned int maxMThreadStackUsage;
std::atomic<uint64_t> dnssecValidations; // should be the sum of all dnssecResult* stats
std::map<vState, std::atomic<uint64_t> > dnssecResults;