Home | History | Annotate | Line # | Download | only in ns
      1 /*	$NetBSD: stats.h,v 1.9 2025/01/26 16:25:46 christos Exp $	*/
      2 
      3 /*
      4  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
      5  *
      6  * SPDX-License-Identifier: MPL-2.0
      7  *
      8  * This Source Code Form is subject to the terms of the Mozilla Public
      9  * License, v. 2.0. If a copy of the MPL was not distributed with this
     10  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
     11  *
     12  * See the COPYRIGHT file distributed with this work for additional
     13  * information regarding copyright ownership.
     14  */
     15 
     16 #pragma once
     17 
     18 /*! \file include/ns/stats.h */
     19 
     20 #include <isc/mem.h>
     21 #include <isc/stats.h>
     22 
     23 #include <ns/types.h>
     24 
     25 /*%
     26  * Server statistics counters.  Used as isc_statscounter_t values.
     27  */
     28 enum {
     29 	ns_statscounter_requestv4 = 0,
     30 	ns_statscounter_requestv6 = 1,
     31 	ns_statscounter_edns0in = 2,
     32 	ns_statscounter_badednsver = 3,
     33 	ns_statscounter_tsigin = 4,
     34 	ns_statscounter_sig0in = 5,
     35 	ns_statscounter_invalidsig = 6,
     36 	ns_statscounter_requesttcp = 7,
     37 
     38 	ns_statscounter_authrej = 8,
     39 	ns_statscounter_recurserej = 9,
     40 	ns_statscounter_xfrrej = 10,
     41 	ns_statscounter_updaterej = 11,
     42 
     43 	ns_statscounter_response = 12,
     44 	ns_statscounter_truncatedresp = 13,
     45 	ns_statscounter_edns0out = 14,
     46 	ns_statscounter_tsigout = 15,
     47 	ns_statscounter_sig0out = 16,
     48 
     49 	ns_statscounter_success = 17,
     50 	ns_statscounter_authans = 18,
     51 	ns_statscounter_nonauthans = 19,
     52 	ns_statscounter_referral = 20,
     53 	ns_statscounter_nxrrset = 21,
     54 	ns_statscounter_servfail = 22,
     55 	ns_statscounter_formerr = 23,
     56 	ns_statscounter_nxdomain = 24,
     57 	ns_statscounter_recursion = 25,
     58 	ns_statscounter_duplicate = 26,
     59 	ns_statscounter_dropped = 27,
     60 	ns_statscounter_failure = 28,
     61 
     62 	ns_statscounter_xfrdone = 29,
     63 
     64 	ns_statscounter_updatereqfwd = 30,
     65 	ns_statscounter_updaterespfwd = 31,
     66 	ns_statscounter_updatefwdfail = 32,
     67 	ns_statscounter_updatedone = 33,
     68 	ns_statscounter_updatefail = 34,
     69 	ns_statscounter_updatebadprereq = 35,
     70 
     71 	ns_statscounter_recursclients = 36,
     72 
     73 	ns_statscounter_dns64 = 37,
     74 
     75 	ns_statscounter_ratedropped = 38,
     76 	ns_statscounter_rateslipped = 39,
     77 
     78 	ns_statscounter_rpz_rewrites = 40,
     79 
     80 	ns_statscounter_udp = 41,
     81 	ns_statscounter_tcp = 42,
     82 
     83 	ns_statscounter_nsidopt = 43,
     84 	ns_statscounter_expireopt = 44,
     85 	ns_statscounter_otheropt = 45,
     86 	ns_statscounter_ecsopt = 46,
     87 	ns_statscounter_padopt = 47,
     88 	ns_statscounter_keepaliveopt = 48,
     89 
     90 	ns_statscounter_nxdomainredirect = 49,
     91 	ns_statscounter_nxdomainredirect_rlookup = 50,
     92 
     93 	ns_statscounter_cookiein = 51,
     94 	ns_statscounter_cookiebadsize = 52,
     95 	ns_statscounter_cookiebadtime = 53,
     96 	ns_statscounter_cookienomatch = 54,
     97 	ns_statscounter_cookiematch = 55,
     98 	ns_statscounter_cookienew = 56,
     99 	ns_statscounter_badcookie = 57,
    100 
    101 	ns_statscounter_nxdomainsynth = 58,
    102 	ns_statscounter_nodatasynth = 59,
    103 	ns_statscounter_wildcardsynth = 60,
    104 
    105 	ns_statscounter_trystale = 61,
    106 	ns_statscounter_usedstale = 62,
    107 
    108 	ns_statscounter_prefetch = 63,
    109 	ns_statscounter_keytagopt = 64,
    110 
    111 	ns_statscounter_tcphighwater = 65,
    112 
    113 	ns_statscounter_reclimitdropped = 66,
    114 
    115 	ns_statscounter_updatequota = 67,
    116 
    117 	ns_statscounter_recurshighwater = 68,
    118 
    119 	ns_statscounter_max = 69,
    120 };
    121 
    122 void
    123 ns_stats_attach(ns_stats_t *stats, ns_stats_t **statsp);
    124 
    125 void
    126 ns_stats_detach(ns_stats_t **statsp);
    127 
    128 void
    129 ns_stats_create(isc_mem_t *mctx, int ncounters, ns_stats_t **statsp);
    130 
    131 isc_statscounter_t
    132 ns_stats_increment(ns_stats_t *stats, isc_statscounter_t counter);
    133 
    134 void
    135 ns_stats_decrement(ns_stats_t *stats, isc_statscounter_t counter);
    136 
    137 isc_stats_t *
    138 ns_stats_get(ns_stats_t *stats);
    139 
    140 void
    141 ns_stats_update_if_greater(ns_stats_t *stats, isc_statscounter_t counter,
    142 			   isc_statscounter_t value);
    143 
    144 isc_statscounter_t
    145 ns_stats_get_counter(ns_stats_t *stats, isc_statscounter_t counter);
    146