s->svr.num_query_dnscrypt_replay = 0;
#endif /* USE_DNSCRYPT */
if(worker->env.auth_zones) {
- if(reset && !worker->env.cfg->stat_cumulative) {
- lock_rw_wrlock(&worker->env.auth_zones->lock);
- } else {
- lock_rw_rdlock(&worker->env.auth_zones->lock);
- }
- s->svr.num_query_authzone_up = (long long)worker->env.
- auth_zones->num_query_up;
- s->svr.num_query_authzone_down = (long long)worker->env.
- auth_zones->num_query_down;
- if(reset && !worker->env.cfg->stat_cumulative) {
- worker->env.auth_zones->num_query_up = 0;
- worker->env.auth_zones->num_query_down = 0;
- }
- lock_rw_unlock(&worker->env.auth_zones->lock);
+ s->svr.num_query_authzone_up += (long long)worker->env.mesh->num_query_authzone_up;
+ s->svr.num_query_authzone_down += (long long)worker->env.mesh->num_query_authzone_down;
}
s->svr.mem_stream_wait =
(long long)tcp_req_info_get_stream_buffer_size();
total->svr.num_queries_missed_cache += a->svr.num_queries_missed_cache;
total->svr.num_queries_prefetch += a->svr.num_queries_prefetch;
total->svr.num_queries_timed_out += a->svr.num_queries_timed_out;
+ total->svr.num_query_authzone_up += a->svr.num_query_authzone_up;
+ total->svr.num_query_authzone_down += a->svr.num_query_authzone_down;
if (total->svr.max_query_time_us < a->svr.max_query_time_us)
total->svr.max_query_time_us = a->svr.max_query_time_us;
total->svr.sum_query_list_size += a->svr.sum_query_list_size;
if((iq->chase_flags&BIT_RD) && !(iq->response->rep->flags&BIT_AA)) {
verbose(VERB_ALGO, "forwarder, ignoring referral from auth zone");
} else {
- lock_rw_wrlock(&qstate->env->auth_zones->lock);
- qstate->env->auth_zones->num_query_up++;
- lock_rw_unlock(&qstate->env->auth_zones->lock);
+ qstate->env->mesh->num_query_authzone_up++;
iq->num_current_queries++;
iq->chase_to_rd = 0;
iq->dnssec_lame_query = 0;
return 0;
}
lock_rw_unlock(&z->lock);
- lock_rw_wrlock(&az->lock);
- az->num_query_down++;
- lock_rw_unlock(&az->lock);
+ env->mesh->num_query_authzone_down++;
auth_error_encode(qinfo, env, edns, repinfo, buf, temp,
LDNS_RCODE_SERVFAIL);
return 1;
/* fallback to regular answering (recursive) */
return 0;
}
- lock_rw_wrlock(&az->lock);
- az->num_query_down++;
- lock_rw_unlock(&az->lock);
+ env->mesh->num_query_authzone_down++;
/* encode answer */
if(!r)
rbtree_type xtree;
/** do we have downstream enabled */
int have_downstream;
- /** number of queries upstream */
- size_t num_query_up;
- /** number of queries downstream */
- size_t num_query_down;
/** first auth zone containing rpz item in linked list */
struct auth_zone* rpz_first;
/** rw lock for rpz linked list, needed when iterating or editing linked
{
if(!mesh)
return;
+ mesh->num_query_authzone_up = 0;
+ mesh->num_query_authzone_down = 0;
mesh->replies_sent = 0;
mesh->replies_sum_wait.tv_sec = 0;
mesh->replies_sum_wait.tv_usec = 0;
/** rbtree of all current queries (mesh_state.node)*/
rbtree_type all;
+ /** number of queries for unbound's auth_zones, upstream query */
+ size_t num_query_authzone_up;
+ /** number of queries for unbound's auth_zones, downstream answers */
+ size_t num_query_authzone_down;
+
/** count of the total number of mesh_reply entries */
size_t num_reply_addrs;
/** count of the number of mesh_states that have mesh_replies