xref: /netbsd-src/external/mpl/bind/dist/lib/ns/include/ns/stats.h (revision bcda20f65a8566e103791ec395f7f499ef322704)
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