S.declare("recursing-answers","Number of recursive answers sent out");
S.declare("recursing-questions","Number of questions sent to recursor");
S.declare("corrupt-packets","Number of corrupt packets received");
-
+ S.declare("signatures", "Number of DNSSEC signatures made");
S.declare("tcp-queries","Number of TCP queries received");
S.declare("tcp-answers","Number of answers sent out over TCP");
#include "dns_random.hh"
#include "lock.hh"
#include "arguments.hh"
+#include "statbag.hh"
+extern StatBag S;
/* this is where the RRSIGs begin, keys are retrieved,
but the actual signing happens in fillOutRRSIG */
static signaturecache_t g_signatures;
static int g_cacheweekno;
+AtomicCounter* g_signatureCount;
+
uint64_t signatureCacheSize(const std::string& str)
{
ReadLock l(&g_signatures_lock);
void fillOutRRSIG(DNSSECPrivateKey& dpk, const std::string& signQName, RRSIGRecordContent& rrc, vector<shared_ptr<DNSRecordContent> >& toSign)
{
+ if(!g_signatureCount)
+ g_signatureCount = S.getPointer("signatures");
+
DNSKEYRecordContent drc = dpk.getDNSKEY();
const DNSCryptoKeyEngine* rc = dpk.getKey();
rrc.d_tag = drc.getTag();
}
rrc.d_signature = rc->sign(msg);
-
+ (*g_signatureCount)++;
if(doCache) {
/* we add some jitter here so not all your slaves start pruning their caches at the very same millisecond */
int weekno = (time(0) - dns_random(3600)) / (86400*7); // we just spent milliseconds doing a signature, microsecond more won't kill us