nscd_cfgdef.h revision 0dfdd7f38ea07ffc9a4b245c94185c923f4bb0a3
/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License (the "License").
* You may not use this file except in compliance with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
/*
* Copyright 2007 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
#ifndef _NSCD_CFGDEF_H
#define _NSCD_CFGDEF_H
#pragma ident "%Z%%M% %I% %E% SMI"
#ifdef __cplusplus
extern "C" {
#endif
#include <stddef.h>
#include <limits.h>
#include <nss_dbdefs.h>
#include "nscd_config.h"
#include "nscd_log.h"
#include "cache.h"
/*
* structure used for preliminary checking of an integer
* configuration value
*/
typedef struct {
int min;
int max;
/*
* structure used for preliminary checking of a bitmap
* configuration value
*/
typedef struct {
/*
* structure used for preliminary checking of a string
* configuration value
*/
typedef struct {
int maxlen;
/*
* Per nsswitch database config data
*/
typedef struct {
/*
* Per nsswitch database statistics data
*/
typedef struct {
/*
* global statistics data
*/
typedef struct {
/*
* global config data
*/
typedef struct {
/*
* structure for handling the switch database specific group
* or parameter default
*/
typedef struct nscd_cfg_nsw_spc_default {
char *db;
int group_off;
int param_off;
void *data; /* pointer or link to data */
int data_len;
/*
* name service switch source (repository) table
*/
{ 0, "files" },
{ 1, "ldap" },
{ 2, "nis" },
{ 3, "nisplus" },
{ 4, "dns" },
{ 5, "compat" },
{ 6, "user" },
{ -1, NULL }
};
/*
* name service related smf service table
* (the order of the services should match the order of the source
* listed above, 0: files, 1: ldap, 2: nis, 3: nisplus. dns is
* not needed)
*/
{ 0, "svc:/system/name-service-cache:default"},
{ -1, NULL }
};
/*
* name service database table
*/
{ 0, NSS_DBNAM_PASSWD },
{ 1, NSS_DBNAM_GROUP },
{ 2, NSS_DBNAM_HOSTS },
{ 3, NSS_DBNAM_IPNODES },
{ 4, NSS_DBNAM_EXECATTR },
{ 5, NSS_DBNAM_PROFATTR },
{ 6, NSS_DBNAM_USERATTR },
{ 7, NSS_DBNAM_NETWORKS },
{ 8, NSS_DBNAM_PROTOCOLS },
{ 9, NSS_DBNAM_RPC },
{ 10, NSS_DBNAM_ETHERS },
{ 11, NSS_DBNAM_NETMASKS },
{ 12, NSS_DBNAM_BOOTPARAMS },
{ 13, NSS_DBNAM_PUBLICKEY },
{ 14, NSS_DBNAM_NETGROUP },
{ 15, NSS_DBNAM_SERVICES },
{ 16, NSS_DBNAM_PRINTERS },
{ 17, NSS_DBNAM_AUTHATTR },
{ 18, NSS_DBNAM_PROJECT },
{ 19, NSS_DBNAM_SHADOW },
{ 20, NSS_DBNAM_AUDITUSER },
{ 21, NSS_DBNAM_TSOL_TP },
{ 22, NSS_DBNAM_TSOL_RH },
/* pseudo-databases for the compat backend */
{ 23, NSS_DBNAM_PASSWD_COMPAT },
{ 24, NSS_DBNAM_GROUP_COMPAT },
#define NSS_DBNAM_COMPAT_NUM_DB 5
/*
* pseudo-databases that use the switch policy that is
* configured for NSS_DBNAM_PASSWD_COMPAT
*/
{ 25, NSS_DBNAM_PASSWD },
{ 26, NSS_DBNAM_SHADOW },
{ 27, NSS_DBNAM_AUDITUSER },
{ 28, NSS_DBNAM_USERATTR },
/*
* pseudo-database that uses the switch policy that is
* configured for NSS_DBNAM_GROUP_COMPAT
*/
{ 29, NSS_DBNAM_GROUP },
{ -1, NULL }
};
/*
* A special way to indicate all switch databases
*/
static nscd_cfg_id_t _nscd_cfg_nsw_alldb = {
};
/*
* data for preliminary checking of the log configuration
*/
{nscd_false, PATH_MAX};
{NSCD_LOG_ALL};
/* data for preliminary checking of the switch configuration */
{nscd_true, 128};
/*
* macros for defining the static param table
*/
nfunc_name, vfunc_name) \
{ \
0, 0, 0,\
}
{ \
}
#define NSCD_CFG_PGROUP_DESC_NULL \
{ \
0, 0, 0, \
0, 0, 0, \
}
/* nscd internal cfg_*_notify() cfg_*_verify() and cfg_*_get_stat() */
extern nscd_rc_t _nscd_cfg_log_notify();
extern nscd_rc_t _nscd_cfg_log_verify();
extern nscd_rc_t _nscd_cfg_frontend_notify();
extern nscd_rc_t _nscd_cfg_frontend_verify();
extern nscd_rc_t _nscd_cfg_selfcred_notify();
extern nscd_rc_t _nscd_cfg_selfcred_verify();
extern nscd_rc_t _nscd_cfg_switch_notify();
extern nscd_rc_t _nscd_cfg_switch_verify();
extern nscd_rc_t _nscd_cfg_cache_notify();
extern nscd_rc_t _nscd_cfg_cache_verify();
extern nscd_rc_t _nscd_cfg_log_get_stat();
extern nscd_rc_t _nscd_cfg_switch_get_stat();
extern nscd_rc_t _nscd_cfg_cache_get_stat();
/*
* the following macros are used to indicate a parameter's
* of the group
*/
/*
* the static config parameter description table
*/
static nscd_cfg_param_desc_t _nscd_cfg_param_desc[] = {
"param-group-global-log",
log,
NULL,
"logfile",
log,
"debug-level",
log,
"debug-components",
log,
"param-group-global-frontend",
fe,
NULL,
"common-worker-threads",
fe,
NULL,
"cache-hit-threads",
fe,
NULL,
"param-group-global-selfcred",
sc,
NULL,
"enable-selfcred",
sc,
NULL,
"max-per-user-nscd",
sc,
NULL,
"per-user-nscd-ttl",
sc,
NULL,
"param-group-global-switch",
sw,
NULL,
"global-enable-lookup",
sw,
NULL,
"global-enable-loopback-checking",
sw,
NULL,
"global-check-smf-state-interval",
sw,
NULL,
"param-group-global-cache",
NULL,
"global-enable-cache",
NULL,
/* non-global config param from this point on */
"param-group-frontend",
fe,
NULL,
"worker-thread-per-nsw-db",
fe,
NULL,
"param-group-switch",
sw,
NULL,
"nsw-config-string",
sw,
"nsw-config-database",
sw,
"enable-lookup",
sw,
NULL,
"enable-loopback-checking",
sw,
NULL,
"max-nsw-state-per-db",
sw,
NULL,
"max-nsw-state-per-thread",
sw,
NULL,
"max-getent-ctx-per-db",
sw,
NULL,
"param-group-cache",
NULL,
"enable-cache",
NULL,
"enable-per-user-cache",
NULL,
"avoid-nameservice",
NULL,
"check-files",
NULL,
"check-file-interval",
NULL,
"positive-time-to-live",
NULL,
"negative-time-to-live",
NULL,
"keep-hot-count",
NULL,
"hint-size",
NULL,
"maximum-entries-allowed",
NULL,
"suggested-size",
NULL,
"old-data-ok",
NULL,
};
/*
* defaults for the global configuration
*/
static nscd_cfg_global_data_t nscd_cfg_global_default = {
/*
* nscd_cfg_global_log_t
*/
{
NULL,
NSCD_LOG_LEVEL_NONE, /* debug_level */
NSCD_LOG_CACHE, /* debug_comp */
},
/*
* nscd_cfg_global_frontend_t
*/
{
100, /* common_worker_threads */
100, /* cache_hit_threads */
},
/*
* nscd_cfg_global_selfcred_t
*/
{
nscd_true, /* enable_selfcred */
1000, /* max_per_user_nscd */
120, /* per_user_nscd_ttl: 120 seconds */
},
/*
* nscd_cfg_global_switch_t
*/
{
nscd_true, /* enable_lookup_g */
nscd_false, /* enable_loopback_checking_g */
120, /* check_smf_state_interval_g */
},
/*
* nscd_cfg_global_cache_t
*/
};
/*
* defaults for the per switch database configuration
*/
/*
* nscd_cfg_frontend_t
*/
{
50, /* worker_thread_per_nsw_db */
},
/*
* nscd_cfg_switch_t
*/
{
"nis files", /* nsw_config_string */
NULL, /* nsw_config_db */
nscd_true, /* enable_lookup */
nscd_false, /* enable_loopback_checking */
288, /* max_nsw_state_per_db */
32, /* max_nsw_state_per_thread */
256, /* max_getent_ctx_per_db */
},
/*
* nscd_cfg_cache_t
*/
};
/*
* macros for defining the database specific defaults
*/
{ \
}
{ \
}
#define NSCD_CFG_DB_DEFAULT_NULL \
{ \
}
/*
* shadow, user_attr, and audit_user use the same switch policy
* as that of passwd. exec_attr use that of prof_attr.
*/
static char *nscd_cfg_shadow_cfg_db = NSS_DBNAM_PASSWD;
static char *nscd_cfg_userattr_cfg_db = NSS_DBNAM_PASSWD;
static char *nscd_cfg_auuser_cfg_db = NSS_DBNAM_PASSWD;
static char *nscd_cfg_execattr_cfg_db = NSS_DBNAM_PROFATTR;
/*
* default switch policy for pseudo-databases passwd_compat and
* and group_compa is "nis"
*/
static char *nscd_cfg_def_passwd_compat = NSS_DEFCONF_PASSWD_COMPAT;
static char *nscd_cfg_def_group_compat = NSS_DEFCONF_GROUP_COMPAT;
sw,
NULL,
sw,
NULL,
/*
* switch database specific defaults
*/
sw,
sizeof (nscd_cfg_shadow_cfg_db)),
sw,
sizeof (nscd_cfg_userattr_cfg_db)),
sw,
sizeof (nscd_cfg_auuser_cfg_db)),
sw,
sizeof (nscd_cfg_execattr_cfg_db)),
sw,
sizeof (nscd_cfg_def_passwd_compat)),
sw,
sizeof (nscd_cfg_def_group_compat)),
};
/*
* switch database specific defaults that are linked to
* those of other databases
*/
sw,
0),
sw,
0),
sw,
0),
sw,
0),
};
/*
* macros for defining the static stats table
*/
{ \
0, 0, 0,\
}
{ \
}
#define NSCD_CFG_SGROUP_DESC_NULL \
{ \
0, 0, 0, \
0, 0, 0, \
NULL \
}
/*
* the static statistics description table
*/
static nscd_cfg_stat_desc_t _nscd_cfg_stat_desc[] = {
"stat-group-global-log",
log,
"entries-logged",
log,
"stat-group-global-switch",
sw,
"global-lookup-request-received",
sw,
"global-lookup-request-queued",
sw,
"global-lookup-request-in-progress",
sw,
"global-lookup-request-succeeded",
sw,
"global-lookup-request-failed",
sw,
"global-loopback-nsw-db-skipped",
sw,
"stat-group-global-cache",
"global-cache-hits-on-positive",
"global-cache-hits-on-negative",
"global-cache-misses-on-positive",
"global-cache-misses-on-negative",
"global-cache-queries-queued",
"global-total-cache-entries",
"global-complete-cache-invalidations",
"global-cache-queries-dropped",
"global-cache-hit-rate",
/* non-global stat from this point on */
"stat-group-switch",
"lookup-request-received",
sw,
"lookup-request-queued",
sw,
"lookup-request-in-progress",
sw,
"lookup-request-succeeded",
sw,
"lookup-request-failed",
sw,
"loopback-nsw-db-skipped",
sw,
"stat-group-cache",
"cache-hits-on-positive",
"cache-hits-on-negative",
"cache-misses-on-positive",
"cache-misses-on-negative",
"cache-queries-queued",
"total-cache-entries",
"complete-cache-invalidations",
"cache-hit-rate",
"cache-queries-dropped",
};
/* number of entries in the static tables */
int _nscd_cfg_num_nsw_src =
(sizeof (_nscd_cfg_nsw_src) /
sizeof (_nscd_cfg_nsw_src[0]) - 1);
(sizeof (_nscd_cfg_smf_services) /
sizeof (_nscd_cfg_smf_services[0]) - 1);
/* number of supported nsw databases (including pseudo ones) */
int _nscd_cfg_num_nsw_db_all =
(sizeof (_nscd_cfg_nsw_db) /
sizeof (_nscd_cfg_nsw_db[0]) - 1);
/* number of supported nsw databases (not including pseudo ones) */
int _nscd_cfg_num_nsw_db =
(sizeof (_nscd_cfg_nsw_db) /
sizeof (_nscd_cfg_nsw_db[0]) - 1) -
static int _nscd_cfg_num_param =
(sizeof (_nscd_cfg_param_desc) /
sizeof (_nscd_cfg_param_desc[0]) - 1);
static int _nscd_cfg_num_stat =
(sizeof (_nscd_cfg_stat_desc) /
sizeof (_nscd_cfg_stat_desc[0]) - 1);
(sizeof (_nscd_cfg_nsw_spc_default) /
sizeof (_nscd_cfg_nsw_spc_default[0]) - 1);
(sizeof (_nscd_cfg_nsw_link_default) /
sizeof (_nscd_cfg_nsw_link_default[0]) - 1);
#ifdef __cplusplus
}
#endif
#endif /* _NSCD_CFGDEF_H */