mirror of
https://gitlab.isc.org/isc-projects/bind9
synced 2025-09-01 15:05:23 +00:00
Use lowercase names for stats
statistic printing code cleanup move some of the statistics stufdf to the server object
This commit is contained in:
@@ -15,7 +15,7 @@
|
|||||||
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* $Id: globals.h,v 1.48 2000/11/07 23:49:20 mws Exp $ */
|
/* $Id: globals.h,v 1.49 2000/11/09 19:55:19 mws Exp $ */
|
||||||
|
|
||||||
#ifndef NAMED_GLOBALS_H
|
#ifndef NAMED_GLOBALS_H
|
||||||
#define NAMED_GLOBALS_H 1
|
#define NAMED_GLOBALS_H 1
|
||||||
@@ -35,11 +35,9 @@
|
|||||||
#ifdef NS_MAIN
|
#ifdef NS_MAIN
|
||||||
#define EXTERN
|
#define EXTERN
|
||||||
#define INIT(v) = (v)
|
#define INIT(v) = (v)
|
||||||
#define ARRAYINIT = {0,}
|
|
||||||
#else
|
#else
|
||||||
#define EXTERN extern
|
#define EXTERN extern
|
||||||
#define INIT(v)
|
#define INIT(v)
|
||||||
#define ARRAYINIT
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
EXTERN isc_mem_t * ns_g_mctx INIT(NULL);
|
EXTERN isc_mem_t * ns_g_mctx INIT(NULL);
|
||||||
@@ -97,12 +95,6 @@ EXTERN const char * lwresd_g_defaultpidfile INIT(NS_LOCALSTATEDIR
|
|||||||
"/run/lwresd.pid");
|
"/run/lwresd.pid");
|
||||||
EXTERN const char * ns_g_username INIT(NULL);
|
EXTERN const char * ns_g_username INIT(NULL);
|
||||||
|
|
||||||
/*
|
|
||||||
* Statistical counters.
|
|
||||||
*/
|
|
||||||
EXTERN isc_uint64_t ns_globalcount[DNS_ZONE_COUNTSIZE]
|
|
||||||
ARRAYINIT;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* XXX Temporary.
|
* XXX Temporary.
|
||||||
*/
|
*/
|
||||||
|
@@ -15,7 +15,7 @@
|
|||||||
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* $Id: server.h,v 1.43 2000/11/07 23:49:23 mws Exp $ */
|
/* $Id: server.h,v 1.44 2000/11/09 19:55:20 mws Exp $ */
|
||||||
|
|
||||||
#ifndef NAMED_SERVER_H
|
#ifndef NAMED_SERVER_H
|
||||||
#define NAMED_SERVER_H 1
|
#define NAMED_SERVER_H 1
|
||||||
@@ -67,6 +67,10 @@ struct ns_server {
|
|||||||
isc_event_t * reload_event;
|
isc_event_t * reload_event;
|
||||||
|
|
||||||
isc_boolean_t flushonshutdown;
|
isc_boolean_t flushonshutdown;
|
||||||
|
|
||||||
|
char * statsfile;
|
||||||
|
FILE * statsfp;
|
||||||
|
isc_uint64_t globalcount[DNS_ZONE_COUNTSIZE];
|
||||||
};
|
};
|
||||||
|
|
||||||
#define NS_SERVER_MAGIC 0x53564552 /* SVER */
|
#define NS_SERVER_MAGIC 0x53564552 /* SVER */
|
||||||
@@ -111,4 +115,8 @@ ns_server_refreshzone(ns_server_t *server, char *args);
|
|||||||
isc_result_t
|
isc_result_t
|
||||||
ns_server_dumpstats(ns_server_t *server);
|
ns_server_dumpstats(ns_server_t *server);
|
||||||
|
|
||||||
|
void
|
||||||
|
ns_server_querycount(dns_zone_t *zone, isc_boolean_t is_zone,
|
||||||
|
dns_zonecount_t counter);
|
||||||
|
|
||||||
#endif /* NAMED_SERVER_H */
|
#endif /* NAMED_SERVER_H */
|
||||||
|
@@ -15,7 +15,7 @@
|
|||||||
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* $Id: query.c,v 1.142 2000/11/07 23:49:17 mws Exp $ */
|
/* $Id: query.c,v 1.143 2000/11/09 19:55:16 mws Exp $ */
|
||||||
|
|
||||||
#include <config.h>
|
#include <config.h>
|
||||||
|
|
||||||
@@ -101,28 +101,6 @@ query_maybeputqname(ns_client_t *client) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
query_count(dns_zone_t *zone, isc_boolean_t is_zone,
|
|
||||||
dns_zonecount_t counter)
|
|
||||||
{
|
|
||||||
REQUIRE(counter < DNS_ZONE_COUNTSIZE);
|
|
||||||
|
|
||||||
ns_globalcount[counter]++;
|
|
||||||
if (!is_zone || zone == NULL || !dns_zone_hascounts(zone)) {
|
|
||||||
isc_log_write(dns_lctx, NS_LOGCATEGORY_GENERAL, NS_LOGMODULE_QUERY,
|
|
||||||
1, "global counter %s set to %ld",
|
|
||||||
dns_zonecount_names[counter],
|
|
||||||
(long)ns_globalcount[counter]);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
dns_zone_count(zone, counter);
|
|
||||||
isc_log_write(dns_lctx, NS_LOGCATEGORY_GENERAL, NS_LOGMODULE_QUERY,
|
|
||||||
1, "zone counter %s set to %ld, global %ld",
|
|
||||||
dns_zonecount_names[counter],
|
|
||||||
(long)dns_zone_getcounts(zone, counter),
|
|
||||||
(long)ns_globalcount[counter]);
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline void
|
static inline void
|
||||||
query_reset(ns_client_t *client, isc_boolean_t everything) {
|
query_reset(ns_client_t *client, isc_boolean_t everything) {
|
||||||
isc_buffer_t *dbuf, *dbuf_next;
|
isc_buffer_t *dbuf, *dbuf_next;
|
||||||
@@ -793,7 +771,8 @@ query_simplefind(void *arg, dns_name_t *name, dns_rdatatype_t type,
|
|||||||
if (dns_rdataset_isassociated(sigrdataset))
|
if (dns_rdataset_isassociated(sigrdataset))
|
||||||
dns_rdataset_disassociate(sigrdataset);
|
dns_rdataset_disassociate(sigrdataset);
|
||||||
if (is_zone) {
|
if (is_zone) {
|
||||||
query_count(zone, is_zone, dns_zonecount_delegate);
|
ns_server_querycount(zone, is_zone,
|
||||||
|
dns_zonecount_delegate);
|
||||||
if (USECACHE(client)) {
|
if (USECACHE(client)) {
|
||||||
/*
|
/*
|
||||||
* Either the answer is in the cache, or we
|
* Either the answer is in the cache, or we
|
||||||
@@ -858,7 +837,7 @@ query_simplefind(void *arg, dns_name_t *name, dns_rdatatype_t type,
|
|||||||
* query counter.
|
* query counter.
|
||||||
*/
|
*/
|
||||||
if (result == ISC_R_SUCCESS)
|
if (result == ISC_R_SUCCESS)
|
||||||
query_count(zone, is_zone, dns_zonecount_success);
|
ns_server_querycount(zone, is_zone, dns_zonecount_success);
|
||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
if (dns_rdataset_isassociated(&zrdataset)) {
|
if (dns_rdataset_isassociated(&zrdataset)) {
|
||||||
@@ -2188,20 +2167,23 @@ query_find(ns_client_t *client, dns_fetchevent_t *event) {
|
|||||||
*/
|
*/
|
||||||
dbuf = query_getnamebuf(client);
|
dbuf = query_getnamebuf(client);
|
||||||
if (dbuf == NULL) {
|
if (dbuf == NULL) {
|
||||||
query_count(zone, is_zone, dns_zonecount_failure);
|
ns_server_querycount(zone, is_zone,
|
||||||
|
dns_zonecount_failure);
|
||||||
QUERY_ERROR(DNS_R_SERVFAIL);
|
QUERY_ERROR(DNS_R_SERVFAIL);
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
fname = query_newname(client, dbuf, &b);
|
fname = query_newname(client, dbuf, &b);
|
||||||
if (fname == NULL) {
|
if (fname == NULL) {
|
||||||
query_count(zone, is_zone, dns_zonecount_failure);
|
ns_server_querycount(zone, is_zone,
|
||||||
|
dns_zonecount_failure);
|
||||||
QUERY_ERROR(DNS_R_SERVFAIL);
|
QUERY_ERROR(DNS_R_SERVFAIL);
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
tname = dns_fixedname_name(&event->foundname);
|
tname = dns_fixedname_name(&event->foundname);
|
||||||
result = dns_name_concatenate(tname, NULL, fname, NULL);
|
result = dns_name_concatenate(tname, NULL, fname, NULL);
|
||||||
if (result != ISC_R_SUCCESS) {
|
if (result != ISC_R_SUCCESS) {
|
||||||
query_count(zone, is_zone, dns_zonecount_failure);
|
ns_server_querycount(zone, is_zone,
|
||||||
|
dns_zonecount_failure);
|
||||||
QUERY_ERROR(DNS_R_SERVFAIL);
|
QUERY_ERROR(DNS_R_SERVFAIL);
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
@@ -2224,7 +2206,8 @@ query_find(ns_client_t *client, dns_fetchevent_t *event) {
|
|||||||
result = query_getdb(client, client->query.qname, 0, &zone, &db,
|
result = query_getdb(client, client->query.qname, 0, &zone, &db,
|
||||||
&version, &is_zone);
|
&version, &is_zone);
|
||||||
if (result != ISC_R_SUCCESS) {
|
if (result != ISC_R_SUCCESS) {
|
||||||
query_count(NULL, ISC_FALSE, dns_zonecount_failure);
|
ns_server_querycount(NULL, ISC_FALSE,
|
||||||
|
dns_zonecount_failure);
|
||||||
if (result == DNS_R_REFUSED)
|
if (result == DNS_R_REFUSED)
|
||||||
QUERY_ERROR(DNS_R_REFUSED);
|
QUERY_ERROR(DNS_R_REFUSED);
|
||||||
else
|
else
|
||||||
@@ -2266,7 +2249,7 @@ query_find(ns_client_t *client, dns_fetchevent_t *event) {
|
|||||||
type = qtype;
|
type = qtype;
|
||||||
else {
|
else {
|
||||||
CTRACE("find_query: REFUSED: qcount != 1");
|
CTRACE("find_query: REFUSED: qcount != 1");
|
||||||
query_count(zone, is_zone, dns_zonecount_failure);
|
ns_server_querycount(zone, is_zone, dns_zonecount_failure);
|
||||||
QUERY_ERROR(DNS_R_REFUSED);
|
QUERY_ERROR(DNS_R_REFUSED);
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
@@ -2277,7 +2260,7 @@ query_find(ns_client_t *client, dns_fetchevent_t *event) {
|
|||||||
result = query_checktype(qtype);
|
result = query_checktype(qtype);
|
||||||
if (result != ISC_R_SUCCESS) {
|
if (result != ISC_R_SUCCESS) {
|
||||||
CTRACE("find_query: non supported query type");
|
CTRACE("find_query: non supported query type");
|
||||||
query_count(zone, is_zone, dns_zonecount_failure);
|
ns_server_querycount(zone, is_zone, dns_zonecount_failure);
|
||||||
QUERY_ERROR(result);
|
QUERY_ERROR(result);
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
@@ -2295,7 +2278,7 @@ query_find(ns_client_t *client, dns_fetchevent_t *event) {
|
|||||||
*/
|
*/
|
||||||
dbuf = query_getnamebuf(client);
|
dbuf = query_getnamebuf(client);
|
||||||
if (dbuf == NULL) {
|
if (dbuf == NULL) {
|
||||||
query_count(zone, is_zone, dns_zonecount_failure);
|
ns_server_querycount(zone, is_zone, dns_zonecount_failure);
|
||||||
QUERY_ERROR(DNS_R_SERVFAIL);
|
QUERY_ERROR(DNS_R_SERVFAIL);
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
@@ -2303,7 +2286,7 @@ query_find(ns_client_t *client, dns_fetchevent_t *event) {
|
|||||||
rdataset = query_newrdataset(client);
|
rdataset = query_newrdataset(client);
|
||||||
sigrdataset = query_newrdataset(client);
|
sigrdataset = query_newrdataset(client);
|
||||||
if (fname == NULL || rdataset == NULL || sigrdataset == NULL) {
|
if (fname == NULL || rdataset == NULL || sigrdataset == NULL) {
|
||||||
query_count(zone, is_zone, dns_zonecount_failure);
|
ns_server_querycount(zone, is_zone, dns_zonecount_failure);
|
||||||
QUERY_ERROR(DNS_R_SERVFAIL);
|
QUERY_ERROR(DNS_R_SERVFAIL);
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
@@ -2359,7 +2342,7 @@ query_find(ns_client_t *client, dns_fetchevent_t *event) {
|
|||||||
result = dns_name_concatenate(client->query.qname,
|
result = dns_name_concatenate(client->query.qname,
|
||||||
NULL, fname, NULL);
|
NULL, fname, NULL);
|
||||||
if (result != ISC_R_SUCCESS) {
|
if (result != ISC_R_SUCCESS) {
|
||||||
query_count(zone, is_zone,
|
ns_server_querycount(zone, is_zone,
|
||||||
dns_zonecount_failure);
|
dns_zonecount_failure);
|
||||||
QUERY_ERROR(DNS_R_SERVFAIL);
|
QUERY_ERROR(DNS_R_SERVFAIL);
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
@@ -2378,7 +2361,8 @@ query_find(ns_client_t *client, dns_fetchevent_t *event) {
|
|||||||
CTRACE("query_find: resume");
|
CTRACE("query_find: resume");
|
||||||
switch (result) {
|
switch (result) {
|
||||||
case ISC_R_SUCCESS:
|
case ISC_R_SUCCESS:
|
||||||
query_count(zone, is_zone, dns_zonecount_success);
|
ns_server_querycount(zone, is_zone,
|
||||||
|
dns_zonecount_success);
|
||||||
/*
|
/*
|
||||||
* This case is handled in the main line below.
|
* This case is handled in the main line below.
|
||||||
*/
|
*/
|
||||||
@@ -2410,7 +2394,7 @@ query_find(ns_client_t *client, dns_fetchevent_t *event) {
|
|||||||
*/
|
*/
|
||||||
INSIST(!is_zone);
|
INSIST(!is_zone);
|
||||||
INSIST(client->view->hints != NULL);
|
INSIST(client->view->hints != NULL);
|
||||||
query_count(zone, is_zone, dns_zonecount_delegate);
|
ns_server_querycount(zone, is_zone, dns_zonecount_delegate);
|
||||||
if (db != NULL)
|
if (db != NULL)
|
||||||
dns_db_detach(&db);
|
dns_db_detach(&db);
|
||||||
dns_db_attach(client->view->hints, &db);
|
dns_db_attach(client->view->hints, &db);
|
||||||
@@ -2422,7 +2406,8 @@ query_find(ns_client_t *client, dns_fetchevent_t *event) {
|
|||||||
* We can't even find the hints for the root
|
* We can't even find the hints for the root
|
||||||
* nameservers!
|
* nameservers!
|
||||||
*/
|
*/
|
||||||
query_count(zone, is_zone, dns_zonecount_failure);
|
ns_server_querycount(zone, is_zone,
|
||||||
|
dns_zonecount_failure);
|
||||||
QUERY_ERROR(DNS_R_SERVFAIL);
|
QUERY_ERROR(DNS_R_SERVFAIL);
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
@@ -2522,7 +2507,7 @@ query_find(ns_client_t *client, dns_fetchevent_t *event) {
|
|||||||
/*
|
/*
|
||||||
* Recurse!
|
* Recurse!
|
||||||
*/
|
*/
|
||||||
query_count(zone, is_zone,
|
ns_server_querycount(zone, is_zone,
|
||||||
dns_zonecount_recurse);
|
dns_zonecount_recurse);
|
||||||
if (type == dns_rdatatype_key)
|
if (type == dns_rdatatype_key)
|
||||||
result = query_recurse(client, qtype,
|
result = query_recurse(client, qtype,
|
||||||
@@ -2534,7 +2519,7 @@ query_find(ns_client_t *client, dns_fetchevent_t *event) {
|
|||||||
client->query.attributes |=
|
client->query.attributes |=
|
||||||
NS_QUERYATTR_RECURSING;
|
NS_QUERYATTR_RECURSING;
|
||||||
else {
|
else {
|
||||||
query_count(zone, is_zone,
|
ns_server_querycount(zone, is_zone,
|
||||||
dns_zonecount_failure);
|
dns_zonecount_failure);
|
||||||
QUERY_ERROR(DNS_R_SERVFAIL);
|
QUERY_ERROR(DNS_R_SERVFAIL);
|
||||||
}
|
}
|
||||||
@@ -2542,7 +2527,7 @@ query_find(ns_client_t *client, dns_fetchevent_t *event) {
|
|||||||
/*
|
/*
|
||||||
* This is the best answer.
|
* This is the best answer.
|
||||||
*/
|
*/
|
||||||
query_count(zone, is_zone,
|
ns_server_querycount(zone, is_zone,
|
||||||
dns_zonecount_delegate);
|
dns_zonecount_delegate);
|
||||||
client->query.gluedb = zdb;
|
client->query.gluedb = zdb;
|
||||||
client->query.attributes |=
|
client->query.attributes |=
|
||||||
@@ -2558,7 +2543,7 @@ query_find(ns_client_t *client, dns_fetchevent_t *event) {
|
|||||||
goto cleanup;
|
goto cleanup;
|
||||||
case DNS_R_NXRRSET:
|
case DNS_R_NXRRSET:
|
||||||
INSIST(is_zone);
|
INSIST(is_zone);
|
||||||
query_count(zone, is_zone, dns_zonecount_nxrrset);
|
ns_server_querycount(zone, is_zone, dns_zonecount_nxrrset);
|
||||||
if (dns_rdataset_isassociated(rdataset)) {
|
if (dns_rdataset_isassociated(rdataset)) {
|
||||||
/*
|
/*
|
||||||
* If we've got a NXT record, we need to save the
|
* If we've got a NXT record, we need to save the
|
||||||
@@ -2585,7 +2570,8 @@ query_find(ns_client_t *client, dns_fetchevent_t *event) {
|
|||||||
*/
|
*/
|
||||||
result = query_addsoa(client, db, ISC_FALSE);
|
result = query_addsoa(client, db, ISC_FALSE);
|
||||||
if (result != ISC_R_SUCCESS) {
|
if (result != ISC_R_SUCCESS) {
|
||||||
query_count(zone, is_zone, dns_zonecount_failure);
|
ns_server_querycount(zone, is_zone,
|
||||||
|
dns_zonecount_failure);
|
||||||
QUERY_ERROR(result);
|
QUERY_ERROR(result);
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
@@ -2602,7 +2588,7 @@ query_find(ns_client_t *client, dns_fetchevent_t *event) {
|
|||||||
goto cleanup;
|
goto cleanup;
|
||||||
case DNS_R_NXDOMAIN:
|
case DNS_R_NXDOMAIN:
|
||||||
INSIST(is_zone);
|
INSIST(is_zone);
|
||||||
query_count(zone, is_zone, dns_zonecount_nxdomain);
|
ns_server_querycount(zone, is_zone, dns_zonecount_nxdomain);
|
||||||
if (client->query.restarts > 0) {
|
if (client->query.restarts > 0) {
|
||||||
/*
|
/*
|
||||||
* We hit a dead end following a CNAME or DNAME.
|
* We hit a dead end following a CNAME or DNAME.
|
||||||
@@ -2641,7 +2627,8 @@ query_find(ns_client_t *client, dns_fetchevent_t *event) {
|
|||||||
else
|
else
|
||||||
result = query_addsoa(client, db, ISC_FALSE);
|
result = query_addsoa(client, db, ISC_FALSE);
|
||||||
if (result != ISC_R_SUCCESS) {
|
if (result != ISC_R_SUCCESS) {
|
||||||
query_count(zone, is_zone, dns_zonecount_failure);
|
ns_server_querycount(zone, is_zone,
|
||||||
|
dns_zonecount_failure);
|
||||||
QUERY_ERROR(result);
|
QUERY_ERROR(result);
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
@@ -2662,11 +2649,11 @@ query_find(ns_client_t *client, dns_fetchevent_t *event) {
|
|||||||
goto cleanup;
|
goto cleanup;
|
||||||
case DNS_R_NCACHENXDOMAIN:
|
case DNS_R_NCACHENXDOMAIN:
|
||||||
INSIST(!is_zone);
|
INSIST(!is_zone);
|
||||||
query_count(NULL, is_zone, dns_zonecount_nxdomain);
|
ns_server_querycount(NULL, is_zone, dns_zonecount_nxdomain);
|
||||||
goto ncachenxrrset;
|
goto ncachenxrrset;
|
||||||
case DNS_R_NCACHENXRRSET:
|
case DNS_R_NCACHENXRRSET:
|
||||||
INSIST(!is_zone);
|
INSIST(!is_zone);
|
||||||
query_count(NULL, is_zone, dns_zonecount_nxrrset);
|
ns_server_querycount(NULL, is_zone, dns_zonecount_nxrrset);
|
||||||
ncachenxrrset:
|
ncachenxrrset:
|
||||||
authoritative = ISC_FALSE;
|
authoritative = ISC_FALSE;
|
||||||
/*
|
/*
|
||||||
@@ -2828,7 +2815,7 @@ query_find(ns_client_t *client, dns_fetchevent_t *event) {
|
|||||||
/*
|
/*
|
||||||
* Something has gone wrong.
|
* Something has gone wrong.
|
||||||
*/
|
*/
|
||||||
query_count(zone, is_zone, dns_zonecount_failure);
|
ns_server_querycount(zone, is_zone, dns_zonecount_failure);
|
||||||
QUERY_ERROR(DNS_R_SERVFAIL);
|
QUERY_ERROR(DNS_R_SERVFAIL);
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
@@ -2842,7 +2829,8 @@ query_find(ns_client_t *client, dns_fetchevent_t *event) {
|
|||||||
rdsiter = NULL;
|
rdsiter = NULL;
|
||||||
result = dns_db_allrdatasets(db, node, version, 0, &rdsiter);
|
result = dns_db_allrdatasets(db, node, version, 0, &rdsiter);
|
||||||
if (result != ISC_R_SUCCESS) {
|
if (result != ISC_R_SUCCESS) {
|
||||||
query_count(zone, is_zone, dns_zonecount_failure);
|
ns_server_querycount(zone, is_zone,
|
||||||
|
dns_zonecount_failure);
|
||||||
QUERY_ERROR(DNS_R_SERVFAIL);
|
QUERY_ERROR(DNS_R_SERVFAIL);
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
@@ -2916,14 +2904,15 @@ query_find(ns_client_t *client, dns_fetchevent_t *event) {
|
|||||||
/*
|
/*
|
||||||
* Something went wrong.
|
* Something went wrong.
|
||||||
*/
|
*/
|
||||||
query_count(zone, is_zone,
|
ns_server_querycount(zone, is_zone,
|
||||||
dns_zonecount_failure);
|
dns_zonecount_failure);
|
||||||
result = DNS_R_SERVFAIL;
|
result = DNS_R_SERVFAIL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
dns_rdatasetiter_destroy(&rdsiter);
|
dns_rdatasetiter_destroy(&rdsiter);
|
||||||
if (result != ISC_R_NOMORE) {
|
if (result != ISC_R_NOMORE) {
|
||||||
query_count(zone, is_zone, dns_zonecount_failure);
|
ns_server_querycount(zone, is_zone,
|
||||||
|
dns_zonecount_failure);
|
||||||
QUERY_ERROR(DNS_R_SERVFAIL);
|
QUERY_ERROR(DNS_R_SERVFAIL);
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
|
@@ -15,7 +15,7 @@
|
|||||||
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* $Id: server.c,v 1.242 2000/11/08 18:57:59 mws Exp $ */
|
/* $Id: server.c,v 1.243 2000/11/09 19:55:17 mws Exp $ */
|
||||||
|
|
||||||
#include <config.h>
|
#include <config.h>
|
||||||
|
|
||||||
@@ -98,9 +98,6 @@ typedef struct {
|
|||||||
dns_aclconfctx_t *aclconf;
|
dns_aclconfctx_t *aclconf;
|
||||||
} ns_load_t;
|
} ns_load_t;
|
||||||
|
|
||||||
static char *statsfile = NULL;
|
|
||||||
FILE *statsfp = NULL;
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
fatal(const char *msg, isc_result_t result);
|
fatal(const char *msg, isc_result_t result);
|
||||||
|
|
||||||
@@ -1301,66 +1298,56 @@ heartbeat_timer_tick(isc_task_t *task, isc_event_t *event) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
ns_server_freestatsfile(isc_mem_t *mctx) {
|
ns_server_freestatsfile(ns_server_t *serv) {
|
||||||
if (statsfile != NULL)
|
if (serv->statsfile != NULL)
|
||||||
isc_mem_free(mctx,statsfile);
|
isc_mem_free(serv->mctx, serv->statsfile);
|
||||||
statsfile = NULL;
|
serv->statsfile = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
ns_server_setstatsfile(const char *name, isc_mem_t *mctx) {
|
ns_server_setstatsfile(const char *name, ns_server_t *serv) {
|
||||||
int len;
|
int len;
|
||||||
|
|
||||||
ns_server_freestatsfile(mctx);
|
ns_server_freestatsfile(serv);
|
||||||
len = strlen(name);
|
len = strlen(name);
|
||||||
statsfile = isc_mem_allocate(mctx, len + 1);
|
serv->statsfile = isc_mem_allocate(serv->mctx, len + 1);
|
||||||
if (statsfile == NULL)
|
if (serv->statsfile == NULL)
|
||||||
fatal("allocate memory for server stats", ISC_R_NOMEMORY);
|
fatal("allocate memory for server stats", ISC_R_NOMEMORY);
|
||||||
strcpy(statsfile, name);
|
strcpy(serv->statsfile, name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static isc_result_t
|
static isc_result_t
|
||||||
ns_server_openstatsfile(void) {
|
ns_server_openstatsfile(ns_server_t *serv) {
|
||||||
isc_result_t result;
|
isc_result_t result;
|
||||||
const char *defname = "named.stats";
|
const char *defname = "named.stats";
|
||||||
union { char *nc;
|
union { char *nc;
|
||||||
const char *cc; } deconst;
|
const char *cc; } deconst;
|
||||||
|
|
||||||
if (statsfile == NULL)
|
if (serv->statsfile == NULL)
|
||||||
deconst.cc = defname;
|
deconst.cc = defname;
|
||||||
else
|
else
|
||||||
deconst.nc = statsfile;
|
deconst.nc = serv->statsfile;
|
||||||
result = isc_stdio_open(deconst.nc, "a", &statsfp);
|
result = isc_stdio_open(deconst.nc, "a", &serv->statsfp);
|
||||||
return (result);
|
return (result);
|
||||||
}
|
}
|
||||||
|
|
||||||
static isc_result_t
|
static isc_result_t
|
||||||
ns_server_closestatsfile(void) {
|
ns_server_closestatsfile(ns_server_t *serv) {
|
||||||
isc_result_t result = ISC_R_SUCCESS;
|
isc_result_t result = ISC_R_SUCCESS;
|
||||||
|
|
||||||
if (statsfp != NULL)
|
if (serv->statsfp != NULL)
|
||||||
result = isc_stdio_close(statsfp);
|
result = isc_stdio_close(serv->statsfp);
|
||||||
statsfp = NULL;
|
serv->statsfp = NULL;
|
||||||
return (result);
|
return (result);
|
||||||
}
|
}
|
||||||
|
|
||||||
static isc_result_t
|
static void
|
||||||
ns_server_statsprintf(const char *format, ...) {
|
ns_server_zeroglobal(ns_server_t *serv) {
|
||||||
char outputbuf[DNS_NAME_MAXTEXT + 64];
|
int i;
|
||||||
/* 64 is a safe estimate for the extra text */
|
|
||||||
va_list args;
|
|
||||||
|
|
||||||
if (statsfp == NULL)
|
for (i=0; i<DNS_ZONE_COUNTSIZE; i++)
|
||||||
return (ISC_R_FAILURE);
|
serv->globalcount[i]=0;
|
||||||
/* XXXMWS Better failure case needed */
|
|
||||||
|
|
||||||
va_start(args, format);
|
|
||||||
vsnprintf(outputbuf, sizeof(outputbuf), format, args);
|
|
||||||
va_end(args);
|
|
||||||
isc_stdio_write(outputbuf, strlen(outputbuf), 1, statsfp,
|
|
||||||
NULL);
|
|
||||||
return (ISC_R_SUCCESS);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static isc_result_t
|
static isc_result_t
|
||||||
@@ -1721,8 +1708,12 @@ load_configuration(const char *filename, ns_server_t *server,
|
|||||||
else
|
else
|
||||||
ns_os_writepidfile(ns_g_defaultpidfile);
|
ns_os_writepidfile(ns_g_defaultpidfile);
|
||||||
|
|
||||||
|
server->statsfile = NULL;
|
||||||
|
server->statsfp = NULL;
|
||||||
|
ns_server_zeroglobal(server);
|
||||||
|
|
||||||
if (dns_c_ctx_getstatsfilename(cctx, &statsfilename) != ISC_R_NOTFOUND)
|
if (dns_c_ctx_getstatsfilename(cctx, &statsfilename) != ISC_R_NOTFOUND)
|
||||||
ns_server_setstatsfile(statsfilename, server->mctx);
|
ns_server_setstatsfile(statsfilename, server);
|
||||||
|
|
||||||
dns_aclconfctx_destroy(&aclconfctx);
|
dns_aclconfctx_destroy(&aclconfctx);
|
||||||
|
|
||||||
@@ -1973,7 +1964,7 @@ ns_server_destroy(ns_server_t **serverp) {
|
|||||||
ns_server_t *server = *serverp;
|
ns_server_t *server = *serverp;
|
||||||
REQUIRE(NS_SERVER_VALID(server));
|
REQUIRE(NS_SERVER_VALID(server));
|
||||||
|
|
||||||
ns_server_freestatsfile(server->mctx);
|
ns_server_freestatsfile(server);
|
||||||
|
|
||||||
dns_loadmgr_detach(&server->loadmgr);
|
dns_loadmgr_detach(&server->loadmgr);
|
||||||
dns_zonemgr_detach(&server->zonemgr);
|
dns_zonemgr_detach(&server->zonemgr);
|
||||||
@@ -2198,6 +2189,28 @@ ns_listenelt_fromconfig(dns_c_lstnon_t *celt, dns_c_ctx_t *cctx,
|
|||||||
return (ISC_R_SUCCESS);
|
return (ISC_R_SUCCESS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
ns_server_querycount(dns_zone_t *zone, isc_boolean_t is_zone,
|
||||||
|
dns_zonecount_t counter)
|
||||||
|
{
|
||||||
|
REQUIRE(counter < DNS_ZONE_COUNTSIZE);
|
||||||
|
|
||||||
|
ns_g_server->globalcount[counter]++;
|
||||||
|
if (!is_zone || zone == NULL || !dns_zone_hascounts(zone)) {
|
||||||
|
isc_log_write(dns_lctx, NS_LOGCATEGORY_GENERAL, NS_LOGMODULE_QUERY,
|
||||||
|
1, "global counter %s set to %ld",
|
||||||
|
dns_zonecount_names[counter],
|
||||||
|
(long)ns_g_server->globalcount[counter]);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
dns_zone_count(zone, counter);
|
||||||
|
isc_log_write(dns_lctx, NS_LOGCATEGORY_GENERAL, NS_LOGMODULE_QUERY,
|
||||||
|
1, "zone counter %s set to %ld, global %ld",
|
||||||
|
dns_zonecount_names[counter],
|
||||||
|
(long)dns_zone_getcounts(zone, counter),
|
||||||
|
(long)ns_g_server->globalcount[counter]);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Dump the current statistics to a file
|
* Dump the current statistics to a file
|
||||||
*
|
*
|
||||||
@@ -2213,29 +2226,25 @@ ns_server_dumpstats(ns_server_t *server) {
|
|||||||
dns_view_t *zoneview = NULL;
|
dns_view_t *zoneview = NULL;
|
||||||
char *viewname;
|
char *viewname;
|
||||||
isc_stdtime_t now;
|
isc_stdtime_t now;
|
||||||
|
FILE *fp;
|
||||||
|
int i;
|
||||||
|
int numbercounters;
|
||||||
|
|
||||||
isc_stdtime_get(&now);
|
isc_stdtime_get(&now);
|
||||||
result = ns_server_openstatsfile();
|
result = ns_server_openstatsfile(server);
|
||||||
if (result != ISC_R_SUCCESS) {
|
if (result != ISC_R_SUCCESS) {
|
||||||
isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL,
|
isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL,
|
||||||
NS_LOGMODULE_SERVER, ISC_LOG_WARNING,
|
NS_LOGMODULE_SERVER, ISC_LOG_WARNING,
|
||||||
"Failed to open statistics dump file");
|
"Failed to open statistics dump file");
|
||||||
return (result);
|
return (result);
|
||||||
}
|
}
|
||||||
ns_server_statsprintf("+++ Statistics Dump +++ (%ld)\n",
|
numbercounters = dns_zone_numbercounters();
|
||||||
|
fp = server->statsfp;
|
||||||
|
fprintf(fp,"+++ Statistics Dump +++ (%ld)\n",
|
||||||
(long)now);
|
(long)now);
|
||||||
ns_server_statsprintf("SUCCESS %ld\n",
|
for (i=0; i<numbercounters; i++)
|
||||||
ns_globalcount[dns_zonecount_success]);
|
fprintf(fp,"%s %ld\n",dns_zonecount_names[i],
|
||||||
ns_server_statsprintf("DELEGATED %ld\n",
|
(long)server->globalcount[i]);
|
||||||
ns_globalcount[dns_zonecount_delegate]);
|
|
||||||
ns_server_statsprintf("NXRRSET %ld\n",
|
|
||||||
ns_globalcount[dns_zonecount_nxrrset]);
|
|
||||||
ns_server_statsprintf("NXDOMAIN %ld\n",
|
|
||||||
ns_globalcount[dns_zonecount_nxdomain]);
|
|
||||||
ns_server_statsprintf("RECURSIVE %ld\n",
|
|
||||||
ns_globalcount[dns_zonecount_recurse]);
|
|
||||||
ns_server_statsprintf("FAILED %ld\n",
|
|
||||||
ns_globalcount[dns_zonecount_failure]);
|
|
||||||
dns_zonemgr_lockconf(server->zonemgr, isc_rwlocktype_read);
|
dns_zonemgr_lockconf(server->zonemgr, isc_rwlocktype_read);
|
||||||
dns_zone_first(server->zonemgr, &zone);
|
dns_zone_first(server->zonemgr, &zone);
|
||||||
while (zone != NULL) {
|
while (zone != NULL) {
|
||||||
@@ -2249,32 +2258,13 @@ ns_server_dumpstats(ns_server_t *server) {
|
|||||||
zoneview = dns_zone_getview(zone);
|
zoneview = dns_zone_getview(zone);
|
||||||
viewname = zoneview->name;
|
viewname = zoneview->name;
|
||||||
if (dns_zone_hascounts(zone)) {
|
if (dns_zone_hascounts(zone)) {
|
||||||
ns_server_statsprintf("SUCCESS %ld %s:%s\n",
|
for (i=0; i<numbercounters; i++)
|
||||||
(long)dns_zone_getcounts(zone,
|
fprintf(fp,"%s %ld %s:%s\n",
|
||||||
dns_zonecount_success),
|
dns_zonecount_names[i],
|
||||||
viewname, zonestore);
|
(long)dns_zone_getcounts(zone, i),
|
||||||
ns_server_statsprintf("DELEGATED %ld %s:%s\n",
|
|
||||||
(long)dns_zone_getcounts(zone,
|
|
||||||
dns_zonecount_delegate),
|
|
||||||
viewname, zonestore);
|
|
||||||
ns_server_statsprintf("NXRRSET %ld %s:%s\n",
|
|
||||||
(long)dns_zone_getcounts(zone,
|
|
||||||
dns_zonecount_nxrrset),
|
|
||||||
viewname, zonestore);
|
|
||||||
ns_server_statsprintf("NXDOMAIN %ld %s:%s\n",
|
|
||||||
(long)dns_zone_getcounts(zone,
|
|
||||||
dns_zonecount_nxdomain),
|
|
||||||
viewname, zonestore);
|
|
||||||
ns_server_statsprintf("RECURSIVE %ld %s:%s\n",
|
|
||||||
(long)dns_zone_getcounts(zone,
|
|
||||||
dns_zonecount_recurse),
|
|
||||||
viewname, zonestore);
|
|
||||||
ns_server_statsprintf("FAILED %ld %s:%s\n",
|
|
||||||
(long)dns_zone_getcounts(zone,
|
|
||||||
dns_zonecount_failure),
|
|
||||||
viewname, zonestore);
|
viewname, zonestore);
|
||||||
} else {
|
} else {
|
||||||
ns_server_statsprintf("NOSTATISTICS 0 %s:%s\n",
|
fprintf(fp,"nostatistics 0 %s:%s\n",
|
||||||
viewname, zonestore);
|
viewname, zonestore);
|
||||||
}
|
}
|
||||||
isc_buffer_invalidate(&zonebuf);
|
isc_buffer_invalidate(&zonebuf);
|
||||||
@@ -2282,9 +2272,9 @@ ns_server_dumpstats(ns_server_t *server) {
|
|||||||
zone = next;
|
zone = next;
|
||||||
next = NULL;
|
next = NULL;
|
||||||
}
|
}
|
||||||
ns_server_statsprintf("--- Statistics Dump --- (%ld)\n",
|
fprintf(fp,"--- Statistics Dump --- (%ld)\n",
|
||||||
(long)now);
|
(long)now);
|
||||||
dns_zonemgr_unlockconf(server->zonemgr, isc_rwlocktype_read);
|
dns_zonemgr_unlockconf(server->zonemgr, isc_rwlocktype_read);
|
||||||
ns_server_closestatsfile();
|
ns_server_closestatsfile(server);
|
||||||
return (ISC_R_SUCCESS);
|
return (ISC_R_SUCCESS);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user