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