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