xref: /netbsd-src/external/mpl/bind/dist/lib/dns/include/dns/stats.h (revision 7bdf38e5b7a28439665f2fdeff81e36913eef7dd)
1 /*	$NetBSD: stats.h,v 1.8 2024/02/21 22:52:10 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 dns/stats.h */
19 
20 #include <inttypes.h>
21 
22 #include <dns/types.h>
23 
24 /*%
25  * Statistics counters.  Used as isc_statscounter_t values.
26  */
27 enum {
28 	/*%
29 	 * Resolver statistics counters.
30 	 */
31 	dns_resstatscounter_queryv4 = 0,
32 	dns_resstatscounter_queryv6 = 1,
33 	dns_resstatscounter_responsev4 = 2,
34 	dns_resstatscounter_responsev6 = 3,
35 	dns_resstatscounter_nxdomain = 4,
36 	dns_resstatscounter_servfail = 5,
37 	dns_resstatscounter_formerr = 6,
38 	dns_resstatscounter_othererror = 7,
39 	dns_resstatscounter_edns0fail = 8,
40 	dns_resstatscounter_mismatch = 9,
41 	dns_resstatscounter_truncated = 10,
42 	dns_resstatscounter_lame = 11,
43 	dns_resstatscounter_retry = 12,
44 	dns_resstatscounter_gluefetchv4 = 13,
45 	dns_resstatscounter_gluefetchv6 = 14,
46 	dns_resstatscounter_gluefetchv4fail = 15,
47 	dns_resstatscounter_gluefetchv6fail = 16,
48 	dns_resstatscounter_val = 17,
49 	dns_resstatscounter_valsuccess = 18,
50 	dns_resstatscounter_valnegsuccess = 19,
51 	dns_resstatscounter_valfail = 20,
52 	dns_resstatscounter_dispabort = 21,
53 	dns_resstatscounter_dispsockfail = 22,
54 	dns_resstatscounter_querytimeout = 23,
55 	dns_resstatscounter_queryrtt0 = 24,
56 	dns_resstatscounter_queryrtt1 = 25,
57 	dns_resstatscounter_queryrtt2 = 26,
58 	dns_resstatscounter_queryrtt3 = 27,
59 	dns_resstatscounter_queryrtt4 = 28,
60 	dns_resstatscounter_queryrtt5 = 29,
61 	dns_resstatscounter_nfetch = 30,
62 	dns_resstatscounter_disprequdp = 31,
63 	dns_resstatscounter_dispreqtcp = 32,
64 	dns_resstatscounter_buckets = 33,
65 	dns_resstatscounter_refused = 34,
66 	dns_resstatscounter_cookienew = 35,
67 	dns_resstatscounter_cookieout = 36,
68 	dns_resstatscounter_cookiein = 37,
69 	dns_resstatscounter_cookieok = 38,
70 	dns_resstatscounter_badvers = 39,
71 	dns_resstatscounter_badcookie = 40,
72 	dns_resstatscounter_zonequota = 41,
73 	dns_resstatscounter_serverquota = 42,
74 	dns_resstatscounter_clientquota = 43,
75 	dns_resstatscounter_nextitem = 44,
76 	dns_resstatscounter_priming = 45,
77 	dns_resstatscounter_max = 46,
78 
79 	/*
80 	 * DNSSEC stats.
81 	 */
82 	dns_dnssecstats_asis = 0,
83 	dns_dnssecstats_downcase = 1,
84 	dns_dnssecstats_wildcard = 2,
85 	dns_dnssecstats_fail = 3,
86 
87 	dns_dnssecstats_max = 4,
88 
89 	/*%
90 	 * Zone statistics counters.
91 	 */
92 	dns_zonestatscounter_notifyoutv4 = 0,
93 	dns_zonestatscounter_notifyoutv6 = 1,
94 	dns_zonestatscounter_notifyinv4 = 2,
95 	dns_zonestatscounter_notifyinv6 = 3,
96 	dns_zonestatscounter_notifyrej = 4,
97 	dns_zonestatscounter_soaoutv4 = 5,
98 	dns_zonestatscounter_soaoutv6 = 6,
99 	dns_zonestatscounter_axfrreqv4 = 7,
100 	dns_zonestatscounter_axfrreqv6 = 8,
101 	dns_zonestatscounter_ixfrreqv4 = 9,
102 	dns_zonestatscounter_ixfrreqv6 = 10,
103 	dns_zonestatscounter_xfrsuccess = 11,
104 	dns_zonestatscounter_xfrfail = 12,
105 
106 	dns_zonestatscounter_max = 13,
107 
108 	/*
109 	 * Adb statistics values.
110 	 */
111 	dns_adbstats_nentries = 0,
112 	dns_adbstats_entriescnt = 1,
113 	dns_adbstats_nnames = 2,
114 	dns_adbstats_namescnt = 3,
115 
116 	dns_adbstats_max = 4,
117 
118 	/*
119 	 * Cache statistics values.
120 	 */
121 	dns_cachestatscounter_hits = 1,
122 	dns_cachestatscounter_misses = 2,
123 	dns_cachestatscounter_queryhits = 3,
124 	dns_cachestatscounter_querymisses = 4,
125 	dns_cachestatscounter_deletelru = 5,
126 	dns_cachestatscounter_deletettl = 6,
127 	dns_cachestatscounter_coveringnsec = 7,
128 
129 	dns_cachestatscounter_max = 8,
130 
131 	/*%
132 	 * Query statistics counters (obsolete).
133 	 */
134 	dns_statscounter_success = 0,	/*%< Successful lookup */
135 	dns_statscounter_referral = 1,	/*%< Referral result */
136 	dns_statscounter_nxrrset = 2,	/*%< NXRRSET result */
137 	dns_statscounter_nxdomain = 3,	/*%< NXDOMAIN result */
138 	dns_statscounter_recursion = 4, /*%< Recursion was used */
139 	dns_statscounter_failure = 5,	/*%< Some other failure */
140 	dns_statscounter_duplicate = 6, /*%< Duplicate query */
141 	dns_statscounter_dropped = 7,	/*%< Duplicate query (dropped) */
142 
143 	/*%
144 	 * DNSTAP statistics counters.
145 	 */
146 	dns_dnstapcounter_success = 0,
147 	dns_dnstapcounter_drop = 1,
148 	dns_dnstapcounter_max = 2,
149 
150 	/*
151 	 * Glue cache statistics counters.
152 	 */
153 	dns_gluecachestatscounter_hits_present = 0,
154 	dns_gluecachestatscounter_hits_absent = 1,
155 	dns_gluecachestatscounter_inserts_present = 2,
156 	dns_gluecachestatscounter_inserts_absent = 3,
157 
158 	dns_gluecachestatscounter_max = 4,
159 };
160 
161 /*%
162  * Traffic size statistics counters. Used as isc_statscounter_t values.
163  */
164 enum {
165 	dns_sizecounter_in_0 = 0,
166 	dns_sizecounter_in_16 = 1,
167 	dns_sizecounter_in_32 = 2,
168 	dns_sizecounter_in_48 = 3,
169 	dns_sizecounter_in_64 = 4,
170 	dns_sizecounter_in_80 = 5,
171 	dns_sizecounter_in_96 = 6,
172 	dns_sizecounter_in_112 = 7,
173 	dns_sizecounter_in_128 = 8,
174 	dns_sizecounter_in_144 = 9,
175 	dns_sizecounter_in_160 = 10,
176 	dns_sizecounter_in_176 = 11,
177 	dns_sizecounter_in_192 = 12,
178 	dns_sizecounter_in_208 = 13,
179 	dns_sizecounter_in_224 = 14,
180 	dns_sizecounter_in_240 = 15,
181 	dns_sizecounter_in_256 = 16,
182 	dns_sizecounter_in_272 = 17,
183 	dns_sizecounter_in_288 = 18,
184 
185 	dns_sizecounter_in_max = 19,
186 };
187 
188 enum {
189 	dns_sizecounter_out_0 = 0,
190 	dns_sizecounter_out_16 = 1,
191 	dns_sizecounter_out_32 = 2,
192 	dns_sizecounter_out_48 = 3,
193 	dns_sizecounter_out_64 = 4,
194 	dns_sizecounter_out_80 = 5,
195 	dns_sizecounter_out_96 = 6,
196 	dns_sizecounter_out_112 = 7,
197 	dns_sizecounter_out_128 = 8,
198 	dns_sizecounter_out_144 = 9,
199 	dns_sizecounter_out_160 = 10,
200 	dns_sizecounter_out_176 = 11,
201 	dns_sizecounter_out_192 = 12,
202 	dns_sizecounter_out_208 = 13,
203 	dns_sizecounter_out_224 = 14,
204 	dns_sizecounter_out_240 = 15,
205 	dns_sizecounter_out_256 = 16,
206 	dns_sizecounter_out_272 = 17,
207 	dns_sizecounter_out_288 = 18,
208 	dns_sizecounter_out_304 = 19,
209 	dns_sizecounter_out_320 = 20,
210 	dns_sizecounter_out_336 = 21,
211 	dns_sizecounter_out_352 = 22,
212 	dns_sizecounter_out_368 = 23,
213 	dns_sizecounter_out_384 = 24,
214 	dns_sizecounter_out_400 = 25,
215 	dns_sizecounter_out_416 = 26,
216 	dns_sizecounter_out_432 = 27,
217 	dns_sizecounter_out_448 = 28,
218 	dns_sizecounter_out_464 = 29,
219 	dns_sizecounter_out_480 = 30,
220 	dns_sizecounter_out_496 = 31,
221 	dns_sizecounter_out_512 = 32,
222 	dns_sizecounter_out_528 = 33,
223 	dns_sizecounter_out_544 = 34,
224 	dns_sizecounter_out_560 = 35,
225 	dns_sizecounter_out_576 = 36,
226 	dns_sizecounter_out_592 = 37,
227 	dns_sizecounter_out_608 = 38,
228 	dns_sizecounter_out_624 = 39,
229 	dns_sizecounter_out_640 = 40,
230 	dns_sizecounter_out_656 = 41,
231 	dns_sizecounter_out_672 = 42,
232 	dns_sizecounter_out_688 = 43,
233 	dns_sizecounter_out_704 = 44,
234 	dns_sizecounter_out_720 = 45,
235 	dns_sizecounter_out_736 = 46,
236 	dns_sizecounter_out_752 = 47,
237 	dns_sizecounter_out_768 = 48,
238 	dns_sizecounter_out_784 = 49,
239 	dns_sizecounter_out_800 = 50,
240 	dns_sizecounter_out_816 = 51,
241 	dns_sizecounter_out_832 = 52,
242 	dns_sizecounter_out_848 = 53,
243 	dns_sizecounter_out_864 = 54,
244 	dns_sizecounter_out_880 = 55,
245 	dns_sizecounter_out_896 = 56,
246 	dns_sizecounter_out_912 = 57,
247 	dns_sizecounter_out_928 = 58,
248 	dns_sizecounter_out_944 = 59,
249 	dns_sizecounter_out_960 = 60,
250 	dns_sizecounter_out_976 = 61,
251 	dns_sizecounter_out_992 = 62,
252 	dns_sizecounter_out_1008 = 63,
253 	dns_sizecounter_out_1024 = 64,
254 	dns_sizecounter_out_1040 = 65,
255 	dns_sizecounter_out_1056 = 66,
256 	dns_sizecounter_out_1072 = 67,
257 	dns_sizecounter_out_1088 = 68,
258 	dns_sizecounter_out_1104 = 69,
259 	dns_sizecounter_out_1120 = 70,
260 	dns_sizecounter_out_1136 = 71,
261 	dns_sizecounter_out_1152 = 72,
262 	dns_sizecounter_out_1168 = 73,
263 	dns_sizecounter_out_1184 = 74,
264 	dns_sizecounter_out_1200 = 75,
265 	dns_sizecounter_out_1216 = 76,
266 	dns_sizecounter_out_1232 = 77,
267 	dns_sizecounter_out_1248 = 78,
268 	dns_sizecounter_out_1264 = 79,
269 	dns_sizecounter_out_1280 = 80,
270 	dns_sizecounter_out_1296 = 81,
271 	dns_sizecounter_out_1312 = 82,
272 	dns_sizecounter_out_1328 = 83,
273 	dns_sizecounter_out_1344 = 84,
274 	dns_sizecounter_out_1360 = 85,
275 	dns_sizecounter_out_1376 = 86,
276 	dns_sizecounter_out_1392 = 87,
277 	dns_sizecounter_out_1408 = 88,
278 	dns_sizecounter_out_1424 = 89,
279 	dns_sizecounter_out_1440 = 90,
280 	dns_sizecounter_out_1456 = 91,
281 	dns_sizecounter_out_1472 = 92,
282 	dns_sizecounter_out_1488 = 93,
283 	dns_sizecounter_out_1504 = 94,
284 	dns_sizecounter_out_1520 = 95,
285 	dns_sizecounter_out_1536 = 96,
286 	dns_sizecounter_out_1552 = 97,
287 	dns_sizecounter_out_1568 = 98,
288 	dns_sizecounter_out_1584 = 99,
289 	dns_sizecounter_out_1600 = 100,
290 	dns_sizecounter_out_1616 = 101,
291 	dns_sizecounter_out_1632 = 102,
292 	dns_sizecounter_out_1648 = 103,
293 	dns_sizecounter_out_1664 = 104,
294 	dns_sizecounter_out_1680 = 105,
295 	dns_sizecounter_out_1696 = 106,
296 	dns_sizecounter_out_1712 = 107,
297 	dns_sizecounter_out_1728 = 108,
298 	dns_sizecounter_out_1744 = 109,
299 	dns_sizecounter_out_1760 = 110,
300 	dns_sizecounter_out_1776 = 111,
301 	dns_sizecounter_out_1792 = 112,
302 	dns_sizecounter_out_1808 = 113,
303 	dns_sizecounter_out_1824 = 114,
304 	dns_sizecounter_out_1840 = 115,
305 	dns_sizecounter_out_1856 = 116,
306 	dns_sizecounter_out_1872 = 117,
307 	dns_sizecounter_out_1888 = 118,
308 	dns_sizecounter_out_1904 = 119,
309 	dns_sizecounter_out_1920 = 120,
310 	dns_sizecounter_out_1936 = 121,
311 	dns_sizecounter_out_1952 = 122,
312 	dns_sizecounter_out_1968 = 123,
313 	dns_sizecounter_out_1984 = 124,
314 	dns_sizecounter_out_2000 = 125,
315 	dns_sizecounter_out_2016 = 126,
316 	dns_sizecounter_out_2032 = 127,
317 	dns_sizecounter_out_2048 = 128,
318 	dns_sizecounter_out_2064 = 129,
319 	dns_sizecounter_out_2080 = 130,
320 	dns_sizecounter_out_2096 = 131,
321 	dns_sizecounter_out_2112 = 132,
322 	dns_sizecounter_out_2128 = 133,
323 	dns_sizecounter_out_2144 = 134,
324 	dns_sizecounter_out_2160 = 135,
325 	dns_sizecounter_out_2176 = 136,
326 	dns_sizecounter_out_2192 = 137,
327 	dns_sizecounter_out_2208 = 138,
328 	dns_sizecounter_out_2224 = 139,
329 	dns_sizecounter_out_2240 = 140,
330 	dns_sizecounter_out_2256 = 141,
331 	dns_sizecounter_out_2272 = 142,
332 	dns_sizecounter_out_2288 = 143,
333 	dns_sizecounter_out_2304 = 144,
334 	dns_sizecounter_out_2320 = 145,
335 	dns_sizecounter_out_2336 = 146,
336 	dns_sizecounter_out_2352 = 147,
337 	dns_sizecounter_out_2368 = 148,
338 	dns_sizecounter_out_2384 = 149,
339 	dns_sizecounter_out_2400 = 150,
340 	dns_sizecounter_out_2416 = 151,
341 	dns_sizecounter_out_2432 = 152,
342 	dns_sizecounter_out_2448 = 153,
343 	dns_sizecounter_out_2464 = 154,
344 	dns_sizecounter_out_2480 = 155,
345 	dns_sizecounter_out_2496 = 156,
346 	dns_sizecounter_out_2512 = 157,
347 	dns_sizecounter_out_2528 = 158,
348 	dns_sizecounter_out_2544 = 159,
349 	dns_sizecounter_out_2560 = 160,
350 	dns_sizecounter_out_2576 = 161,
351 	dns_sizecounter_out_2592 = 162,
352 	dns_sizecounter_out_2608 = 163,
353 	dns_sizecounter_out_2624 = 164,
354 	dns_sizecounter_out_2640 = 165,
355 	dns_sizecounter_out_2656 = 166,
356 	dns_sizecounter_out_2672 = 167,
357 	dns_sizecounter_out_2688 = 168,
358 	dns_sizecounter_out_2704 = 169,
359 	dns_sizecounter_out_2720 = 170,
360 	dns_sizecounter_out_2736 = 171,
361 	dns_sizecounter_out_2752 = 172,
362 	dns_sizecounter_out_2768 = 173,
363 	dns_sizecounter_out_2784 = 174,
364 	dns_sizecounter_out_2800 = 175,
365 	dns_sizecounter_out_2816 = 176,
366 	dns_sizecounter_out_2832 = 177,
367 	dns_sizecounter_out_2848 = 178,
368 	dns_sizecounter_out_2864 = 179,
369 	dns_sizecounter_out_2880 = 180,
370 	dns_sizecounter_out_2896 = 181,
371 	dns_sizecounter_out_2912 = 182,
372 	dns_sizecounter_out_2928 = 183,
373 	dns_sizecounter_out_2944 = 184,
374 	dns_sizecounter_out_2960 = 185,
375 	dns_sizecounter_out_2976 = 186,
376 	dns_sizecounter_out_2992 = 187,
377 	dns_sizecounter_out_3008 = 188,
378 	dns_sizecounter_out_3024 = 189,
379 	dns_sizecounter_out_3040 = 190,
380 	dns_sizecounter_out_3056 = 191,
381 	dns_sizecounter_out_3072 = 192,
382 	dns_sizecounter_out_3088 = 193,
383 	dns_sizecounter_out_3104 = 194,
384 	dns_sizecounter_out_3120 = 195,
385 	dns_sizecounter_out_3136 = 196,
386 	dns_sizecounter_out_3152 = 197,
387 	dns_sizecounter_out_3168 = 198,
388 	dns_sizecounter_out_3184 = 199,
389 	dns_sizecounter_out_3200 = 200,
390 	dns_sizecounter_out_3216 = 201,
391 	dns_sizecounter_out_3232 = 202,
392 	dns_sizecounter_out_3248 = 203,
393 	dns_sizecounter_out_3264 = 204,
394 	dns_sizecounter_out_3280 = 205,
395 	dns_sizecounter_out_3296 = 206,
396 	dns_sizecounter_out_3312 = 207,
397 	dns_sizecounter_out_3328 = 208,
398 	dns_sizecounter_out_3344 = 209,
399 	dns_sizecounter_out_3360 = 210,
400 	dns_sizecounter_out_3376 = 211,
401 	dns_sizecounter_out_3392 = 212,
402 	dns_sizecounter_out_3408 = 213,
403 	dns_sizecounter_out_3424 = 214,
404 	dns_sizecounter_out_3440 = 215,
405 	dns_sizecounter_out_3456 = 216,
406 	dns_sizecounter_out_3472 = 217,
407 	dns_sizecounter_out_3488 = 218,
408 	dns_sizecounter_out_3504 = 219,
409 	dns_sizecounter_out_3520 = 220,
410 	dns_sizecounter_out_3536 = 221,
411 	dns_sizecounter_out_3552 = 222,
412 	dns_sizecounter_out_3568 = 223,
413 	dns_sizecounter_out_3584 = 224,
414 	dns_sizecounter_out_3600 = 225,
415 	dns_sizecounter_out_3616 = 226,
416 	dns_sizecounter_out_3632 = 227,
417 	dns_sizecounter_out_3648 = 228,
418 	dns_sizecounter_out_3664 = 229,
419 	dns_sizecounter_out_3680 = 230,
420 	dns_sizecounter_out_3696 = 231,
421 	dns_sizecounter_out_3712 = 232,
422 	dns_sizecounter_out_3728 = 233,
423 	dns_sizecounter_out_3744 = 234,
424 	dns_sizecounter_out_3760 = 235,
425 	dns_sizecounter_out_3776 = 236,
426 	dns_sizecounter_out_3792 = 237,
427 	dns_sizecounter_out_3808 = 238,
428 	dns_sizecounter_out_3824 = 239,
429 	dns_sizecounter_out_3840 = 240,
430 	dns_sizecounter_out_3856 = 241,
431 	dns_sizecounter_out_3872 = 242,
432 	dns_sizecounter_out_3888 = 243,
433 	dns_sizecounter_out_3904 = 244,
434 	dns_sizecounter_out_3920 = 245,
435 	dns_sizecounter_out_3936 = 246,
436 	dns_sizecounter_out_3952 = 247,
437 	dns_sizecounter_out_3968 = 248,
438 	dns_sizecounter_out_3984 = 249,
439 	dns_sizecounter_out_4000 = 250,
440 	dns_sizecounter_out_4016 = 251,
441 	dns_sizecounter_out_4032 = 252,
442 	dns_sizecounter_out_4048 = 253,
443 	dns_sizecounter_out_4064 = 254,
444 	dns_sizecounter_out_4080 = 255,
445 	dns_sizecounter_out_4096 = 256,
446 
447 	dns_sizecounter_out_max = 257
448 };
449 
450 #define DNS_STATS_NCOUNTERS 8
451 
452 #if 0
453 /*%<
454  * Flag(s) for dns_xxxstats_dump().  DNS_STATSDUMP_VERBOSE is obsolete.
455  * ISC_STATSDUMP_VERBOSE should be used instead.  These two values are
456  * intentionally defined to be the same value to ensure binary compatibility.
457  */
458 #define DNS_STATSDUMP_VERBOSE 0x00000001 /*%< dump 0-value counters */
459 #endif					 /* if 0 */
460 
461 /*%<
462  * (Obsoleted)
463  */
464 extern const char *dns_statscounter_names[];
465 
466 /*%
467  * Attributes for statistics counters of RRset and Rdatatype types.
468  *
469  * _OTHERTYPE
470  *	The rdata type is not explicitly supported and the corresponding counter
471  *	is counted for other such types, too.  When this attribute is set,
472  *	the base type is of no use.
473  *
474  * _NXRRSET
475  * 	RRset type counters only.  Indicates the RRset is non existent.
476  *
477  * _NXDOMAIN
478  *	RRset type counters only.  Indicates a non existent name.  When this
479  *	attribute is set, the base type is of no use.
480  *
481  * _STALE
482  *	RRset type counters only.  This indicates a record that is stale
483  *	but may still be served.
484  *
485  * _ANCIENT
486  *	RRset type counters only.  This indicates a record that is marked for
487  *	removal.
488  */
489 #define DNS_RDATASTATSTYPE_ATTR_OTHERTYPE 0x0001
490 #define DNS_RDATASTATSTYPE_ATTR_NXRRSET	  0x0002
491 #define DNS_RDATASTATSTYPE_ATTR_NXDOMAIN  0x0004
492 #define DNS_RDATASTATSTYPE_ATTR_STALE	  0x0008
493 #define DNS_RDATASTATSTYPE_ATTR_ANCIENT	  0x0010
494 
495 /*%<
496  * Conversion macros among dns_rdatatype_t, attributes and isc_statscounter_t.
497  */
498 #define DNS_RDATASTATSTYPE_BASE(type)  ((dns_rdatatype_t)((type) & 0xFFFF))
499 #define DNS_RDATASTATSTYPE_ATTR(type)  ((type) >> 16)
500 #define DNS_RDATASTATSTYPE_VALUE(b, a) (((a) << 16) | (b))
501 
502 /*%
503  * Types of DNSSEC sign statistics operations.
504  */
505 typedef enum {
506 	dns_dnssecsignstats_sign = 1,
507 	dns_dnssecsignstats_refresh = 2
508 } dnssecsignstats_type_t;
509 
510 /*%<
511  * Types of dump callbacks.
512  */
513 typedef void (*dns_generalstats_dumper_t)(isc_statscounter_t, uint64_t, void *);
514 typedef void (*dns_rdatatypestats_dumper_t)(dns_rdatastatstype_t, uint64_t,
515 					    void *);
516 typedef void (*dns_dnssecsignstats_dumper_t)(dns_keytag_t, uint64_t, void *);
517 typedef void (*dns_opcodestats_dumper_t)(dns_opcode_t, uint64_t, void *);
518 typedef void (*dns_rcodestats_dumper_t)(dns_rcode_t, uint64_t, void *);
519 
520 ISC_LANG_BEGINDECLS
521 
522 isc_result_t
523 dns_generalstats_create(isc_mem_t *mctx, dns_stats_t **statsp, int ncounters);
524 /*%<
525  * Create a statistics counter structure of general type.  It counts a general
526  * set of counters indexed by an ID between 0 and ncounters -1.
527  * This function is obsolete.  A more general function, isc_stats_create(),
528  * should be used.
529  *
530  * Requires:
531  *\li	'mctx' must be a valid memory context.
532  *
533  *\li	'statsp' != NULL && '*statsp' == NULL.
534  *
535  * Returns:
536  *\li	ISC_R_SUCCESS	-- all ok
537  *
538  *\li	anything else	-- failure
539  */
540 
541 isc_result_t
542 dns_rdatatypestats_create(isc_mem_t *mctx, dns_stats_t **statsp);
543 /*%<
544  * Create a statistics counter structure per rdatatype.
545  *
546  * Requires:
547  *\li	'mctx' must be a valid memory context.
548  *
549  *\li	'statsp' != NULL && '*statsp' == NULL.
550  *
551  * Returns:
552  *\li	ISC_R_SUCCESS	-- all ok
553  *
554  *\li	anything else	-- failure
555  */
556 
557 isc_result_t
558 dns_rdatasetstats_create(isc_mem_t *mctx, dns_stats_t **statsp);
559 /*%<
560  * Create a statistics counter structure per RRset.
561  *
562  * Requires:
563  *\li	'mctx' must be a valid memory context.
564  *
565  *\li	'statsp' != NULL && '*statsp' == NULL.
566  *
567  * Returns:
568  *\li	ISC_R_SUCCESS	-- all ok
569  *
570  *\li	anything else	-- failure
571  */
572 
573 isc_result_t
574 dns_opcodestats_create(isc_mem_t *mctx, dns_stats_t **statsp);
575 /*%<
576  * Create a statistics counter structure per opcode.
577  *
578  * Requires:
579  *\li	'mctx' must be a valid memory context.
580  *
581  *\li	'statsp' != NULL && '*statsp' == NULL.
582  *
583  * Returns:
584  *\li	ISC_R_SUCCESS	-- all ok
585  *
586  *\li	anything else	-- failure
587  */
588 
589 isc_result_t
590 dns_rcodestats_create(isc_mem_t *mctx, dns_stats_t **statsp);
591 /*%<
592  * Create a statistics counter structure per assigned rcode.
593  *
594  * Requires:
595  *\li	'mctx' must be a valid memory context.
596  *
597  *\li	'statsp' != NULL && '*statsp' == NULL.
598  *
599  * Returns:
600  *\li	ISC_R_SUCCESS	-- all ok
601  *
602  *\li	anything else	-- failure
603  */
604 
605 isc_result_t
606 dns_dnssecsignstats_create(isc_mem_t *mctx, dns_stats_t **statsp);
607 /*%<
608  * Create a statistics counter structure per assigned DNSKEY id.
609  *
610  * Requires:
611  *\li	'mctx' must be a valid memory context.
612  *
613  *\li	'statsp' != NULL && '*statsp' == NULL.
614  *
615  * Returns:
616  *\li	ISC_R_SUCCESS	-- all ok
617  *
618  *\li	anything else	-- failure
619  */
620 
621 void
622 dns_stats_attach(dns_stats_t *stats, dns_stats_t **statsp);
623 /*%<
624  * Attach to a statistics set.
625  *
626  * Requires:
627  *\li	'stats' is a valid dns_stats_t.
628  *
629  *\li	'statsp' != NULL && '*statsp' == NULL
630  */
631 
632 void
633 dns_stats_detach(dns_stats_t **statsp);
634 /*%<
635  * Detaches from the statistics set.
636  *
637  * Requires:
638  *\li	'statsp' != NULL and '*statsp' is a valid dns_stats_t.
639  */
640 
641 void
642 dns_generalstats_increment(dns_stats_t *stats, isc_statscounter_t counter);
643 /*%<
644  * Increment the counter-th counter of stats.  This function is obsolete.
645  * A more general function, isc_stats_increment(), should be used.
646  *
647  * Requires:
648  *\li	'stats' is a valid dns_stats_t created by dns_generalstats_create().
649  *
650  *\li	counter is less than the maximum available ID for the stats specified
651  *	on creation.
652  */
653 
654 void
655 dns_rdatatypestats_increment(dns_stats_t *stats, dns_rdatatype_t type);
656 /*%<
657  * Increment the statistics counter for 'type'.
658  *
659  * Requires:
660  *\li	'stats' is a valid dns_stats_t created by dns_rdatatypestats_create().
661  */
662 
663 void
664 dns_rdatasetstats_increment(dns_stats_t *stats, dns_rdatastatstype_t rrsettype);
665 /*%<
666  * Increment the statistics counter for 'rrsettype'.
667  *
668  * Note: if 'rrsettype' has the _STALE attribute set the corresponding
669  * non-stale counter will be decremented.
670  *
671  * Requires:
672  *\li	'stats' is a valid dns_stats_t created by dns_rdatasetstats_create().
673  */
674 
675 void
676 dns_rdatasetstats_decrement(dns_stats_t *stats, dns_rdatastatstype_t rrsettype);
677 /*%<
678  * Decrement the statistics counter for 'rrsettype'.
679  *
680  * Requires:
681  *\li	'stats' is a valid dns_stats_t created by dns_rdatasetstats_create().
682  */
683 
684 void
685 dns_opcodestats_increment(dns_stats_t *stats, dns_opcode_t code);
686 /*%<
687  * Increment the statistics counter for 'code'.
688  *
689  * Requires:
690  *\li	'stats' is a valid dns_stats_t created by dns_opcodestats_create().
691  */
692 
693 void
694 dns_rcodestats_increment(dns_stats_t *stats, dns_opcode_t code);
695 /*%<
696  * Increment the statistics counter for 'code'.
697  *
698  * Requires:
699  *\li	'stats' is a valid dns_stats_t created by dns_rcodestats_create().
700  */
701 
702 void
703 dns_dnssecsignstats_increment(dns_stats_t *stats, dns_keytag_t id, uint8_t alg,
704 			      dnssecsignstats_type_t operation);
705 /*%<
706  * Increment the statistics counter for the DNSKEY 'id' with algorithm 'alg'.
707  * The 'operation' determines what counter is incremented.
708  *
709  * Requires:
710  *\li	'stats' is a valid dns_stats_t created by dns_dnssecsignstats_create().
711  */
712 
713 void
714 dns_dnssecsignstats_clear(dns_stats_t *stats, dns_keytag_t id, uint8_t alg);
715 /*%<
716  * Clear the statistics counter for the DNSKEY 'id' with algorithm 'alg'.
717  *
718  * Requires:
719  *\li	'stats' is a valid dns_stats_t created by dns_dnssecsignstats_create().
720  */
721 
722 void
723 dns_generalstats_dump(dns_stats_t *stats, dns_generalstats_dumper_t dump_fn,
724 		      void *arg, unsigned int options);
725 /*%<
726  * Dump the current statistics counters in a specified way.  For each counter
727  * in stats, dump_fn is called with its current value and the given argument
728  * arg.  By default counters that have a value of 0 is skipped; if options has
729  * the ISC_STATSDUMP_VERBOSE flag, even such counters are dumped.
730  *
731  * This function is obsolete.  A more general function, isc_stats_dump(),
732  * should be used.
733  *
734  * Requires:
735  *\li	'stats' is a valid dns_stats_t created by dns_generalstats_create().
736  */
737 
738 void
739 dns_rdatatypestats_dump(dns_stats_t *stats, dns_rdatatypestats_dumper_t dump_fn,
740 			void *arg, unsigned int options);
741 /*%<
742  * Dump the current statistics counters in a specified way.  For each counter
743  * in stats, dump_fn is called with the corresponding type in the form of
744  * dns_rdatastatstype_t, the current counter value and the given argument
745  * arg.  By default counters that have a value of 0 is skipped; if options has
746  * the ISC_STATSDUMP_VERBOSE flag, even such counters are dumped.
747  *
748  * Requires:
749  *\li	'stats' is a valid dns_stats_t created by dns_generalstats_create().
750  */
751 
752 void
753 dns_rdatasetstats_dump(dns_stats_t *stats, dns_rdatatypestats_dumper_t dump_fn,
754 		       void *arg, unsigned int options);
755 /*%<
756  * Dump the current statistics counters in a specified way.  For each counter
757  * in stats, dump_fn is called with the corresponding type in the form of
758  * dns_rdatastatstype_t, the current counter value and the given argument
759  * arg.  By default counters that have a value of 0 is skipped; if options has
760  * the ISC_STATSDUMP_VERBOSE flag, even such counters are dumped.
761  *
762  * Requires:
763  *\li	'stats' is a valid dns_stats_t created by dns_generalstats_create().
764  */
765 
766 void
767 dns_dnssecsignstats_dump(dns_stats_t *stats, dnssecsignstats_type_t operation,
768 			 dns_dnssecsignstats_dumper_t dump_fn, void *arg,
769 			 unsigned int options);
770 /*%<
771  * Dump the current statistics counters in a specified way.  For each counter
772  * in stats, dump_fn is called with the corresponding type in the form of
773  * dns_rdatastatstype_t, the current counter value and the given argument
774  * arg.  By default counters that have a value of 0 is skipped; if options has
775  * the ISC_STATSDUMP_VERBOSE flag, even such counters are dumped.
776  *
777  * Requires:
778  *\li	'stats' is a valid dns_stats_t created by dns_generalstats_create().
779  */
780 
781 void
782 dns_opcodestats_dump(dns_stats_t *stats, dns_opcodestats_dumper_t dump_fn,
783 		     void *arg, unsigned int options);
784 /*%<
785  * Dump the current statistics counters in a specified way.  For each counter
786  * in stats, dump_fn is called with the corresponding opcode, the current
787  * counter value and the given argument arg.  By default counters that have a
788  * value of 0 is skipped; if options has the ISC_STATSDUMP_VERBOSE flag, even
789  * such counters are dumped.
790  *
791  * Requires:
792  *\li	'stats' is a valid dns_stats_t created by dns_generalstats_create().
793  */
794 
795 void
796 dns_rcodestats_dump(dns_stats_t *stats, dns_rcodestats_dumper_t dump_fn,
797 		    void *arg, unsigned int options);
798 /*%<
799  * Dump the current statistics counters in a specified way.  For each counter
800  * in stats, dump_fn is called with the corresponding rcode, the current
801  * counter value and the given argument arg.  By default counters that have a
802  * value of 0 is skipped; if options has the ISC_STATSDUMP_VERBOSE flag, even
803  * such counters are dumped.
804  *
805  * Requires:
806  *\li	'stats' is a valid dns_stats_t created by dns_generalstats_create().
807  */
808 
809 isc_result_t
810 dns_stats_alloccounters(isc_mem_t *mctx, uint64_t **ctrp);
811 /*%<
812  * Allocate an array of query statistics counters from the memory
813  * context 'mctx'.
814  *
815  * This function is obsoleted.  Use dns_xxxstats_create() instead.
816  */
817 
818 void
819 dns_stats_freecounters(isc_mem_t *mctx, uint64_t **ctrp);
820 /*%<
821  * Free an array of query statistics counters allocated from the memory
822  * context 'mctx'.
823  *
824  * This function is obsoleted.  Use dns_stats_destroy() instead.
825  */
826 
827 ISC_LANG_ENDDECLS
828