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