mirror of
https://gitlab.isc.org/isc-projects/bind9
synced 2025-08-24 19:18:50 +00:00
Add DNSSEC sign operations statistics channel
Add a new statistics structure to record how many sign operations a key has made within a zone.
This commit is contained in:
parent
e317a675a1
commit
d8cf7aedfa
@ -1444,6 +1444,60 @@ rcodestat_dump(dns_rcode_t code, uint64_t val, void *arg) {
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
dnssecsignstat_dump(dns_keytag_t tag, uint64_t val, void *arg) {
|
||||||
|
FILE *fp;
|
||||||
|
char tagbuf[64];
|
||||||
|
stats_dumparg_t *dumparg = arg;
|
||||||
|
#ifdef HAVE_LIBXML2
|
||||||
|
xmlTextWriterPtr writer;
|
||||||
|
int xmlrc;
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_JSON
|
||||||
|
json_object *zoneobj, *obj;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
snprintf(tagbuf, sizeof(tagbuf), "%u", tag);
|
||||||
|
|
||||||
|
switch (dumparg->type) {
|
||||||
|
case isc_statsformat_file:
|
||||||
|
fp = dumparg->arg;
|
||||||
|
fprintf(fp, "%20" PRIu64 " %s\n", val, tagbuf);
|
||||||
|
break;
|
||||||
|
case isc_statsformat_xml:
|
||||||
|
#ifdef HAVE_LIBXML2
|
||||||
|
writer = dumparg->arg;
|
||||||
|
TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "counter"));
|
||||||
|
TRY0(xmlTextWriterWriteAttribute(writer, ISC_XMLCHAR "name",
|
||||||
|
ISC_XMLCHAR tagbuf ));
|
||||||
|
TRY0(xmlTextWriterWriteFormatString(writer,
|
||||||
|
"%" PRIu64,
|
||||||
|
val));
|
||||||
|
TRY0(xmlTextWriterEndElement(writer)); /* counter */
|
||||||
|
#endif
|
||||||
|
break;
|
||||||
|
case isc_statsformat_json:
|
||||||
|
#ifdef HAVE_JSON
|
||||||
|
zoneobj = (json_object *) dumparg->arg;
|
||||||
|
obj = json_object_new_int64(val);
|
||||||
|
if (obj == NULL) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
json_object_object_add(zoneobj, tagbuf, obj);
|
||||||
|
#endif
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
#ifdef HAVE_LIBXML2
|
||||||
|
error:
|
||||||
|
isc_log_write(named_g_lctx, NAMED_LOGCATEGORY_GENERAL,
|
||||||
|
NAMED_LOGMODULE_SERVER, ISC_LOG_ERROR,
|
||||||
|
"failed at dnssecsignstat_dump()");
|
||||||
|
dumparg->result = ISC_R_FAILURE;
|
||||||
|
return;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef HAVE_LIBXML2
|
#ifdef HAVE_LIBXML2
|
||||||
/*
|
/*
|
||||||
* Which statistics to include when rendering to XML
|
* Which statistics to include when rendering to XML
|
||||||
@ -1506,6 +1560,7 @@ zone_xmlrender(dns_zone_t *zone, void *arg) {
|
|||||||
isc_stats_t *zonestats;
|
isc_stats_t *zonestats;
|
||||||
isc_stats_t *gluecachestats;
|
isc_stats_t *gluecachestats;
|
||||||
dns_stats_t *rcvquerystats;
|
dns_stats_t *rcvquerystats;
|
||||||
|
dns_stats_t *dnssecsignstats;
|
||||||
uint64_t nsstat_values[ns_statscounter_max];
|
uint64_t nsstat_values[ns_statscounter_max];
|
||||||
uint64_t gluecachestats_values[dns_gluecachestatscounter_max];
|
uint64_t gluecachestats_values[dns_gluecachestatscounter_max];
|
||||||
|
|
||||||
@ -1567,6 +1622,26 @@ zone_xmlrender(dns_zone_t *zone, void *arg) {
|
|||||||
/* counters type="qtype"*/
|
/* counters type="qtype"*/
|
||||||
TRY0(xmlTextWriterEndElement(writer));
|
TRY0(xmlTextWriterEndElement(writer));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
dnssecsignstats = dns_zone_getdnssecsignstats(zone);
|
||||||
|
if (dnssecsignstats != NULL) {
|
||||||
|
TRY0(xmlTextWriterStartElement(writer,
|
||||||
|
ISC_XMLCHAR "counters"));
|
||||||
|
TRY0(xmlTextWriterWriteAttribute(writer,
|
||||||
|
ISC_XMLCHAR "type",
|
||||||
|
ISC_XMLCHAR "dnssec"));
|
||||||
|
|
||||||
|
dumparg.result = ISC_R_SUCCESS;
|
||||||
|
dns_dnssecsignstats_dump(dnssecsignstats,
|
||||||
|
dnssecsignstat_dump,
|
||||||
|
&dumparg, 0);
|
||||||
|
if(dumparg.result != ISC_R_SUCCESS) {
|
||||||
|
goto error;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* counters type="dnssec"*/
|
||||||
|
TRY0(xmlTextWriterEndElement(writer));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
TRY0(xmlTextWriterEndElement(writer)); /* zone */
|
TRY0(xmlTextWriterEndElement(writer)); /* zone */
|
||||||
@ -2287,6 +2362,7 @@ zone_jsonrender(dns_zone_t *zone, void *arg) {
|
|||||||
isc_stats_t *zonestats;
|
isc_stats_t *zonestats;
|
||||||
isc_stats_t *gluecachestats;
|
isc_stats_t *gluecachestats;
|
||||||
dns_stats_t *rcvquerystats;
|
dns_stats_t *rcvquerystats;
|
||||||
|
dns_stats_t *dnssecsignstats;
|
||||||
uint64_t nsstat_values[ns_statscounter_max];
|
uint64_t nsstat_values[ns_statscounter_max];
|
||||||
uint64_t gluecachestats_values[dns_gluecachestatscounter_max];
|
uint64_t gluecachestats_values[dns_gluecachestatscounter_max];
|
||||||
|
|
||||||
@ -2364,6 +2440,30 @@ zone_jsonrender(dns_zone_t *zone, void *arg) {
|
|||||||
else
|
else
|
||||||
json_object_put(counters);
|
json_object_put(counters);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
dnssecsignstats = dns_zone_getdnssecsignstats(zone);
|
||||||
|
if (dnssecsignstats != NULL) {
|
||||||
|
stats_dumparg_t dumparg;
|
||||||
|
json_object *counters = json_object_new_object();
|
||||||
|
CHECKMEM(counters);
|
||||||
|
|
||||||
|
dumparg.type = isc_statsformat_json;
|
||||||
|
dumparg.arg = counters;
|
||||||
|
dumparg.result = ISC_R_SUCCESS;
|
||||||
|
dns_dnssecsignstats_dump(dnssecsignstats,
|
||||||
|
dnssecsignstat_dump,
|
||||||
|
&dumparg, 0);
|
||||||
|
if (dumparg.result != ISC_R_SUCCESS) {
|
||||||
|
json_object_put(counters);
|
||||||
|
goto error;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (json_object_get_object(counters)->count != 0)
|
||||||
|
json_object_object_add(zoneobj,
|
||||||
|
"dnssec", counters);
|
||||||
|
else
|
||||||
|
json_object_put(counters);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
json_object_array_add(zonearray, zoneobj);
|
json_object_array_add(zonearray, zoneobj);
|
||||||
|
@ -904,6 +904,7 @@ named_zone_configure(const cfg_obj_t *config, const cfg_obj_t *vconfig,
|
|||||||
const dns_master_style_t *masterstyle = &dns_master_style_default;
|
const dns_master_style_t *masterstyle = &dns_master_style_default;
|
||||||
isc_stats_t *zoneqrystats;
|
isc_stats_t *zoneqrystats;
|
||||||
dns_stats_t *rcvquerystats;
|
dns_stats_t *rcvquerystats;
|
||||||
|
dns_stats_t *dnssecsignstats;
|
||||||
dns_zonestat_level_t statlevel = dns_zonestat_none;
|
dns_zonestat_level_t statlevel = dns_zonestat_none;
|
||||||
int seconds;
|
int seconds;
|
||||||
dns_zone_t *mayberaw = (raw != NULL) ? raw : zone;
|
dns_zone_t *mayberaw = (raw != NULL) ? raw : zone;
|
||||||
@ -1188,14 +1189,16 @@ named_zone_configure(const cfg_obj_t *config, const cfg_obj_t *vconfig,
|
|||||||
|
|
||||||
zoneqrystats = NULL;
|
zoneqrystats = NULL;
|
||||||
rcvquerystats = NULL;
|
rcvquerystats = NULL;
|
||||||
|
dnssecsignstats = NULL;
|
||||||
if (statlevel == dns_zonestat_full) {
|
if (statlevel == dns_zonestat_full) {
|
||||||
RETERR(isc_stats_create(mctx, &zoneqrystats,
|
RETERR(isc_stats_create(mctx, &zoneqrystats,
|
||||||
ns_statscounter_max));
|
ns_statscounter_max));
|
||||||
RETERR(dns_rdatatypestats_create(mctx,
|
RETERR(dns_rdatatypestats_create(mctx, &rcvquerystats));
|
||||||
&rcvquerystats));
|
RETERR(dns_dnssecsignstats_create(mctx, &dnssecsignstats));
|
||||||
}
|
}
|
||||||
dns_zone_setrequeststats(zone, zoneqrystats);
|
dns_zone_setrequeststats(zone, zoneqrystats);
|
||||||
dns_zone_setrcvquerystats(zone, rcvquerystats);
|
dns_zone_setrcvquerystats(zone, rcvquerystats);
|
||||||
|
dns_zone_setdnssecsignstats(zone, dnssecsignstats);
|
||||||
|
|
||||||
if (zoneqrystats != NULL)
|
if (zoneqrystats != NULL)
|
||||||
isc_stats_detach(&zoneqrystats);
|
isc_stats_detach(&zoneqrystats);
|
||||||
@ -1203,6 +1206,10 @@ named_zone_configure(const cfg_obj_t *config, const cfg_obj_t *vconfig,
|
|||||||
if(rcvquerystats != NULL)
|
if(rcvquerystats != NULL)
|
||||||
dns_stats_detach(&rcvquerystats);
|
dns_stats_detach(&rcvquerystats);
|
||||||
|
|
||||||
|
if(dnssecsignstats != NULL) {
|
||||||
|
dns_stats_detach(&dnssecsignstats);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Configure master functionality. This applies
|
* Configure master functionality. This applies
|
||||||
* to primary masters (type "master") and slaves
|
* to primary masters (type "master") and slaves
|
||||||
|
@ -499,8 +499,8 @@ typedef void (*dns_generalstats_dumper_t)(isc_statscounter_t, uint64_t,
|
|||||||
void *);
|
void *);
|
||||||
typedef void (*dns_rdatatypestats_dumper_t)(dns_rdatastatstype_t, uint64_t,
|
typedef void (*dns_rdatatypestats_dumper_t)(dns_rdatastatstype_t, uint64_t,
|
||||||
void *);
|
void *);
|
||||||
|
typedef void (*dns_dnssecsignstats_dumper_t)(dns_keytag_t, uint64_t, void *);
|
||||||
typedef void (*dns_opcodestats_dumper_t)(dns_opcode_t, uint64_t, void *);
|
typedef void (*dns_opcodestats_dumper_t)(dns_opcode_t, uint64_t, void *);
|
||||||
|
|
||||||
typedef void (*dns_rcodestats_dumper_t)(dns_rcode_t, uint64_t, void *);
|
typedef void (*dns_rcodestats_dumper_t)(dns_rcode_t, uint64_t, void *);
|
||||||
|
|
||||||
ISC_LANG_BEGINDECLS
|
ISC_LANG_BEGINDECLS
|
||||||
@ -588,6 +588,22 @@ dns_rcodestats_create(isc_mem_t *mctx, dns_stats_t **statsp);
|
|||||||
*\li anything else -- failure
|
*\li anything else -- failure
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
isc_result_t
|
||||||
|
dns_dnssecsignstats_create(isc_mem_t *mctx, dns_stats_t **statsp);
|
||||||
|
/*%<
|
||||||
|
* Create a statistics counter structure per assigned DNSKEY id.
|
||||||
|
*
|
||||||
|
* Requires:
|
||||||
|
*\li 'mctx' must be a valid memory context.
|
||||||
|
*
|
||||||
|
*\li 'statsp' != NULL && '*statsp' == NULL.
|
||||||
|
*
|
||||||
|
* Returns:
|
||||||
|
*\li ISC_R_SUCCESS -- all ok
|
||||||
|
*
|
||||||
|
*\li anything else -- failure
|
||||||
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
dns_stats_attach(dns_stats_t *stats, dns_stats_t **statsp);
|
dns_stats_attach(dns_stats_t *stats, dns_stats_t **statsp);
|
||||||
/*%<
|
/*%<
|
||||||
@ -669,6 +685,15 @@ dns_rcodestats_increment(dns_stats_t *stats, dns_opcode_t code);
|
|||||||
*\li 'stats' is a valid dns_stats_t created by dns_rcodestats_create().
|
*\li 'stats' is a valid dns_stats_t created by dns_rcodestats_create().
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
void
|
||||||
|
dns_dnssecsignstats_increment(dns_stats_t *stats, dns_keytag_t id);
|
||||||
|
/*%<
|
||||||
|
* Increment the statistics counter for the DNSKEY 'id'.
|
||||||
|
*
|
||||||
|
* Requires:
|
||||||
|
*\li 'stats' is a valid dns_stats_t created by dns_dnssecsignstats_create().
|
||||||
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
dns_generalstats_dump(dns_stats_t *stats, dns_generalstats_dumper_t dump_fn,
|
dns_generalstats_dump(dns_stats_t *stats, dns_generalstats_dumper_t dump_fn,
|
||||||
void *arg, unsigned int options);
|
void *arg, unsigned int options);
|
||||||
@ -713,6 +738,21 @@ dns_rdatasetstats_dump(dns_stats_t *stats, dns_rdatatypestats_dumper_t dump_fn,
|
|||||||
*\li 'stats' is a valid dns_stats_t created by dns_generalstats_create().
|
*\li 'stats' is a valid dns_stats_t created by dns_generalstats_create().
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
void
|
||||||
|
dns_dnssecsignstats_dump(dns_stats_t *stats,
|
||||||
|
dns_dnssecsignstats_dumper_t dump_fn,
|
||||||
|
void *arg, unsigned int options);
|
||||||
|
/*%<
|
||||||
|
* Dump the current statistics counters in a specified way. For each counter
|
||||||
|
* in stats, dump_fn is called with the corresponding type in the form of
|
||||||
|
* dns_rdatastatstype_t, the current counter value and the given argument
|
||||||
|
* arg. By default counters that have a value of 0 is skipped; if options has
|
||||||
|
* the ISC_STATSDUMP_VERBOSE flag, even such counters are dumped.
|
||||||
|
*
|
||||||
|
* Requires:
|
||||||
|
*\li 'stats' is a valid dns_stats_t created by dns_generalstats_create().
|
||||||
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
dns_opcodestats_dump(dns_stats_t *stats, dns_opcodestats_dumper_t dump_fn,
|
dns_opcodestats_dump(dns_stats_t *stats, dns_opcodestats_dumper_t dump_fn,
|
||||||
void *arg, unsigned int options);
|
void *arg, unsigned int options);
|
||||||
|
@ -1925,6 +1925,9 @@ dns_zone_setrequeststats(dns_zone_t *zone, isc_stats_t *stats);
|
|||||||
|
|
||||||
void
|
void
|
||||||
dns_zone_setrcvquerystats(dns_zone_t *zone, dns_stats_t *stats);
|
dns_zone_setrcvquerystats(dns_zone_t *zone, dns_stats_t *stats);
|
||||||
|
|
||||||
|
void
|
||||||
|
dns_zone_setdnssecsignstats(dns_zone_t *zone, dns_stats_t *stats);
|
||||||
/*%<
|
/*%<
|
||||||
* Set additional statistics sets to zone. These are attached to the zone
|
* Set additional statistics sets to zone. These are attached to the zone
|
||||||
* but are not counted in the zone module; only the caller updates the
|
* but are not counted in the zone module; only the caller updates the
|
||||||
@ -1941,6 +1944,9 @@ dns_zone_getrequeststats(dns_zone_t *zone);
|
|||||||
|
|
||||||
dns_stats_t *
|
dns_stats_t *
|
||||||
dns_zone_getrcvquerystats(dns_zone_t *zone);
|
dns_zone_getrcvquerystats(dns_zone_t *zone);
|
||||||
|
|
||||||
|
dns_stats_t *
|
||||||
|
dns_zone_getdnssecsignstats(dns_zone_t *zone);
|
||||||
/*%<
|
/*%<
|
||||||
* Get the additional statistics for zone, if one is installed.
|
* Get the additional statistics for zone, if one is installed.
|
||||||
*
|
*
|
||||||
@ -1952,6 +1958,17 @@ dns_zone_getrcvquerystats(dns_zone_t *zone);
|
|||||||
* otherwise NULL.
|
* otherwise NULL.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/*%<
|
||||||
|
* Set additional statistics sets to zone. These are attached to the zone
|
||||||
|
* but are not counted in the zone module; only the caller updates the
|
||||||
|
* counters.
|
||||||
|
*
|
||||||
|
* Requires:
|
||||||
|
* \li 'zone' to be a valid zone.
|
||||||
|
*
|
||||||
|
*\li stats is a valid statistics.
|
||||||
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
dns_zone_dialup(dns_zone_t *zone);
|
dns_zone_dialup(dns_zone_t *zone);
|
||||||
/*%<
|
/*%<
|
||||||
|
@ -35,7 +35,8 @@ typedef enum {
|
|||||||
dns_statstype_rdtype = 1,
|
dns_statstype_rdtype = 1,
|
||||||
dns_statstype_rdataset = 2,
|
dns_statstype_rdataset = 2,
|
||||||
dns_statstype_opcode = 3,
|
dns_statstype_opcode = 3,
|
||||||
dns_statstype_rcode = 4
|
dns_statstype_rcode = 4,
|
||||||
|
dns_statstype_dnssec = 5
|
||||||
} dns_statstype_t;
|
} dns_statstype_t;
|
||||||
|
|
||||||
/*%
|
/*%
|
||||||
@ -58,7 +59,8 @@ enum {
|
|||||||
rdtypecounter_nxdomain = rdtypenxcounter_max,
|
rdtypecounter_nxdomain = rdtypenxcounter_max,
|
||||||
/* stale counters offset */
|
/* stale counters offset */
|
||||||
rdtypecounter_stale = rdtypecounter_nxdomain + 1,
|
rdtypecounter_stale = rdtypecounter_nxdomain + 1,
|
||||||
rdatasettypecounter_max = rdtypecounter_stale * 2
|
rdatasettypecounter_max = rdtypecounter_stale * 2,
|
||||||
|
dnssec_keyid_max = 65535
|
||||||
};
|
};
|
||||||
|
|
||||||
struct dns_stats {
|
struct dns_stats {
|
||||||
@ -84,9 +86,13 @@ typedef struct opcodedumparg {
|
|||||||
} opcodedumparg_t;
|
} opcodedumparg_t;
|
||||||
|
|
||||||
typedef struct rcodedumparg {
|
typedef struct rcodedumparg {
|
||||||
dns_rcodestats_dumper_t fn;
|
dns_rcodestats_dumper_t fn;
|
||||||
void *arg;
|
void *arg;
|
||||||
} rcodedumparg_t;
|
} rcodedumparg_t;
|
||||||
|
typedef struct dnssecsigndumparg {
|
||||||
|
dns_dnssecsignstats_dumper_t fn;
|
||||||
|
void *arg;
|
||||||
|
} dnssecsigndumparg_t;
|
||||||
|
|
||||||
void
|
void
|
||||||
dns_stats_attach(dns_stats_t *stats, dns_stats_t **statsp) {
|
dns_stats_attach(dns_stats_t *stats, dns_stats_t **statsp) {
|
||||||
@ -196,6 +202,14 @@ dns_rcodestats_create(isc_mem_t *mctx, dns_stats_t **statsp) {
|
|||||||
dns_rcode_badcookie + 1, statsp));
|
dns_rcode_badcookie + 1, statsp));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
isc_result_t
|
||||||
|
dns_dnssecsignstats_create(isc_mem_t *mctx, dns_stats_t **statsp) {
|
||||||
|
REQUIRE(statsp != NULL && *statsp == NULL);
|
||||||
|
|
||||||
|
return (create_stats(mctx, dns_statstype_dnssec,
|
||||||
|
dnssec_keyid_max, statsp));
|
||||||
|
}
|
||||||
|
|
||||||
/*%
|
/*%
|
||||||
* Increment/Decrement methods
|
* Increment/Decrement methods
|
||||||
*/
|
*/
|
||||||
@ -294,6 +308,13 @@ dns_rcodestats_increment(dns_stats_t *stats, dns_rcode_t code) {
|
|||||||
isc_stats_increment(stats->counters, (isc_statscounter_t)code);
|
isc_stats_increment(stats->counters, (isc_statscounter_t)code);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
dns_dnssecsignstats_increment(dns_stats_t *stats, dns_keytag_t id) {
|
||||||
|
REQUIRE(DNS_STATS_VALID(stats) && stats->type == dns_statstype_dnssec);
|
||||||
|
|
||||||
|
isc_stats_increment(stats->counters, (isc_statscounter_t)id);
|
||||||
|
}
|
||||||
|
|
||||||
/*%
|
/*%
|
||||||
* Dump methods
|
* Dump methods
|
||||||
*/
|
*/
|
||||||
@ -395,6 +416,28 @@ dns_rdatasetstats_dump(dns_stats_t *stats, dns_rdatatypestats_dumper_t dump_fn,
|
|||||||
isc_stats_dump(stats->counters, rdataset_dumpcb, &arg, options);
|
isc_stats_dump(stats->counters, rdataset_dumpcb, &arg, options);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
dnssec_dumpcb(isc_statscounter_t counter, uint64_t value, void *arg) {
|
||||||
|
dnssecsigndumparg_t *dnssecarg = arg;
|
||||||
|
|
||||||
|
dnssecarg->fn((dns_keytag_t)counter, value, dnssecarg->arg);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
dns_dnssecsignstats_dump(dns_stats_t *stats,
|
||||||
|
dns_dnssecsignstats_dumper_t dump_fn,
|
||||||
|
void *arg0, unsigned int options)
|
||||||
|
{
|
||||||
|
dnssecsigndumparg_t arg;
|
||||||
|
|
||||||
|
REQUIRE(DNS_STATS_VALID(stats) &&
|
||||||
|
stats->type == dns_statstype_dnssec);
|
||||||
|
|
||||||
|
arg.fn = dump_fn;
|
||||||
|
arg.arg = arg0;
|
||||||
|
isc_stats_dump(stats->counters, dnssec_dumpcb, &arg, options);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
opcode_dumpcb(isc_statscounter_t counter, uint64_t value, void *arg) {
|
opcode_dumpcb(isc_statscounter_t counter, uint64_t value, void *arg) {
|
||||||
opcodedumparg_t *opcodearg = arg;
|
opcodedumparg_t *opcodearg = arg;
|
||||||
|
@ -331,6 +331,10 @@ dns_dnssec_verify
|
|||||||
dns_dnssec_verifymessage
|
dns_dnssec_verifymessage
|
||||||
dns_dnsseckey_create
|
dns_dnsseckey_create
|
||||||
dns_dnsseckey_destroy
|
dns_dnsseckey_destroy
|
||||||
|
dns_dnssecsignstats_create
|
||||||
|
dns_dnssecsignstats_decrement
|
||||||
|
dns_dnssecsignstats_dump
|
||||||
|
dns_dnssecsignstats_increment
|
||||||
dns_ds_buildrdata
|
dns_ds_buildrdata
|
||||||
dns_dsdigest_format
|
dns_dsdigest_format
|
||||||
dns_dsdigest_fromtext
|
dns_dsdigest_fromtext
|
||||||
@ -1137,6 +1141,7 @@ dns_zone_getchecknames
|
|||||||
dns_zone_getclass
|
dns_zone_getclass
|
||||||
dns_zone_getdb
|
dns_zone_getdb
|
||||||
dns_zone_getdbtype
|
dns_zone_getdbtype
|
||||||
|
dns_zone_getdnssecsignstats
|
||||||
dns_zone_getexpiretime
|
dns_zone_getexpiretime
|
||||||
dns_zone_getfile
|
dns_zone_getfile
|
||||||
dns_zone_getforwardacl
|
dns_zone_getforwardacl
|
||||||
@ -1237,6 +1242,7 @@ dns_zone_setclass
|
|||||||
dns_zone_setdb
|
dns_zone_setdb
|
||||||
dns_zone_setdbtype
|
dns_zone_setdbtype
|
||||||
dns_zone_setdialup
|
dns_zone_setdialup
|
||||||
|
dns_zone_setdnssecsignstats
|
||||||
dns_zone_setfile
|
dns_zone_setfile
|
||||||
dns_zone_setflag
|
dns_zone_setflag
|
||||||
dns_zone_setforwardacl
|
dns_zone_setforwardacl
|
||||||
|
@ -323,9 +323,10 @@ struct dns_zone {
|
|||||||
* module.
|
* module.
|
||||||
*/
|
*/
|
||||||
dns_zonestat_level_t statlevel;
|
dns_zonestat_level_t statlevel;
|
||||||
bool requeststats_on;
|
bool requeststats_on;
|
||||||
isc_stats_t *requeststats;
|
isc_stats_t *requeststats;
|
||||||
dns_stats_t *rcvquerystats;
|
dns_stats_t *rcvquerystats;
|
||||||
|
dns_stats_t *dnssecsignstats;
|
||||||
uint32_t notifydelay;
|
uint32_t notifydelay;
|
||||||
dns_isselffunc_t isself;
|
dns_isselffunc_t isself;
|
||||||
void *isselfarg;
|
void *isselfarg;
|
||||||
@ -1022,6 +1023,7 @@ dns_zone_create(dns_zone_t **zonep, isc_mem_t *mctx) {
|
|||||||
zone->statlevel = dns_zonestat_none;
|
zone->statlevel = dns_zonestat_none;
|
||||||
zone->requeststats = NULL;
|
zone->requeststats = NULL;
|
||||||
zone->rcvquerystats = NULL;
|
zone->rcvquerystats = NULL;
|
||||||
|
zone->dnssecsignstats = NULL;
|
||||||
zone->notifydelay = 5;
|
zone->notifydelay = 5;
|
||||||
zone->isself = NULL;
|
zone->isself = NULL;
|
||||||
zone->isselfarg = NULL;
|
zone->isselfarg = NULL;
|
||||||
@ -1195,6 +1197,9 @@ zone_free(dns_zone_t *zone) {
|
|||||||
if (zone->rcvquerystats != NULL){
|
if (zone->rcvquerystats != NULL){
|
||||||
dns_stats_detach(&zone->rcvquerystats);
|
dns_stats_detach(&zone->rcvquerystats);
|
||||||
}
|
}
|
||||||
|
if (zone->dnssecsignstats != NULL){
|
||||||
|
dns_stats_detach(&zone->dnssecsignstats);
|
||||||
|
}
|
||||||
if (zone->db != NULL) {
|
if (zone->db != NULL) {
|
||||||
zone_detachdb(zone);
|
zone_detachdb(zone);
|
||||||
}
|
}
|
||||||
@ -6623,6 +6628,7 @@ add_sigs(dns_db_t *db, dns_dbversion_t *ver, dns_name_t *name,
|
|||||||
/* XXX inefficient - will cause dataset merging */
|
/* XXX inefficient - will cause dataset merging */
|
||||||
CHECK(update_one_rr(db, ver, diff, DNS_DIFFOP_ADDRESIGN,
|
CHECK(update_one_rr(db, ver, diff, DNS_DIFFOP_ADDRESIGN,
|
||||||
name, rdataset.ttl, &sig_rdata));
|
name, rdataset.ttl, &sig_rdata));
|
||||||
|
|
||||||
dns_rdata_reset(&sig_rdata);
|
dns_rdata_reset(&sig_rdata);
|
||||||
isc_buffer_init(&buffer, data, sizeof(data));
|
isc_buffer_init(&buffer, data, sizeof(data));
|
||||||
}
|
}
|
||||||
@ -17521,6 +17527,24 @@ dns_zone_setrcvquerystats(dns_zone_t *zone, dns_stats_t *stats) {
|
|||||||
UNLOCK_ZONE(zone);
|
UNLOCK_ZONE(zone);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
dns_zone_setdnssecsignstats(dns_zone_t *zone, dns_stats_t *stats) {
|
||||||
|
|
||||||
|
REQUIRE(DNS_ZONE_VALID(zone));
|
||||||
|
|
||||||
|
LOCK_ZONE(zone);
|
||||||
|
if (stats != NULL && zone->dnssecsignstats == NULL) {
|
||||||
|
dns_stats_attach(stats, &zone->dnssecsignstats);
|
||||||
|
}
|
||||||
|
UNLOCK_ZONE(zone);
|
||||||
|
}
|
||||||
|
|
||||||
|
dns_stats_t*
|
||||||
|
dns_zone_getdnssecsignstats(dns_zone_t *zone) {
|
||||||
|
REQUIRE(DNS_ZONE_VALID(zone));
|
||||||
|
return (zone->dnssecsignstats);
|
||||||
|
}
|
||||||
|
|
||||||
isc_stats_t *
|
isc_stats_t *
|
||||||
dns_zone_getrequeststats(dns_zone_t *zone) {
|
dns_zone_getrequeststats(dns_zone_t *zone) {
|
||||||
/*
|
/*
|
||||||
@ -18019,8 +18043,7 @@ rr_exists(dns_db_t *db, dns_dbversion_t *ver, dns_name_t *name,
|
|||||||
*/
|
*/
|
||||||
static isc_result_t
|
static isc_result_t
|
||||||
add_signing_records(dns_db_t *db, dns_rdatatype_t privatetype,
|
add_signing_records(dns_db_t *db, dns_rdatatype_t privatetype,
|
||||||
dns_dbversion_t *ver, dns_diff_t *diff,
|
dns_dbversion_t *ver, dns_diff_t *diff, bool sign_all)
|
||||||
bool sign_all)
|
|
||||||
{
|
{
|
||||||
dns_difftuple_t *tuple, *newtuple = NULL;
|
dns_difftuple_t *tuple, *newtuple = NULL;
|
||||||
dns_rdata_dnskey_t dnskey;
|
dns_rdata_dnskey_t dnskey;
|
||||||
@ -18486,9 +18509,8 @@ zone_rekey(dns_zone_t *zone) {
|
|||||||
{
|
{
|
||||||
CHECK(dns_diff_apply(&diff, db, ver));
|
CHECK(dns_diff_apply(&diff, db, ver));
|
||||||
CHECK(clean_nsec3param(zone, db, ver, &diff));
|
CHECK(clean_nsec3param(zone, db, ver, &diff));
|
||||||
CHECK(add_signing_records(db, zone->privatetype,
|
CHECK(add_signing_records(db, zone->privatetype, ver,
|
||||||
ver, &diff,
|
&diff, (newalg || fullsign)));
|
||||||
(newalg || fullsign)));
|
|
||||||
CHECK(update_soa_serial(db, ver, &diff, mctx,
|
CHECK(update_soa_serial(db, ver, &diff, mctx,
|
||||||
zone->updatemethod));
|
zone->updatemethod));
|
||||||
CHECK(add_chains(zone, db, ver, &diff));
|
CHECK(add_chains(zone, db, ver, &diff));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user