1 /* 2 * CDDL HEADER START 3 * 4 * The contents of this file are subject to the terms of the 5 * Common Development and Distribution License (the "License"). 6 * You may not use this file except in compliance with the License. 7 * 8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9 * or http://www.opensolaris.org/os/licensing. 10 * See the License for the specific language governing permissions 11 * and limitations under the License. 12 * 13 * When distributing Covered Code, include this CDDL HEADER in each 14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15 * If applicable, add the following below this CDDL HEADER, with the 16 * fields enclosed by brackets "[]" replaced with your own identifying 17 * information: Portions Copyright [yyyy] [name of copyright owner] 18 * 19 * CDDL HEADER END 20 */ 21 /* 22 * Copyright 2008 Sun Microsystems, Inc. All rights reserved. 23 * Use is subject to license terms. 24 */ 25 26 #ifndef _NSCD_CFGDEF_H 27 #define _NSCD_CFGDEF_H 28 29 #pragma ident "%Z%%M% %I% %E% SMI" 30 31 #ifdef __cplusplus 32 extern "C" { 33 #endif 34 35 #include <stddef.h> 36 #include <limits.h> 37 #include <nss_dbdefs.h> 38 #include "nscd_config.h" 39 #include "nscd_log.h" 40 #include "cache.h" 41 42 /* 43 * structure used for preliminary checking of an integer 44 * configuration value 45 */ 46 typedef struct { 47 int min; 48 int max; 49 } nscd_cfg_int_check_t; 50 51 /* 52 * structure used for preliminary checking of a bitmap 53 * configuration value 54 */ 55 typedef struct { 56 nscd_cfg_bitmap_t valid_bits; 57 } nscd_cfg_bitmap_check_t; 58 59 /* 60 * structure used for preliminary checking of a string 61 * configuration value 62 */ 63 typedef struct { 64 nscd_bool_t must_not_null; 65 int maxlen; 66 } nscd_cfg_str_check_t; 67 68 /* 69 * Per nsswitch database config data 70 */ 71 typedef struct { 72 nscd_cfg_frontend_t fe; 73 nscd_cfg_switch_t sw; 74 nscd_cfg_cache_t cache; 75 } nscd_cfg_nsw_db_data_t; 76 77 /* 78 * Per nsswitch database statistics data 79 */ 80 typedef struct { 81 nscd_cfg_stat_switch_t sw; 82 nscd_cfg_stat_cache_t cache; 83 } nscd_cfg_stat_nsw_db_data_t; 84 85 /* 86 * global statistics data 87 */ 88 typedef struct { 89 nscd_cfg_stat_global_log_t log; 90 nscd_cfg_stat_global_switch_t sw; 91 nscd_cfg_stat_cache_t cache; 92 } nscd_cfg_stat_global_data_t; 93 94 /* 95 * global config data 96 */ 97 typedef struct { 98 nscd_cfg_global_log_t log; 99 nscd_cfg_global_frontend_t fe; 100 nscd_cfg_global_selfcred_t sc; 101 nscd_cfg_global_switch_t sw; 102 nscd_cfg_global_cache_t cache; 103 } nscd_cfg_global_data_t; 104 105 /* 106 * structure for handling the switch database specific group 107 * or parameter default 108 */ 109 typedef struct nscd_cfg_nsw_spc_default { 110 char *db; 111 int group_off; 112 int param_off; 113 void *data; /* pointer or link to data */ 114 int data_len; 115 } nscd_cfg_nsw_spc_default_t; 116 117 /* 118 * name service switch source (repository) table 119 */ 120 nscd_cfg_id_t _nscd_cfg_nsw_src[] = { 121 { 0, "files" }, 122 { 1, "ldap" }, 123 { 2, "nis" }, 124 { 3, "nisplus" }, 125 { 4, "mdns" }, 126 { 5, "dns" }, 127 { 6, "compat" }, 128 { 7, "user" }, 129 { -1, NULL } 130 }; 131 132 /* 133 * name service related smf service table 134 * (the order of the services should match the order of the source 135 * listed above, 0: files, 1: ldap, 2: nis, 3: nisplus, 4: mdns. 136 * dns is not needed) 137 */ 138 nscd_cfg_id_t _nscd_cfg_smf_services[] = { 139 { 0, "svc:/system/name-service-cache:default"}, 140 { 1, "svc:/network/ldap/client:default" }, 141 { 2, "svc:/network/nis/client:default" }, 142 { 3, "svc:/network/rpc/bind:default" }, 143 { 4, "svc:/network/dns/multicast:default" }, 144 { -1, NULL } 145 }; 146 147 /* 148 * default version for supported sources/backends 149 */ 150 void *_nscd_be_version = NULL; 151 152 /* 153 * name service database table 154 */ 155 nscd_cfg_id_t _nscd_cfg_nsw_db[] = { 156 { 0, NSS_DBNAM_PASSWD }, 157 { 1, NSS_DBNAM_GROUP }, 158 { 2, NSS_DBNAM_HOSTS }, 159 { 3, NSS_DBNAM_IPNODES }, 160 { 4, NSS_DBNAM_EXECATTR }, 161 { 5, NSS_DBNAM_PROFATTR }, 162 { 6, NSS_DBNAM_USERATTR }, 163 { 7, NSS_DBNAM_NETWORKS }, 164 { 8, NSS_DBNAM_PROTOCOLS }, 165 { 9, NSS_DBNAM_RPC }, 166 { 10, NSS_DBNAM_ETHERS }, 167 { 11, NSS_DBNAM_NETMASKS }, 168 { 12, NSS_DBNAM_BOOTPARAMS }, 169 { 13, NSS_DBNAM_PUBLICKEY }, 170 { 14, NSS_DBNAM_NETGROUP }, 171 { 15, NSS_DBNAM_SERVICES }, 172 { 16, NSS_DBNAM_PRINTERS }, 173 { 17, NSS_DBNAM_AUTHATTR }, 174 { 18, NSS_DBNAM_PROJECT }, 175 { 19, NSS_DBNAM_SHADOW }, 176 { 20, NSS_DBNAM_AUDITUSER }, 177 { 21, NSS_DBNAM_TSOL_TP }, 178 { 22, NSS_DBNAM_TSOL_RH }, 179 /* pseudo-databases for the compat backend */ 180 { 23, NSS_DBNAM_PASSWD_COMPAT }, 181 { 24, NSS_DBNAM_GROUP_COMPAT }, 182 #define NSS_DBNAM_COMPAT_NUM_DB 5 183 /* 184 * pseudo-databases that use the switch policy that is 185 * configured for NSS_DBNAM_PASSWD_COMPAT 186 */ 187 { 25, NSS_DBNAM_PASSWD }, 188 { 26, NSS_DBNAM_SHADOW }, 189 { 27, NSS_DBNAM_AUDITUSER }, 190 { 28, NSS_DBNAM_USERATTR }, 191 /* 192 * pseudo-database that uses the switch policy that is 193 * configured for NSS_DBNAM_GROUP_COMPAT 194 */ 195 { 29, NSS_DBNAM_GROUP }, 196 { -1, NULL } 197 }; 198 199 /* 200 * A special way to indicate all switch databases 201 */ 202 static nscd_cfg_id_t _nscd_cfg_nsw_alldb = { 203 NSCD_CFG_NSW_ALLDB_INDEX, 204 NSCD_CFG_NSW_ALLDB 205 }; 206 207 /* 208 * data for preliminary checking of the log configuration 209 */ 210 static nscd_cfg_str_check_t NSCD_CFG_LOGFILE_PCHECK = 211 {nscd_false, PATH_MAX}; 212 static nscd_cfg_bitmap_check_t NSCD_CFG_LOGCOMP_PCHECK = 213 {NSCD_LOG_ALL}; 214 static nscd_cfg_bitmap_check_t NSCD_CFG_LOGLEVEL_PCHECK = 215 {NSCD_LOG_LEVEL_ALL}; 216 217 /* data for preliminary checking of the switch configuration */ 218 static nscd_cfg_str_check_t NSCD_CFG_NSWCFGSTR_PCHECK = 219 {nscd_true, 128}; 220 221 /* 222 * macros for defining the static param table 223 */ 224 #define NSCD_CFG_PGROUP_DESC(pn, type, pflag, gf, g_in_t, pcheck_p,\ 225 nfunc_name, vfunc_name) \ 226 { \ 227 {-1, pn}, type, (NSCD_CFG_PFLAG_GROUP | pflag), \ 228 0, 0, 0,\ 229 NSCD_SIZEOF(g_in_t, gf), offsetof(g_in_t, gf), -1, \ 230 pcheck_p, nfunc_name, vfunc_name \ 231 } 232 233 #define NSCD_CFG_PARAM_DESC(pn, type, pflag, pf, p_in_t, \ 234 gf, g_in_t, pcheck_p, nfunc_name, vfunc_name) \ 235 { \ 236 {-1, pn}, type, pflag, \ 237 NSCD_SIZEOF(p_in_t, pf), offsetof(p_in_t, pf), -1, \ 238 NSCD_SIZEOF(g_in_t, gf), offsetof(g_in_t, gf), -1, \ 239 pcheck_p, nfunc_name, vfunc_name \ 240 } 241 242 #define NSCD_CFG_PGROUP_DESC_NULL \ 243 { \ 244 {-1, NULL}, -1, NSCD_CFG_PFLAG_GROUP, \ 245 0, 0, 0, \ 246 0, 0, 0, \ 247 NULL, NULL, NULL \ 248 } 249 250 /* nscd internal cfg_*_notify() cfg_*_verify() and cfg_*_get_stat() */ 251 extern nscd_rc_t _nscd_cfg_log_notify(); 252 extern nscd_rc_t _nscd_cfg_log_verify(); 253 extern nscd_rc_t _nscd_cfg_frontend_notify(); 254 extern nscd_rc_t _nscd_cfg_frontend_verify(); 255 extern nscd_rc_t _nscd_cfg_selfcred_notify(); 256 extern nscd_rc_t _nscd_cfg_selfcred_verify(); 257 extern nscd_rc_t _nscd_cfg_switch_notify(); 258 extern nscd_rc_t _nscd_cfg_switch_verify(); 259 extern nscd_rc_t _nscd_cfg_cache_notify(); 260 extern nscd_rc_t _nscd_cfg_cache_verify(); 261 extern nscd_rc_t _nscd_cfg_log_get_stat(); 262 extern nscd_rc_t _nscd_cfg_switch_get_stat(); 263 extern nscd_rc_t _nscd_cfg_cache_get_stat(); 264 265 /* 266 * the following macros are used to indicate a parameter's 267 * notify/verify/get_stat functions are the same as those 268 * of the group 269 */ 270 #define NSCD_CFG_FUNC_NOTIFY_AS_GROUP ((nscd_cfg_func_notify_t)-1) 271 #define NSCD_CFG_FUNC_VERIFY_AS_GROUP ((nscd_cfg_func_verify_t)-1) 272 #define NSCD_CFG_FUNC_GET_STAT_AS_GROUP ((nscd_cfg_func_get_stat_t)-1) 273 274 /* 275 * the static config parameter description table 276 */ 277 static nscd_cfg_param_desc_t _nscd_cfg_param_desc[] = { 278 279 NSCD_CFG_PGROUP_DESC( 280 "param-group-global-log", 281 NSCD_CFG_DATA_NONE, 282 NSCD_CFG_PFLAG_INIT_SEND_WHOLE_GROUP | 283 NSCD_CFG_PFLAG_GLOBAL, 284 log, 285 nscd_cfg_global_data_t, 286 NULL, 287 _nscd_cfg_log_notify, 288 _nscd_cfg_log_verify), 289 290 NSCD_CFG_PARAM_DESC( 291 "logfile", 292 NSCD_CFG_DATA_STRING, 293 NSCD_CFG_PFLAG_GLOBAL | 294 NSCD_CFG_PFLAG_VLEN_DATA, 295 logfile, 296 nscd_cfg_global_log_t, 297 log, 298 nscd_cfg_global_data_t, 299 &NSCD_CFG_LOGFILE_PCHECK, 300 NSCD_CFG_FUNC_NOTIFY_AS_GROUP, 301 NSCD_CFG_FUNC_VERIFY_AS_GROUP), 302 303 NSCD_CFG_PARAM_DESC( 304 "debug-level", 305 NSCD_CFG_DATA_BITMAP, 306 NSCD_CFG_PFLAG_GLOBAL, 307 debug_level, 308 nscd_cfg_global_log_t, 309 log, 310 nscd_cfg_global_data_t, 311 &NSCD_CFG_LOGLEVEL_PCHECK, 312 NSCD_CFG_FUNC_NOTIFY_AS_GROUP, 313 NSCD_CFG_FUNC_VERIFY_AS_GROUP), 314 315 NSCD_CFG_PARAM_DESC( 316 "debug-components", 317 NSCD_CFG_DATA_BITMAP, 318 NSCD_CFG_PFLAG_GLOBAL, 319 debug_comp, 320 nscd_cfg_global_log_t, 321 log, 322 nscd_cfg_global_data_t, 323 &NSCD_CFG_LOGCOMP_PCHECK, 324 NSCD_CFG_FUNC_NOTIFY_AS_GROUP, 325 NSCD_CFG_FUNC_VERIFY_AS_GROUP), 326 327 NSCD_CFG_PGROUP_DESC( 328 "param-group-global-frontend", 329 NSCD_CFG_DATA_NONE, 330 NSCD_CFG_PFLAG_INIT_SEND_WHOLE_GROUP | 331 NSCD_CFG_PFLAG_GLOBAL, 332 fe, 333 nscd_cfg_global_data_t, 334 NULL, 335 _nscd_cfg_frontend_notify, 336 _nscd_cfg_frontend_verify), 337 338 NSCD_CFG_PARAM_DESC( 339 "common-worker-threads", 340 NSCD_CFG_DATA_INTEGER, 341 NSCD_CFG_PFLAG_SEND_BIT_SELECTED | 342 NSCD_CFG_PFLAG_GLOBAL, 343 common_worker_threads, 344 nscd_cfg_global_frontend_t, 345 fe, 346 nscd_cfg_global_data_t, 347 NULL, 348 NSCD_CFG_FUNC_NOTIFY_AS_GROUP, 349 NSCD_CFG_FUNC_VERIFY_AS_GROUP), 350 351 NSCD_CFG_PARAM_DESC( 352 "cache-hit-threads", 353 NSCD_CFG_DATA_INTEGER, 354 NSCD_CFG_PFLAG_SEND_BIT_SELECTED | 355 NSCD_CFG_PFLAG_GLOBAL, 356 cache_hit_threads, 357 nscd_cfg_global_frontend_t, 358 fe, 359 nscd_cfg_global_data_t, 360 NULL, 361 NSCD_CFG_FUNC_NOTIFY_AS_GROUP, 362 NSCD_CFG_FUNC_VERIFY_AS_GROUP), 363 364 NSCD_CFG_PGROUP_DESC( 365 "param-group-global-selfcred", 366 NSCD_CFG_DATA_NONE, 367 NSCD_CFG_PFLAG_INIT_SEND_WHOLE_GROUP | 368 NSCD_CFG_PFLAG_GLOBAL, 369 sc, 370 nscd_cfg_global_data_t, 371 NULL, 372 _nscd_cfg_selfcred_notify, 373 _nscd_cfg_selfcred_verify), 374 375 NSCD_CFG_PARAM_DESC( 376 "enable-selfcred", 377 NSCD_CFG_DATA_BOOLEAN, 378 NSCD_CFG_PFLAG_GLOBAL, 379 enable_selfcred, 380 nscd_cfg_global_selfcred_t, 381 sc, 382 nscd_cfg_global_data_t, 383 NULL, 384 NSCD_CFG_FUNC_NOTIFY_AS_GROUP, 385 NSCD_CFG_FUNC_VERIFY_AS_GROUP), 386 387 NSCD_CFG_PARAM_DESC( 388 "max-per-user-nscd", 389 NSCD_CFG_DATA_INTEGER, 390 NSCD_CFG_PFLAG_GLOBAL, 391 max_per_user_nscd, 392 nscd_cfg_global_selfcred_t, 393 sc, 394 nscd_cfg_global_data_t, 395 NULL, 396 NSCD_CFG_FUNC_NOTIFY_AS_GROUP, 397 NSCD_CFG_FUNC_VERIFY_AS_GROUP), 398 399 NSCD_CFG_PARAM_DESC( 400 "per-user-nscd-ttl", 401 NSCD_CFG_DATA_INTEGER, 402 NSCD_CFG_PFLAG_GLOBAL, 403 per_user_nscd_ttl, 404 nscd_cfg_global_selfcred_t, 405 sc, 406 nscd_cfg_global_data_t, 407 NULL, 408 NSCD_CFG_FUNC_NOTIFY_AS_GROUP, 409 NSCD_CFG_FUNC_VERIFY_AS_GROUP), 410 411 NSCD_CFG_PGROUP_DESC( 412 "param-group-global-switch", 413 NSCD_CFG_DATA_NONE, 414 NSCD_CFG_PFLAG_INIT_SEND_WHOLE_GROUP | 415 NSCD_CFG_PFLAG_GLOBAL, 416 sw, 417 nscd_cfg_global_data_t, 418 NULL, 419 _nscd_cfg_switch_notify, 420 _nscd_cfg_switch_verify), 421 422 NSCD_CFG_PARAM_DESC( 423 "global-enable-lookup", 424 NSCD_CFG_DATA_BOOLEAN, 425 NSCD_CFG_PFLAG_GLOBAL, 426 enable_lookup_g, 427 nscd_cfg_global_switch_t, 428 sw, 429 nscd_cfg_global_data_t, 430 NULL, 431 NSCD_CFG_FUNC_NOTIFY_AS_GROUP, 432 NSCD_CFG_FUNC_VERIFY_AS_GROUP), 433 434 NSCD_CFG_PARAM_DESC( 435 "global-enable-loopback-checking", 436 NSCD_CFG_DATA_BOOLEAN, 437 NSCD_CFG_PFLAG_GLOBAL, 438 enable_loopback_checking_g, 439 nscd_cfg_global_switch_t, 440 sw, 441 nscd_cfg_global_data_t, 442 NULL, 443 NSCD_CFG_FUNC_NOTIFY_AS_GROUP, 444 NSCD_CFG_FUNC_VERIFY_AS_GROUP), 445 446 NSCD_CFG_PARAM_DESC( 447 "global-check-smf-state-interval", 448 NSCD_CFG_DATA_INTEGER, 449 NSCD_CFG_PFLAG_GLOBAL, 450 check_smf_state_interval_g, 451 nscd_cfg_global_switch_t, 452 sw, 453 nscd_cfg_global_data_t, 454 NULL, 455 NSCD_CFG_FUNC_NOTIFY_AS_GROUP, 456 NSCD_CFG_FUNC_VERIFY_AS_GROUP), 457 458 NSCD_CFG_PGROUP_DESC( 459 "param-group-global-cache", 460 NSCD_CFG_DATA_NONE, 461 NSCD_CFG_PFLAG_INIT_SEND_WHOLE_GROUP | 462 NSCD_CFG_PFLAG_INIT_SET_ALL_DB | 463 NSCD_CFG_PFLAG_GLOBAL, 464 cache, 465 nscd_cfg_global_data_t, 466 NULL, 467 _nscd_cfg_cache_notify, 468 _nscd_cfg_cache_verify), 469 470 NSCD_CFG_PARAM_DESC( 471 "global-enable-cache", 472 NSCD_CFG_DATA_BOOLEAN, 473 NSCD_CFG_PFLAG_GLOBAL, 474 enable, 475 nscd_cfg_global_cache_t, 476 cache, 477 nscd_cfg_global_data_t, 478 NULL, 479 NSCD_CFG_FUNC_NOTIFY_AS_GROUP, 480 NSCD_CFG_FUNC_VERIFY_AS_GROUP), 481 482 /* non-global config param from this point on */ 483 484 NSCD_CFG_PGROUP_DESC( 485 "param-group-frontend", 486 NSCD_CFG_DATA_NONE, 487 NSCD_CFG_PFLAG_INIT_SEND_WHOLE_GROUP, 488 fe, 489 nscd_cfg_nsw_db_data_t, 490 NULL, 491 _nscd_cfg_frontend_notify, 492 _nscd_cfg_frontend_verify), 493 494 NSCD_CFG_PARAM_DESC( 495 "worker-thread-per-nsw-db", 496 NSCD_CFG_DATA_INTEGER, 497 NSCD_CFG_PFLAG_NONE, 498 worker_thread_per_nsw_db, 499 nscd_cfg_frontend_t, 500 fe, 501 nscd_cfg_nsw_db_data_t, 502 NULL, 503 NSCD_CFG_FUNC_NOTIFY_AS_GROUP, 504 NSCD_CFG_FUNC_VERIFY_AS_GROUP), 505 506 NSCD_CFG_PGROUP_DESC( 507 "param-group-switch", 508 NSCD_CFG_DATA_NONE, 509 NSCD_CFG_PFLAG_INIT_SEND_WHOLE_GROUP | 510 NSCD_CFG_PFLAG_NONE, 511 sw, 512 nscd_cfg_nsw_db_data_t, 513 NULL, 514 _nscd_cfg_switch_notify, 515 _nscd_cfg_switch_verify), 516 517 NSCD_CFG_PARAM_DESC( 518 "nsw-config-string", 519 NSCD_CFG_DATA_STRING, 520 NSCD_CFG_PFLAG_VLEN_DATA | 521 NSCD_CFG_PFLAG_LINKED, 522 nsw_config_string, 523 nscd_cfg_switch_t, 524 sw, 525 nscd_cfg_nsw_db_data_t, 526 &NSCD_CFG_NSWCFGSTR_PCHECK, 527 NSCD_CFG_FUNC_NOTIFY_AS_GROUP, 528 NSCD_CFG_FUNC_VERIFY_AS_GROUP), 529 530 NSCD_CFG_PARAM_DESC( 531 "nsw-config-database", 532 NSCD_CFG_DATA_STRING, 533 NSCD_CFG_PFLAG_VLEN_DATA | 534 NSCD_CFG_PFLAG_HIDDEN, 535 nsw_config_db, 536 nscd_cfg_switch_t, 537 sw, 538 nscd_cfg_nsw_db_data_t, 539 &NSCD_CFG_NSWCFGSTR_PCHECK, 540 NSCD_CFG_FUNC_NOTIFY_AS_GROUP, 541 NSCD_CFG_FUNC_VERIFY_AS_GROUP), 542 543 NSCD_CFG_PARAM_DESC( 544 "enable-lookup", 545 NSCD_CFG_DATA_BOOLEAN, 546 NSCD_CFG_PFLAG_NONE, 547 enable_lookup, 548 nscd_cfg_switch_t, 549 sw, 550 nscd_cfg_nsw_db_data_t, 551 NULL, 552 NSCD_CFG_FUNC_NOTIFY_AS_GROUP, 553 NSCD_CFG_FUNC_VERIFY_AS_GROUP), 554 555 NSCD_CFG_PARAM_DESC( 556 "enable-loopback-checking", 557 NSCD_CFG_DATA_BOOLEAN, 558 NSCD_CFG_PFLAG_NONE, 559 enable_loopback_checking, 560 nscd_cfg_switch_t, 561 sw, 562 nscd_cfg_nsw_db_data_t, 563 NULL, 564 NSCD_CFG_FUNC_NOTIFY_AS_GROUP, 565 NSCD_CFG_FUNC_VERIFY_AS_GROUP), 566 567 NSCD_CFG_PARAM_DESC( 568 "max-nsw-state-per-db", 569 NSCD_CFG_DATA_INTEGER, 570 NSCD_CFG_PFLAG_NONE, 571 max_nsw_state_per_db, 572 nscd_cfg_switch_t, 573 sw, 574 nscd_cfg_nsw_db_data_t, 575 NULL, 576 NSCD_CFG_FUNC_NOTIFY_AS_GROUP, 577 NSCD_CFG_FUNC_VERIFY_AS_GROUP), 578 579 NSCD_CFG_PARAM_DESC( 580 "max-nsw-state-per-thread", 581 NSCD_CFG_DATA_INTEGER, 582 NSCD_CFG_PFLAG_NONE, 583 max_nsw_state_per_thread, 584 nscd_cfg_switch_t, 585 sw, 586 nscd_cfg_nsw_db_data_t, 587 NULL, 588 NSCD_CFG_FUNC_NOTIFY_AS_GROUP, 589 NSCD_CFG_FUNC_VERIFY_AS_GROUP), 590 591 NSCD_CFG_PARAM_DESC( 592 "max-getent-ctx-per-db", 593 NSCD_CFG_DATA_INTEGER, 594 NSCD_CFG_PFLAG_NONE, 595 max_getent_ctx_per_db, 596 nscd_cfg_switch_t, 597 sw, 598 nscd_cfg_nsw_db_data_t, 599 NULL, 600 NSCD_CFG_FUNC_NOTIFY_AS_GROUP, 601 NSCD_CFG_FUNC_VERIFY_AS_GROUP), 602 603 NSCD_CFG_PGROUP_DESC( 604 "param-group-cache", 605 NSCD_CFG_DATA_NONE, 606 NSCD_CFG_PFLAG_INIT_SEND_WHOLE_GROUP, 607 cache, 608 nscd_cfg_nsw_db_data_t, 609 NULL, 610 _nscd_cfg_cache_notify, 611 _nscd_cfg_cache_verify), 612 613 NSCD_CFG_PARAM_DESC( 614 "enable-cache", 615 NSCD_CFG_DATA_BOOLEAN, 616 NSCD_CFG_PFLAG_NONE, 617 enable, 618 nscd_cfg_cache_t, 619 cache, 620 nscd_cfg_nsw_db_data_t, 621 NULL, 622 NSCD_CFG_FUNC_NOTIFY_AS_GROUP, 623 NSCD_CFG_FUNC_VERIFY_AS_GROUP), 624 625 NSCD_CFG_PARAM_DESC( 626 "enable-per-user-cache", 627 NSCD_CFG_DATA_BOOLEAN, 628 NSCD_CFG_PFLAG_NONE, 629 per_user, 630 nscd_cfg_cache_t, 631 cache, 632 nscd_cfg_nsw_db_data_t, 633 NULL, 634 NSCD_CFG_FUNC_NOTIFY_AS_GROUP, 635 NSCD_CFG_FUNC_VERIFY_AS_GROUP), 636 637 NSCD_CFG_PARAM_DESC( 638 "avoid-nameservice", 639 NSCD_CFG_DATA_BOOLEAN, 640 NSCD_CFG_PFLAG_NONE, 641 avoid_ns, 642 nscd_cfg_cache_t, 643 cache, 644 nscd_cfg_nsw_db_data_t, 645 NULL, 646 NSCD_CFG_FUNC_NOTIFY_AS_GROUP, 647 NSCD_CFG_FUNC_VERIFY_AS_GROUP), 648 649 NSCD_CFG_PARAM_DESC( 650 "check-files", 651 NSCD_CFG_DATA_BOOLEAN, 652 NSCD_CFG_PFLAG_NONE, 653 check_files, 654 nscd_cfg_cache_t, 655 cache, 656 nscd_cfg_nsw_db_data_t, 657 NULL, 658 NSCD_CFG_FUNC_NOTIFY_AS_GROUP, 659 NSCD_CFG_FUNC_VERIFY_AS_GROUP), 660 661 NSCD_CFG_PARAM_DESC( 662 "check-file-interval", 663 NSCD_CFG_DATA_INTEGER, 664 NSCD_CFG_PFLAG_NONE, 665 check_interval, 666 nscd_cfg_cache_t, 667 cache, 668 nscd_cfg_nsw_db_data_t, 669 NULL, 670 NSCD_CFG_FUNC_NOTIFY_AS_GROUP, 671 NSCD_CFG_FUNC_VERIFY_AS_GROUP), 672 673 NSCD_CFG_PARAM_DESC( 674 "positive-time-to-live", 675 NSCD_CFG_DATA_INTEGER, 676 NSCD_CFG_PFLAG_NONE, 677 pos_ttl, 678 nscd_cfg_cache_t, 679 cache, 680 nscd_cfg_nsw_db_data_t, 681 NULL, 682 NSCD_CFG_FUNC_NOTIFY_AS_GROUP, 683 NSCD_CFG_FUNC_VERIFY_AS_GROUP), 684 685 NSCD_CFG_PARAM_DESC( 686 "negative-time-to-live", 687 NSCD_CFG_DATA_INTEGER, 688 NSCD_CFG_PFLAG_NONE, 689 neg_ttl, 690 nscd_cfg_cache_t, 691 cache, 692 nscd_cfg_nsw_db_data_t, 693 NULL, 694 NSCD_CFG_FUNC_NOTIFY_AS_GROUP, 695 NSCD_CFG_FUNC_VERIFY_AS_GROUP), 696 697 NSCD_CFG_PARAM_DESC( 698 "keep-hot-count", 699 NSCD_CFG_DATA_INTEGER, 700 NSCD_CFG_PFLAG_NONE, 701 keephot, 702 nscd_cfg_cache_t, 703 cache, 704 nscd_cfg_nsw_db_data_t, 705 NULL, 706 NSCD_CFG_FUNC_NOTIFY_AS_GROUP, 707 NSCD_CFG_FUNC_VERIFY_AS_GROUP), 708 709 NSCD_CFG_PARAM_DESC( 710 "hint-size", 711 NSCD_CFG_DATA_INTEGER, 712 NSCD_CFG_PFLAG_NONE, 713 hint_size, 714 nscd_cfg_cache_t, 715 cache, 716 nscd_cfg_nsw_db_data_t, 717 NULL, 718 NSCD_CFG_FUNC_NOTIFY_AS_GROUP, 719 NSCD_CFG_FUNC_VERIFY_AS_GROUP), 720 721 NSCD_CFG_PARAM_DESC( 722 "maximum-entries-allowed", 723 NSCD_CFG_DATA_INTEGER, 724 NSCD_CFG_PFLAG_NONE, 725 maxentries, 726 nscd_cfg_cache_t, 727 cache, 728 nscd_cfg_nsw_db_data_t, 729 NULL, 730 NSCD_CFG_FUNC_NOTIFY_AS_GROUP, 731 NSCD_CFG_FUNC_VERIFY_AS_GROUP), 732 733 NSCD_CFG_PARAM_DESC( 734 "suggested-size", 735 NSCD_CFG_DATA_INTEGER, 736 NSCD_CFG_PFLAG_OBSOLETE, 737 suggestedsize, 738 nscd_cfg_cache_t, 739 cache, 740 nscd_cfg_nsw_db_data_t, 741 NULL, 742 NSCD_CFG_FUNC_NOTIFY_AS_GROUP, 743 NSCD_CFG_FUNC_VERIFY_AS_GROUP), 744 745 NSCD_CFG_PARAM_DESC( 746 "old-data-ok", 747 NSCD_CFG_DATA_BOOLEAN, 748 NSCD_CFG_PFLAG_OBSOLETE, 749 old_data_ok, 750 nscd_cfg_cache_t, 751 cache, 752 nscd_cfg_nsw_db_data_t, 753 NULL, 754 NSCD_CFG_FUNC_NOTIFY_AS_GROUP, 755 NSCD_CFG_FUNC_VERIFY_AS_GROUP), 756 757 NSCD_CFG_PGROUP_DESC_NULL 758 }; 759 760 /* 761 * defaults for the global configuration 762 */ 763 static nscd_cfg_global_data_t nscd_cfg_global_default = { 764 765 /* 766 * nscd_cfg_global_log_t 767 */ 768 { 769 770 NSCD_CFG_GROUP_INFO_GLOBAL_LOG, 771 NULL, 772 NSCD_LOG_LEVEL_NONE, /* debug_level */ 773 NSCD_LOG_CACHE, /* debug_comp */ 774 775 }, 776 777 /* 778 * nscd_cfg_global_frontend_t 779 */ 780 { 781 782 NSCD_CFG_GROUP_INFO_GLOBAL_FRONTEND, 783 100, /* common_worker_threads */ 784 100, /* cache_hit_threads */ 785 786 }, 787 788 /* 789 * nscd_cfg_global_selfcred_t 790 */ 791 { 792 793 NSCD_CFG_GROUP_INFO_GLOBAL_SELFCRED, 794 nscd_true, /* enable_selfcred */ 795 1000, /* max_per_user_nscd */ 796 120, /* per_user_nscd_ttl: 120 seconds */ 797 798 }, 799 800 /* 801 * nscd_cfg_global_switch_t 802 */ 803 { 804 805 NSCD_CFG_GROUP_INFO_GLOBAL_SWITCH, 806 nscd_true, /* enable_lookup_g */ 807 nscd_false, /* enable_loopback_checking_g */ 808 120, /* check_smf_state_interval_g */ 809 810 }, 811 812 /* 813 * nscd_cfg_global_cache_t 814 */ 815 NSCD_CFG_GLOBAL_CACHE_DEFAULTS 816 }; 817 818 /* 819 * defaults for the per switch database configuration 820 */ 821 static nscd_cfg_nsw_db_data_t nscd_cfg_nsw_db_data_default = { 822 823 /* 824 * nscd_cfg_frontend_t 825 */ 826 { 827 828 NSCD_CFG_GROUP_INFO_FRONTEND, 829 50, /* worker_thread_per_nsw_db */ 830 831 }, 832 833 /* 834 * nscd_cfg_switch_t 835 */ 836 { 837 838 NSCD_CFG_GROUP_INFO_SWITCH, 839 "nis files", /* nsw_config_string */ 840 NULL, /* nsw_config_db */ 841 nscd_true, /* enable_lookup */ 842 nscd_false, /* enable_loopback_checking */ 843 288, /* max_nsw_state_per_db */ 844 32, /* max_nsw_state_per_thread */ 845 256, /* max_getent_ctx_per_db */ 846 847 }, 848 849 /* 850 * nscd_cfg_cache_t 851 */ 852 NSCD_CFG_CACHE_DEFAULTS 853 }; 854 855 /* 856 * macros for defining the database specific defaults 857 */ 858 #define NSCD_CFG_DB_DEFAULT_PARAM(db, gf, pf, gt, defaddr, deflen) \ 859 { \ 860 db, offsetof(nscd_cfg_nsw_db_data_t, gf), \ 861 offsetof(gt, pf), defaddr, deflen \ 862 } 863 864 #define NSCD_CFG_DB_DEFAULT_GROUP(db, gf, defaddr, deflen) \ 865 { \ 866 db, offsetof(nscd_cfg_nsw_db_data_t, gf), \ 867 0, defaddr, deflen \ 868 } 869 870 #define NSCD_CFG_DB_DEFAULT_NULL \ 871 { \ 872 NULL, 0, 0, NULL, 0 \ 873 } 874 875 /* 876 * shadow, user_attr, and audit_user use the same switch policy 877 * as that of passwd. exec_attr use that of prof_attr. 878 */ 879 static char *nscd_cfg_shadow_cfg_db = NSS_DBNAM_PASSWD; 880 static char *nscd_cfg_userattr_cfg_db = NSS_DBNAM_PASSWD; 881 static char *nscd_cfg_auuser_cfg_db = NSS_DBNAM_PASSWD; 882 static char *nscd_cfg_execattr_cfg_db = NSS_DBNAM_PROFATTR; 883 884 /* 885 * default switch policy for pseudo-databases passwd_compat and 886 * and group_compa is "nis" 887 */ 888 static char *nscd_cfg_def_passwd_compat = NSS_DEFCONF_PASSWD_COMPAT; 889 static char *nscd_cfg_def_group_compat = NSS_DEFCONF_GROUP_COMPAT; 890 891 static nscd_cfg_nsw_spc_default_t nscd_cfg_passwd_cfg_link = 892 NSCD_CFG_DB_DEFAULT_PARAM( 893 NSS_DBNAM_PASSWD, 894 sw, 895 nsw_config_string, 896 nscd_cfg_switch_t, 897 NULL, 898 NSCD_SIZEOF(nscd_cfg_switch_t, nsw_config_string)); 899 900 static nscd_cfg_nsw_spc_default_t nscd_cfg_profattr_cfg_link = 901 NSCD_CFG_DB_DEFAULT_PARAM( 902 NSS_DBNAM_PROFATTR, 903 sw, 904 nsw_config_string, 905 nscd_cfg_switch_t, 906 NULL, 907 NSCD_SIZEOF(nscd_cfg_switch_t, nsw_config_string)); 908 909 910 /* 911 * switch database specific defaults 912 */ 913 nscd_cfg_nsw_spc_default_t _nscd_cfg_nsw_spc_default[] = { 914 915 NSCD_CFG_DB_DEFAULT_PARAM( 916 NSS_DBNAM_SHADOW, 917 sw, 918 nsw_config_db, 919 nscd_cfg_switch_t, 920 &nscd_cfg_shadow_cfg_db, 921 sizeof (nscd_cfg_shadow_cfg_db)), 922 923 NSCD_CFG_DB_DEFAULT_PARAM( 924 NSS_DBNAM_USERATTR, 925 sw, 926 nsw_config_db, 927 nscd_cfg_switch_t, 928 &nscd_cfg_userattr_cfg_db, 929 sizeof (nscd_cfg_userattr_cfg_db)), 930 931 NSCD_CFG_DB_DEFAULT_PARAM( 932 NSS_DBNAM_AUDITUSER, 933 sw, 934 nsw_config_db, 935 nscd_cfg_switch_t, 936 &nscd_cfg_auuser_cfg_db, 937 sizeof (nscd_cfg_auuser_cfg_db)), 938 939 NSCD_CFG_DB_DEFAULT_PARAM( 940 NSS_DBNAM_EXECATTR, 941 sw, 942 nsw_config_db, 943 nscd_cfg_switch_t, 944 &nscd_cfg_execattr_cfg_db, 945 sizeof (nscd_cfg_execattr_cfg_db)), 946 947 NSCD_CFG_DB_DEFAULT_PARAM( 948 NSS_DBNAM_PASSWD_COMPAT, 949 sw, 950 nsw_config_string, 951 nscd_cfg_switch_t, 952 &nscd_cfg_def_passwd_compat, 953 sizeof (nscd_cfg_def_passwd_compat)), 954 955 NSCD_CFG_DB_DEFAULT_PARAM( 956 NSS_DBNAM_GROUP_COMPAT, 957 sw, 958 nsw_config_string, 959 nscd_cfg_switch_t, 960 &nscd_cfg_def_group_compat, 961 sizeof (nscd_cfg_def_group_compat)), 962 963 NSCD_CFG_DB_DEFAULT_NULL 964 }; 965 966 /* 967 * switch database specific defaults that are linked to 968 * those of other databases 969 */ 970 nscd_cfg_nsw_spc_default_t _nscd_cfg_nsw_link_default[] = { 971 972 NSCD_CFG_DB_DEFAULT_PARAM( 973 NSS_DBNAM_SHADOW, 974 sw, 975 nsw_config_string, 976 nscd_cfg_switch_t, 977 &nscd_cfg_passwd_cfg_link, 978 0), 979 980 NSCD_CFG_DB_DEFAULT_PARAM( 981 NSS_DBNAM_USERATTR, 982 sw, 983 nsw_config_string, 984 nscd_cfg_switch_t, 985 &nscd_cfg_passwd_cfg_link, 986 0), 987 988 NSCD_CFG_DB_DEFAULT_PARAM( 989 NSS_DBNAM_AUDITUSER, 990 sw, 991 nsw_config_string, 992 nscd_cfg_switch_t, 993 &nscd_cfg_passwd_cfg_link, 994 0), 995 996 NSCD_CFG_DB_DEFAULT_PARAM( 997 NSS_DBNAM_EXECATTR, 998 sw, 999 nsw_config_string, 1000 nscd_cfg_switch_t, 1001 &nscd_cfg_profattr_cfg_link, 1002 0), 1003 1004 NSCD_CFG_DB_DEFAULT_NULL 1005 }; 1006 1007 /* 1008 * macros for defining the static stats table 1009 */ 1010 #define NSCD_CFG_SGROUP_DESC(sn, type, sflag, gi, \ 1011 gf, g_in_t, gsfunc_name) \ 1012 { \ 1013 {-1, sn}, type, NSCD_CFG_SFLAG_GROUP | sflag, gi, \ 1014 0, 0, 0,\ 1015 NSCD_SIZEOF(g_in_t, gf), offsetof(g_in_t, gf), -1, \ 1016 gsfunc_name \ 1017 } 1018 1019 #define NSCD_CFG_STAT_DESC(sn, type, sflag, sf, s_in_t, \ 1020 gf, g_in_t, gsfunc_name) \ 1021 { \ 1022 {-1, sn}, type, sflag, NSCD_CFG_GROUP_INFO_NULL, \ 1023 NSCD_SIZEOF(s_in_t, sf), offsetof(s_in_t, sf), -1, \ 1024 NSCD_SIZEOF(g_in_t, gf), offsetof(g_in_t, gf), -1, \ 1025 gsfunc_name \ 1026 } 1027 1028 #define NSCD_CFG_SGROUP_DESC_NULL \ 1029 { \ 1030 {-1, NULL}, -1, NSCD_CFG_SFLAG_GROUP, NULL, \ 1031 0, 0, 0, \ 1032 0, 0, 0, \ 1033 NULL \ 1034 } 1035 1036 /* 1037 * the static statistics description table 1038 */ 1039 static nscd_cfg_stat_desc_t _nscd_cfg_stat_desc[] = { 1040 1041 NSCD_CFG_SGROUP_DESC( 1042 "stat-group-global-log", 1043 NSCD_CFG_DATA_NONE, 1044 NSCD_CFG_SFLAG_GLOBAL, 1045 NSCD_CFG_STAT_GROUP_INFO_GLOBAL_LOG, 1046 log, 1047 nscd_cfg_stat_global_data_t, 1048 _nscd_cfg_log_get_stat), 1049 1050 NSCD_CFG_STAT_DESC( 1051 "entries-logged", 1052 NSCD_CFG_DATA_INTEGER, 1053 NSCD_CFG_SFLAG_GLOBAL, 1054 entries_logged, 1055 nscd_cfg_stat_global_log_t, 1056 log, 1057 nscd_cfg_stat_global_data_t, 1058 NSCD_CFG_FUNC_GET_STAT_AS_GROUP), 1059 1060 NSCD_CFG_SGROUP_DESC( 1061 "stat-group-global-switch", 1062 NSCD_CFG_DATA_NONE, 1063 NSCD_CFG_SFLAG_GLOBAL, 1064 NSCD_CFG_STAT_GROUP_INFO_GLOBAL_SWITCH, 1065 sw, 1066 nscd_cfg_stat_global_data_t, 1067 _nscd_cfg_switch_get_stat), 1068 1069 NSCD_CFG_STAT_DESC( 1070 "global-lookup-request-received", 1071 NSCD_CFG_DATA_INTEGER, 1072 NSCD_CFG_SFLAG_GLOBAL, 1073 lookup_request_received_g, 1074 nscd_cfg_stat_global_switch_t, 1075 sw, 1076 nscd_cfg_stat_global_data_t, 1077 NSCD_CFG_FUNC_GET_STAT_AS_GROUP), 1078 1079 NSCD_CFG_STAT_DESC( 1080 "global-lookup-request-queued", 1081 NSCD_CFG_DATA_INTEGER, 1082 NSCD_CFG_SFLAG_GLOBAL, 1083 lookup_request_queued_g, 1084 nscd_cfg_stat_global_switch_t, 1085 sw, 1086 nscd_cfg_stat_global_data_t, 1087 NSCD_CFG_FUNC_GET_STAT_AS_GROUP), 1088 1089 NSCD_CFG_STAT_DESC( 1090 "global-lookup-request-in-progress", 1091 NSCD_CFG_DATA_INTEGER, 1092 NSCD_CFG_SFLAG_GLOBAL, 1093 lookup_request_in_progress_g, 1094 nscd_cfg_stat_global_switch_t, 1095 sw, 1096 nscd_cfg_stat_global_data_t, 1097 NSCD_CFG_FUNC_GET_STAT_AS_GROUP), 1098 1099 NSCD_CFG_STAT_DESC( 1100 "global-lookup-request-succeeded", 1101 NSCD_CFG_DATA_INTEGER, 1102 NSCD_CFG_SFLAG_GLOBAL, 1103 lookup_request_succeeded_g, 1104 nscd_cfg_stat_global_switch_t, 1105 sw, 1106 nscd_cfg_stat_global_data_t, 1107 NSCD_CFG_FUNC_GET_STAT_AS_GROUP), 1108 1109 NSCD_CFG_STAT_DESC( 1110 "global-lookup-request-failed", 1111 NSCD_CFG_DATA_INTEGER, 1112 NSCD_CFG_SFLAG_GLOBAL, 1113 lookup_request_failed_g, 1114 nscd_cfg_stat_global_switch_t, 1115 sw, 1116 nscd_cfg_stat_global_data_t, 1117 NSCD_CFG_FUNC_GET_STAT_AS_GROUP), 1118 1119 NSCD_CFG_STAT_DESC( 1120 "global-loopback-nsw-db-skipped", 1121 NSCD_CFG_DATA_INTEGER, 1122 NSCD_CFG_SFLAG_GLOBAL, 1123 loopback_nsw_db_skipped_g, 1124 nscd_cfg_stat_global_switch_t, 1125 sw, 1126 nscd_cfg_stat_global_data_t, 1127 NSCD_CFG_FUNC_GET_STAT_AS_GROUP), 1128 1129 NSCD_CFG_SGROUP_DESC( 1130 "stat-group-global-cache", 1131 NSCD_CFG_DATA_NONE, 1132 NSCD_CFG_SFLAG_GLOBAL, 1133 NSCD_CFG_STAT_GROUP_INFO_CACHE, 1134 cache, 1135 nscd_cfg_stat_global_data_t, 1136 _nscd_cfg_cache_get_stat), 1137 1138 NSCD_CFG_STAT_DESC( 1139 "global-cache-hits-on-positive", 1140 NSCD_CFG_DATA_INTEGER, 1141 NSCD_CFG_SFLAG_GLOBAL, 1142 pos_hits, 1143 nscd_cfg_stat_cache_t, 1144 cache, 1145 nscd_cfg_stat_global_data_t, 1146 NSCD_CFG_FUNC_GET_STAT_AS_GROUP), 1147 1148 NSCD_CFG_STAT_DESC( 1149 "global-cache-hits-on-negative", 1150 NSCD_CFG_DATA_INTEGER, 1151 NSCD_CFG_SFLAG_GLOBAL, 1152 neg_hits, 1153 nscd_cfg_stat_cache_t, 1154 cache, 1155 nscd_cfg_stat_global_data_t, 1156 NSCD_CFG_FUNC_GET_STAT_AS_GROUP), 1157 1158 NSCD_CFG_STAT_DESC( 1159 "global-cache-misses-on-positive", 1160 NSCD_CFG_DATA_INTEGER, 1161 NSCD_CFG_SFLAG_GLOBAL, 1162 pos_misses, 1163 nscd_cfg_stat_cache_t, 1164 cache, 1165 nscd_cfg_stat_global_data_t, 1166 NSCD_CFG_FUNC_GET_STAT_AS_GROUP), 1167 1168 NSCD_CFG_STAT_DESC( 1169 "global-cache-misses-on-negative", 1170 NSCD_CFG_DATA_INTEGER, 1171 NSCD_CFG_SFLAG_GLOBAL, 1172 neg_misses, 1173 nscd_cfg_stat_cache_t, 1174 cache, 1175 nscd_cfg_stat_global_data_t, 1176 NSCD_CFG_FUNC_GET_STAT_AS_GROUP), 1177 1178 NSCD_CFG_STAT_DESC( 1179 "global-cache-queries-queued", 1180 NSCD_CFG_DATA_INTEGER, 1181 NSCD_CFG_SFLAG_GLOBAL, 1182 wait_count, 1183 nscd_cfg_stat_cache_t, 1184 cache, 1185 nscd_cfg_stat_global_data_t, 1186 NSCD_CFG_FUNC_GET_STAT_AS_GROUP), 1187 1188 NSCD_CFG_STAT_DESC( 1189 "global-total-cache-entries", 1190 NSCD_CFG_DATA_INTEGER, 1191 NSCD_CFG_SFLAG_GLOBAL, 1192 entries, 1193 nscd_cfg_stat_cache_t, 1194 cache, 1195 nscd_cfg_stat_global_data_t, 1196 NSCD_CFG_FUNC_GET_STAT_AS_GROUP), 1197 1198 NSCD_CFG_STAT_DESC( 1199 "global-complete-cache-invalidations", 1200 NSCD_CFG_DATA_INTEGER, 1201 NSCD_CFG_SFLAG_GLOBAL, 1202 invalidate_count, 1203 nscd_cfg_stat_cache_t, 1204 cache, 1205 nscd_cfg_stat_global_data_t, 1206 NSCD_CFG_FUNC_GET_STAT_AS_GROUP), 1207 1208 NSCD_CFG_STAT_DESC( 1209 "global-cache-queries-dropped", 1210 NSCD_CFG_DATA_INTEGER, 1211 NSCD_CFG_SFLAG_GLOBAL, 1212 drop_count, 1213 nscd_cfg_stat_cache_t, 1214 cache, 1215 nscd_cfg_stat_global_data_t, 1216 NSCD_CFG_FUNC_GET_STAT_AS_GROUP), 1217 1218 NSCD_CFG_STAT_DESC( 1219 "global-cache-hit-rate", 1220 NSCD_CFG_DATA_PERCENT, 1221 NSCD_CFG_SFLAG_GLOBAL, 1222 hitrate, 1223 nscd_cfg_stat_cache_t, 1224 cache, 1225 nscd_cfg_stat_global_data_t, 1226 NSCD_CFG_FUNC_GET_STAT_AS_GROUP), 1227 1228 /* non-global stat from this point on */ 1229 1230 NSCD_CFG_SGROUP_DESC( 1231 "stat-group-switch", 1232 NSCD_CFG_DATA_NONE, 1233 NSCD_CFG_SFLAG_GROUP, 1234 NSCD_CFG_STAT_GROUP_INFO_SWITCH, 1235 cache, 1236 nscd_cfg_stat_nsw_db_data_t, 1237 _nscd_cfg_switch_get_stat), 1238 1239 NSCD_CFG_STAT_DESC( 1240 "lookup-request-received", 1241 NSCD_CFG_DATA_INTEGER, 1242 NSCD_CFG_SFLAG_NONE, 1243 lookup_request_received, 1244 nscd_cfg_stat_switch_t, 1245 sw, 1246 nscd_cfg_stat_nsw_db_data_t, 1247 NSCD_CFG_FUNC_GET_STAT_AS_GROUP), 1248 1249 NSCD_CFG_STAT_DESC( 1250 "lookup-request-queued", 1251 NSCD_CFG_DATA_INTEGER, 1252 NSCD_CFG_SFLAG_NONE, 1253 lookup_request_queued, 1254 nscd_cfg_stat_switch_t, 1255 sw, 1256 nscd_cfg_stat_nsw_db_data_t, 1257 NSCD_CFG_FUNC_GET_STAT_AS_GROUP), 1258 1259 NSCD_CFG_STAT_DESC( 1260 "lookup-request-in-progress", 1261 NSCD_CFG_DATA_INTEGER, 1262 NSCD_CFG_SFLAG_NONE, 1263 lookup_request_in_progress, 1264 nscd_cfg_stat_switch_t, 1265 sw, 1266 nscd_cfg_stat_nsw_db_data_t, 1267 NSCD_CFG_FUNC_GET_STAT_AS_GROUP), 1268 1269 NSCD_CFG_STAT_DESC( 1270 "lookup-request-succeeded", 1271 NSCD_CFG_DATA_INTEGER, 1272 NSCD_CFG_SFLAG_NONE, 1273 lookup_request_succeeded, 1274 nscd_cfg_stat_switch_t, 1275 sw, 1276 nscd_cfg_stat_nsw_db_data_t, 1277 NSCD_CFG_FUNC_GET_STAT_AS_GROUP), 1278 1279 NSCD_CFG_STAT_DESC( 1280 "lookup-request-failed", 1281 NSCD_CFG_DATA_INTEGER, 1282 NSCD_CFG_SFLAG_NONE, 1283 lookup_request_failed, 1284 nscd_cfg_stat_switch_t, 1285 sw, 1286 nscd_cfg_stat_nsw_db_data_t, 1287 NSCD_CFG_FUNC_GET_STAT_AS_GROUP), 1288 1289 NSCD_CFG_STAT_DESC( 1290 "loopback-nsw-db-skipped", 1291 NSCD_CFG_DATA_INTEGER, 1292 NSCD_CFG_SFLAG_NONE, 1293 loopback_nsw_db_skipped, 1294 nscd_cfg_stat_switch_t, 1295 sw, 1296 nscd_cfg_stat_nsw_db_data_t, 1297 NSCD_CFG_FUNC_GET_STAT_AS_GROUP), 1298 1299 NSCD_CFG_SGROUP_DESC( 1300 "stat-group-cache", 1301 NSCD_CFG_DATA_NONE, 1302 NSCD_CFG_SFLAG_GROUP, 1303 NSCD_CFG_STAT_GROUP_INFO_CACHE, 1304 cache, 1305 nscd_cfg_stat_nsw_db_data_t, 1306 _nscd_cfg_cache_get_stat), 1307 1308 NSCD_CFG_STAT_DESC( 1309 "cache-hits-on-positive", 1310 NSCD_CFG_DATA_INTEGER, 1311 NSCD_CFG_SFLAG_NONE, 1312 pos_hits, 1313 nscd_cfg_stat_cache_t, 1314 cache, 1315 nscd_cfg_stat_nsw_db_data_t, 1316 NSCD_CFG_FUNC_GET_STAT_AS_GROUP), 1317 1318 NSCD_CFG_STAT_DESC( 1319 "cache-hits-on-negative", 1320 NSCD_CFG_DATA_INTEGER, 1321 NSCD_CFG_SFLAG_NONE, 1322 neg_hits, 1323 nscd_cfg_stat_cache_t, 1324 cache, 1325 nscd_cfg_stat_nsw_db_data_t, 1326 NSCD_CFG_FUNC_GET_STAT_AS_GROUP), 1327 1328 NSCD_CFG_STAT_DESC( 1329 "cache-misses-on-positive", 1330 NSCD_CFG_DATA_INTEGER, 1331 NSCD_CFG_SFLAG_NONE, 1332 pos_misses, 1333 nscd_cfg_stat_cache_t, 1334 cache, 1335 nscd_cfg_stat_nsw_db_data_t, 1336 NSCD_CFG_FUNC_GET_STAT_AS_GROUP), 1337 1338 NSCD_CFG_STAT_DESC( 1339 "cache-misses-on-negative", 1340 NSCD_CFG_DATA_INTEGER, 1341 NSCD_CFG_SFLAG_NONE, 1342 neg_misses, 1343 nscd_cfg_stat_cache_t, 1344 cache, 1345 nscd_cfg_stat_nsw_db_data_t, 1346 NSCD_CFG_FUNC_GET_STAT_AS_GROUP), 1347 1348 NSCD_CFG_STAT_DESC( 1349 "cache-queries-queued", 1350 NSCD_CFG_DATA_INTEGER, 1351 NSCD_CFG_SFLAG_NONE, 1352 wait_count, 1353 nscd_cfg_stat_cache_t, 1354 cache, 1355 nscd_cfg_stat_nsw_db_data_t, 1356 NSCD_CFG_FUNC_GET_STAT_AS_GROUP), 1357 1358 NSCD_CFG_STAT_DESC( 1359 "total-cache-entries", 1360 NSCD_CFG_DATA_INTEGER, 1361 NSCD_CFG_SFLAG_NONE, 1362 entries, 1363 nscd_cfg_stat_cache_t, 1364 cache, 1365 nscd_cfg_stat_nsw_db_data_t, 1366 NSCD_CFG_FUNC_GET_STAT_AS_GROUP), 1367 1368 NSCD_CFG_STAT_DESC( 1369 "complete-cache-invalidations", 1370 NSCD_CFG_DATA_INTEGER, 1371 NSCD_CFG_SFLAG_NONE, 1372 invalidate_count, 1373 nscd_cfg_stat_cache_t, 1374 cache, 1375 nscd_cfg_stat_nsw_db_data_t, 1376 NSCD_CFG_FUNC_GET_STAT_AS_GROUP), 1377 1378 NSCD_CFG_STAT_DESC( 1379 "cache-hit-rate", 1380 NSCD_CFG_DATA_PERCENT, 1381 NSCD_CFG_SFLAG_NONE, 1382 hitrate, 1383 nscd_cfg_stat_cache_t, 1384 cache, 1385 nscd_cfg_stat_nsw_db_data_t, 1386 NSCD_CFG_FUNC_GET_STAT_AS_GROUP), 1387 1388 NSCD_CFG_STAT_DESC( 1389 "cache-queries-dropped", 1390 NSCD_CFG_DATA_PERCENT, 1391 NSCD_CFG_SFLAG_NONE, 1392 drop_count, 1393 nscd_cfg_stat_cache_t, 1394 cache, 1395 nscd_cfg_stat_nsw_db_data_t, 1396 NSCD_CFG_FUNC_GET_STAT_AS_GROUP), 1397 1398 1399 NSCD_CFG_SGROUP_DESC_NULL 1400 }; 1401 1402 /* number of entries in the static tables */ 1403 1404 int _nscd_cfg_num_nsw_src = 1405 (sizeof (_nscd_cfg_nsw_src) / 1406 sizeof (_nscd_cfg_nsw_src[0]) - 1); 1407 1408 int _nscd_cfg_num_smf_services = 1409 (sizeof (_nscd_cfg_smf_services) / 1410 sizeof (_nscd_cfg_smf_services[0]) - 1); 1411 1412 /* number of supported nsw databases (including pseudo ones) */ 1413 int _nscd_cfg_num_nsw_db_all = 1414 (sizeof (_nscd_cfg_nsw_db) / 1415 sizeof (_nscd_cfg_nsw_db[0]) - 1); 1416 1417 /* number of supported nsw databases (not including pseudo ones) */ 1418 int _nscd_cfg_num_nsw_db = 1419 (sizeof (_nscd_cfg_nsw_db) / 1420 sizeof (_nscd_cfg_nsw_db[0]) - 1) - 1421 NSS_DBNAM_COMPAT_NUM_DB; 1422 1423 static int _nscd_cfg_num_param = 1424 (sizeof (_nscd_cfg_param_desc) / 1425 sizeof (_nscd_cfg_param_desc[0]) - 1); 1426 1427 static int _nscd_cfg_num_stat = 1428 (sizeof (_nscd_cfg_stat_desc) / 1429 sizeof (_nscd_cfg_stat_desc[0]) - 1); 1430 1431 int _nscd_cfg_num_nsw_default = 1432 (sizeof (_nscd_cfg_nsw_spc_default) / 1433 sizeof (_nscd_cfg_nsw_spc_default[0]) - 1); 1434 1435 int _nscd_cfg_num_link_default = 1436 (sizeof (_nscd_cfg_nsw_link_default) / 1437 sizeof (_nscd_cfg_nsw_link_default[0]) - 1); 1438 1439 #ifdef __cplusplus 1440 } 1441 #endif 1442 1443 #endif /* _NSCD_CFGDEF_H */ 1444