andykimpe / rpms / 389-ds-base

Forked from rpms/389-ds-base 5 months ago
Clone
dc8c34
From 9cc7fade0b5440479b39ddbcb989e5ed220b267f Mon Sep 17 00:00:00 2001
dc8c34
From: Noriko Hosoi <nhosoi@totoro.usersys.redhat.com>
dc8c34
Date: Tue, 6 Nov 2012 18:15:46 -0800
dc8c34
Subject: [PATCH 239/243] Trac Ticket #443 - Deleting attribute present in    
dc8c34
 nsslapd-allowed-to-delete-attrs returns Operations error
dc8c34
dc8c34
https://fedorahosted.org/389/ticket/443
dc8c34
dc8c34
Bug Description: Even if setting a config parameter to nsslapd-
dc8c34
allowed-to-delete-attrs, the value failed to delete if the type
dc8c34
was on|off or integer.
dc8c34
dc8c34
Fix Description: Store all the initial config param values in
dc8c34
ConfigList.  If the attribute value is deleted, reset the initial
dc8c34
value.
dc8c34
(cherry picked from commit 90dd9bb3c1411daca353d055d90618e67aa1fa7e)
dc8c34
(cherry picked from commit 77cb32ceb9548e6a49c55a754a82c5383adb9910)
dc8c34
---
dc8c34
 ldap/servers/slapd/libglobs.c | 928 ++++++++++++++++++++++++++++--------------
dc8c34
 1 file changed, 616 insertions(+), 312 deletions(-)
dc8c34
dc8c34
diff --git a/ldap/servers/slapd/libglobs.c b/ldap/servers/slapd/libglobs.c
dc8c34
index 6711534..a4d9546 100644
dc8c34
--- a/ldap/servers/slapd/libglobs.c
dc8c34
+++ b/ldap/servers/slapd/libglobs.c
dc8c34
@@ -132,6 +132,144 @@ static int config_set_onoff( const char *attrname, char *value,
dc8c34
 static int config_set_schemareplace ( const char *attrname, char *value,
dc8c34
 		char *errorbuf, int apply );
dc8c34
 
dc8c34
+/* Keeping the initial values */
dc8c34
+/* CONFIG_INT/CONFIG_LONG */
dc8c34
+#define DEFAULT_LOG_ROTATIONSYNCHOUR "0"
dc8c34
+#define DEFAULT_LOG_ROTATIONSYNCMIN "0"
dc8c34
+#define DEFAULT_LOG_ROTATIONTIME "1"
dc8c34
+#define DEFAULT_LOG_ACCESS_MAXNUMLOGS "10"
dc8c34
+#define DEFAULT_LOG_MAXNUMLOGS "1"
dc8c34
+#define DEFAULT_LOG_EXPTIME "1"
dc8c34
+#define DEFAULT_LOG_ACCESS_MAXDISKSPACE "500"
dc8c34
+#define DEFAULT_LOG_MAXDISKSPACE "100"
dc8c34
+#define DEFAULT_LOG_MAXLOGSIZE "100"
dc8c34
+#define DEFAULT_LOG_MINFREESPACE "5"
dc8c34
+#define DEFAULT_ACCESSLOGLEVEL "256"
dc8c34
+#define DEFAULT_SIZELIMIT "2000"
dc8c34
+#define DEFAULT_TIMELIMIT "3600"
dc8c34
+#define DEFAULT_PAGEDSIZELIMIT "0"
dc8c34
+#define DEFAULT_IDLE_TIMEOUT "0"
dc8c34
+#define DEFAULT_MAXDESCRIPTORS "1024"
dc8c34
+#define DEFAULT_RESERVE_FDS "64"
dc8c34
+#define DEFAULT_MAX_BERSIZE "0"
dc8c34
+#define DEFAULT_MAX_THREADS "30"
dc8c34
+#define DEFAULT_MAX_THREADS_PER_CONN "5"
dc8c34
+#define DEFAULT_IOBLOCK_TIMEOUT "1800000"
dc8c34
+#define DEFAULT_OUTBOUND_LDAP_IO_TIMEOUT "300000"
dc8c34
+#define DEFAULT_MAX_FILTER_NEST_LEVEL "40"
dc8c34
+#define DEFAULT_GROUPEVALNESTLEVEL "0"
dc8c34
+#define DEFAULT_MAX_SASLIO_SIZE "2097152"
dc8c34
+#define DEFAULT_DISK_THRESHOLD "2097152"
dc8c34
+#define DEFAULT_DISK_GRACE_PERIOD "60"
dc8c34
+#define DEFAULT_LOCAL_SSF "71"
dc8c34
+#define DEFAULT_MIN_SSF "0"
dc8c34
+#define DEFAULT_PW_INHISTORY "6"
dc8c34
+#define DEFAULT_PW_GRACELIMIT "0"
dc8c34
+#define DEFAULT_PW_MINLENGTH "0"
dc8c34
+#define DEFAULT_PW_MINDIGITS "0"
dc8c34
+#define DEFAULT_PW_MINALPHAS "0"
dc8c34
+#define DEFAULT_PW_MINUPPERS "0"
dc8c34
+#define DEFAULT_PW_MINLOWERS "0"
dc8c34
+#define DEFAULT_PW_MINSPECIALS "0"
dc8c34
+#define DEFAULT_PW_MIN8BIT "0"
dc8c34
+#define DEFAULT_PW_MAXREPEATS "0"
dc8c34
+#define DEFAULT_PW_MINCATEGORIES "3"
dc8c34
+#define DEFAULT_PW_MINTOKENLENGTH "3"
dc8c34
+#define DEFAULT_PW_MAXAGE "8640000"
dc8c34
+#define DEFAULT_PW_MINAGE "0"
dc8c34
+#define DEFAULT_PW_WARNING "86400"
dc8c34
+#define DEFAULT_PW_MAXFAILURE "3"
dc8c34
+#define DEFAULT_PW_RESETFAILURECOUNT "600"
dc8c34
+#define DEFAULT_PW_LOCKDURATION "3600"
dc8c34
+#define DEFAULT_NDN_SIZE "20971520"
dc8c34
+#ifdef MEMPOOL_EXPERIMENTAL
dc8c34
+#define DEFAULT_MEMPOOL_MAXFREELIST "1024"
dc8c34
+#endif
dc8c34
+
dc8c34
+/* CONFIG_STRING... */
dc8c34
+#define INIT_ACCESSLOG_MODE "600"
dc8c34
+#define INIT_ERRORLOG_MODE "600"
dc8c34
+#define INIT_AUDITLOG_MODE "600"
dc8c34
+#define INIT_ACCESSLOG_ROTATIONUNIT "day"
dc8c34
+#define INIT_ERRORLOG_ROTATIONUNIT "week"
dc8c34
+#define INIT_AUDITLOG_ROTATIONUNIT "week"
dc8c34
+#define INIT_ACCESSLOG_EXPTIMEUNIT "month"
dc8c34
+#define INIT_ERRORLOG_EXPTIMEUNIT "month"
dc8c34
+#define INIT_AUDITLOG_EXPTIMEUNIT "month"
dc8c34
+#define DEFAULT_DIRECTORY_MANAGER "cn=Directory Manager"
dc8c34
+#define DEFAULT_UIDNUM_TYPE "uidNumber"
dc8c34
+#define DEFAULT_GIDNUM_TYPE "gidNumber"
dc8c34
+#define DEFAULT_LDAPI_SEARCH_BASE "dc=example,dc=com"
dc8c34
+#define DEFAULT_LDAPI_AUTO_DN "cn=peercred,cn=external,cn=auth"
dc8c34
+#define ENTRYUSN_IMPORT_INIT "0"
dc8c34
+#define DEFAULT_ALLOWED_TO_DELETE_ATTRS "nsslapd-listenhost nsslapd-securelistenhost nsslapd-defaultnamingcontext"
dc8c34
+#define SALTED_SHA1_SCHEME_NAME "SSHA"
dc8c34
+
dc8c34
+/* CONFIG_ON_OFF */
dc8c34
+int init_accesslog_rotationsync_enabled;
dc8c34
+int init_errorlog_rotationsync_enabled;
dc8c34
+int init_auditlog_rotationsync_enabled;
dc8c34
+int init_accesslog_logging_enabled;
dc8c34
+int init_accesslogbuffering;
dc8c34
+int init_errorlog_logging_enabled;
dc8c34
+int init_auditlog_logging_enabled;
dc8c34
+int init_auditlog_logging_hide_unhashed_pw;
dc8c34
+int init_csnlogging;
dc8c34
+int init_pw_unlock;
dc8c34
+int init_pw_must_change;
dc8c34
+int init_pwpolicy_local;
dc8c34
+int init_pw_lockout;
dc8c34
+int init_pw_history;
dc8c34
+int init_pw_is_global_policy;
dc8c34
+int init_pw_is_legacy;
dc8c34
+int init_pw_track_update_time;
dc8c34
+int init_pw_change;
dc8c34
+int init_pw_exp;
dc8c34
+int init_pw_syntax;
dc8c34
+int init_schemacheck;
dc8c34
+int init_ds4_compatible_schema;
dc8c34
+int init_schema_ignore_trailing_spaces;
dc8c34
+int init_enquote_sup_oc;
dc8c34
+int init_rewrite_rfc1274;
dc8c34
+int init_syntaxcheck;
dc8c34
+int init_syntaxlogging;
dc8c34
+int init_dn_validate_strict;
dc8c34
+int init_attrname_exceptions;
dc8c34
+int init_return_exact_case;
dc8c34
+int init_result_tweak;
dc8c34
+int init_plugin_track;
dc8c34
+int init_lastmod;
dc8c34
+int init_readonly;
dc8c34
+int init_accesscontrol;
dc8c34
+int init_nagle;
dc8c34
+int init_security;
dc8c34
+int init_ssl_check_hostname;
dc8c34
+int init_ldapi_switch;
dc8c34
+int init_ldapi_bind_switch;
dc8c34
+int init_ldapi_map_entries;
dc8c34
+int init_allow_unauth_binds;
dc8c34
+int init_require_secure_binds;
dc8c34
+int init_minssf_exclude_rootdse;
dc8c34
+int init_force_sasl_external;
dc8c34
+int init_slapi_counters;
dc8c34
+int init_entryusn_global;
dc8c34
+int init_disk_monitoring;
dc8c34
+int init_disk_logging_critical;
dc8c34
+int init_listen_backlog_size;
dc8c34
+int init_ignore_time_skew;
dc8c34
+#if defined (LINUX)
dc8c34
+int init_malloc_mxfast;
dc8c34
+int init_malloc_trim_threshold;
dc8c34
+int init_malloc_mmap_threshold;
dc8c34
+#endif
dc8c34
+#ifdef MEMPOOL_EXPERIMENTAL
dc8c34
+int init_mempool_switch;
dc8c34
+#endif
dc8c34
+
dc8c34
+#define DEFAULT_SSLCLIENTAPTH "off"
dc8c34
+#define DEFAULT_ALLOW_ANON_ACCESS "on"
dc8c34
+#define DEFAULT_VALIDATE_CERT "warn"
dc8c34
+
dc8c34
 static int
dc8c34
 isInt(ConfigVarType type)
dc8c34
 {
dc8c34
@@ -152,584 +290,735 @@ static struct config_get_and_set {
dc8c34
 	void** config_var_addr; /* address of member of slapdFrontendConfig struct */
dc8c34
 	ConfigVarType config_var_type; /* cast to this type when getting */
dc8c34
 	ConfigGetFunc getfunc; /* for special handling */
dc8c34
+	void *initvalue;
dc8c34
 } ConfigList[] = {
dc8c34
 	{CONFIG_AUDITLOG_MODE_ATTRIBUTE, NULL,
dc8c34
 		log_set_mode, SLAPD_AUDIT_LOG,
dc8c34
-		(void**)&global_slapdFrontendConfig.auditlog_mode, CONFIG_STRING, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.auditlog_mode,
dc8c34
+		CONFIG_STRING, NULL, INIT_AUDITLOG_MODE},
dc8c34
 	{CONFIG_AUDITLOG_LOGROTATIONSYNCENABLED_ATTRIBUTE, NULL,
dc8c34
 		log_set_rotationsync_enabled, SLAPD_AUDIT_LOG,
dc8c34
-		(void**)&global_slapdFrontendConfig.auditlog_rotationsync_enabled, CONFIG_ON_OFF, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.auditlog_rotationsync_enabled,
dc8c34
+		CONFIG_ON_OFF, NULL, &init_auditlog_rotationsync_enabled},
dc8c34
 	{CONFIG_AUDITLOG_LOGROTATIONSYNCHOUR_ATTRIBUTE, NULL,
dc8c34
 		log_set_rotationsynchour, SLAPD_AUDIT_LOG,
dc8c34
-		(void**)&global_slapdFrontendConfig.auditlog_rotationsynchour, CONFIG_INT, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.auditlog_rotationsynchour,
dc8c34
+		CONFIG_INT, NULL, DEFAULT_LOG_ROTATIONSYNCHOUR},
dc8c34
 	{CONFIG_AUDITLOG_LOGROTATIONSYNCMIN_ATTRIBUTE, NULL,
dc8c34
 		log_set_rotationsyncmin, SLAPD_AUDIT_LOG,
dc8c34
-		(void**)&global_slapdFrontendConfig.auditlog_rotationsyncmin, CONFIG_INT, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.auditlog_rotationsyncmin,
dc8c34
+		CONFIG_INT, NULL, DEFAULT_LOG_ROTATIONSYNCMIN},
dc8c34
 	{CONFIG_AUDITLOG_LOGROTATIONTIME_ATTRIBUTE, NULL,
dc8c34
 		log_set_rotationtime, SLAPD_AUDIT_LOG,
dc8c34
-		(void**)&global_slapdFrontendConfig.auditlog_rotationtime, CONFIG_INT, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.auditlog_rotationtime,
dc8c34
+		CONFIG_INT, NULL, DEFAULT_LOG_ROTATIONTIME},
dc8c34
 	{CONFIG_ACCESSLOG_MODE_ATTRIBUTE, NULL,
dc8c34
 		log_set_mode, SLAPD_ACCESS_LOG,
dc8c34
-		(void**)&global_slapdFrontendConfig.accesslog_mode, CONFIG_STRING, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.accesslog_mode,
dc8c34
+		CONFIG_STRING, NULL, INIT_ACCESSLOG_MODE},
dc8c34
 	{CONFIG_ACCESSLOG_MAXNUMOFLOGSPERDIR_ATTRIBUTE, NULL,
dc8c34
 		log_set_numlogsperdir, SLAPD_ACCESS_LOG,
dc8c34
-		(void**)&global_slapdFrontendConfig.accesslog_maxnumlogs, CONFIG_INT, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.accesslog_maxnumlogs,
dc8c34
+		CONFIG_INT, NULL, DEFAULT_LOG_ACCESS_MAXNUMLOGS},
dc8c34
 	{CONFIG_LOGLEVEL_ATTRIBUTE, config_set_errorlog_level,
dc8c34
 		NULL, 0,
dc8c34
 		(void**)&global_slapdFrontendConfig.errorloglevel,
dc8c34
-		CONFIG_SPECIAL_ERRORLOGLEVEL, NULL},
dc8c34
+		CONFIG_SPECIAL_ERRORLOGLEVEL, NULL, NULL},
dc8c34
 	{CONFIG_ERRORLOG_LOGGING_ENABLED_ATTRIBUTE, NULL,
dc8c34
 		log_set_logging, SLAPD_ERROR_LOG,
dc8c34
-		(void**)&global_slapdFrontendConfig.errorlog_logging_enabled, CONFIG_ON_OFF, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.errorlog_logging_enabled,
dc8c34
+		CONFIG_ON_OFF, NULL, &init_errorlog_logging_enabled},
dc8c34
 	{CONFIG_ERRORLOG_MODE_ATTRIBUTE, NULL,
dc8c34
 		log_set_mode, SLAPD_ERROR_LOG,
dc8c34
-		(void**)&global_slapdFrontendConfig.errorlog_mode, CONFIG_STRING, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.errorlog_mode,
dc8c34
+		CONFIG_STRING, NULL, INIT_ERRORLOG_MODE},
dc8c34
 	{CONFIG_ERRORLOG_LOGEXPIRATIONTIME_ATTRIBUTE, NULL,
dc8c34
 		log_set_expirationtime, SLAPD_ERROR_LOG,
dc8c34
-		(void**)&global_slapdFrontendConfig.errorlog_exptime, CONFIG_INT, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.errorlog_exptime,
dc8c34
+		CONFIG_INT, NULL, DEFAULT_LOG_EXPTIME},
dc8c34
 	{CONFIG_ACCESSLOG_LOGGING_ENABLED_ATTRIBUTE, NULL,
dc8c34
 		log_set_logging, SLAPD_ACCESS_LOG,
dc8c34
-		(void**)&global_slapdFrontendConfig.accesslog_logging_enabled, CONFIG_ON_OFF, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.accesslog_logging_enabled,
dc8c34
+		CONFIG_ON_OFF, NULL, &init_accesslog_logging_enabled},
dc8c34
 	{CONFIG_PORT_ATTRIBUTE, config_set_port,
dc8c34
 		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.port, CONFIG_INT, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.port,
dc8c34
+		CONFIG_INT, NULL, NULL/* deletion is not allowed */},
dc8c34
 	{CONFIG_WORKINGDIR_ATTRIBUTE, config_set_workingdir,
dc8c34
 		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.workingdir, CONFIG_STRING_OR_EMPTY, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.workingdir,
dc8c34
+		CONFIG_STRING_OR_EMPTY, NULL, NULL/* deletion is not allowed */},
dc8c34
 	{CONFIG_MAXTHREADSPERCONN_ATTRIBUTE, config_set_maxthreadsperconn,
dc8c34
 		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.maxthreadsperconn, CONFIG_INT, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.maxthreadsperconn,
dc8c34
+		CONFIG_INT, NULL, DEFAULT_MAX_THREADS_PER_CONN},
dc8c34
 	{CONFIG_ACCESSLOG_LOGEXPIRATIONTIME_ATTRIBUTE, NULL,
dc8c34
 		log_set_expirationtime, SLAPD_ACCESS_LOG,
dc8c34
-		(void**)&global_slapdFrontendConfig.accesslog_exptime, CONFIG_INT, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.accesslog_exptime,
dc8c34
+		CONFIG_INT, NULL, DEFAULT_LOG_EXPTIME},
dc8c34
 #ifndef _WIN32
dc8c34
 	{CONFIG_LOCALUSER_ATTRIBUTE, config_set_localuser,
dc8c34
 		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.localuser, CONFIG_STRING, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.localuser,
dc8c34
+		CONFIG_STRING, NULL, NULL/* deletion is not allowed */},
dc8c34
 #endif
dc8c34
 	{CONFIG_ERRORLOG_LOGROTATIONSYNCENABLED_ATTRIBUTE, NULL,
dc8c34
 		log_set_rotationsync_enabled, SLAPD_ERROR_LOG,
dc8c34
-		(void**)&global_slapdFrontendConfig.errorlog_rotationsync_enabled, CONFIG_ON_OFF, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.errorlog_rotationsync_enabled,
dc8c34
+		CONFIG_ON_OFF, NULL, &init_errorlog_rotationsync_enabled},
dc8c34
 	{CONFIG_ERRORLOG_LOGROTATIONSYNCHOUR_ATTRIBUTE, NULL,
dc8c34
 		log_set_rotationsynchour, SLAPD_ERROR_LOG,
dc8c34
-		(void**)&global_slapdFrontendConfig.errorlog_rotationsynchour, CONFIG_INT, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.errorlog_rotationsynchour,
dc8c34
+		CONFIG_INT, NULL, DEFAULT_LOG_ROTATIONSYNCHOUR},
dc8c34
 	{CONFIG_ERRORLOG_LOGROTATIONSYNCMIN_ATTRIBUTE, NULL,
dc8c34
 		log_set_rotationsyncmin, SLAPD_ERROR_LOG,
dc8c34
-		(void**)&global_slapdFrontendConfig.errorlog_rotationsyncmin, CONFIG_INT, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.errorlog_rotationsyncmin,
dc8c34
+		CONFIG_INT, NULL, DEFAULT_LOG_ROTATIONSYNCMIN},
dc8c34
 	{CONFIG_ERRORLOG_LOGROTATIONTIME_ATTRIBUTE, NULL,
dc8c34
 		log_set_rotationtime, SLAPD_ERROR_LOG,
dc8c34
-		(void**)&global_slapdFrontendConfig.errorlog_rotationtime, CONFIG_INT, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.errorlog_rotationtime,
dc8c34
+		CONFIG_INT, NULL, DEFAULT_LOG_ROTATIONTIME},
dc8c34
 	{CONFIG_PW_INHISTORY_ATTRIBUTE, config_set_pw_inhistory,
dc8c34
 		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.pw_policy.pw_inhistory, CONFIG_INT, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.pw_policy.pw_inhistory,
dc8c34
+		CONFIG_INT, NULL, DEFAULT_PW_INHISTORY},
dc8c34
 	{CONFIG_PW_STORAGESCHEME_ATTRIBUTE, config_set_pw_storagescheme,
dc8c34
-		NULL, 0, NULL, CONFIG_STRING, (ConfigGetFunc)config_get_pw_storagescheme},
dc8c34
+		NULL, 0, NULL,
dc8c34
+		CONFIG_STRING, (ConfigGetFunc)config_get_pw_storagescheme,
dc8c34
+		SALTED_SHA1_SCHEME_NAME},
dc8c34
 	{CONFIG_PW_UNLOCK_ATTRIBUTE, config_set_pw_unlock,
dc8c34
 		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.pw_policy.pw_unlock, CONFIG_ON_OFF, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.pw_policy.pw_unlock,
dc8c34
+		CONFIG_ON_OFF, NULL, &init_pw_unlock},
dc8c34
 	{CONFIG_PW_GRACELIMIT_ATTRIBUTE, config_set_pw_gracelimit,
dc8c34
 		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.pw_policy.pw_gracelimit, CONFIG_INT, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.pw_policy.pw_gracelimit,
dc8c34
+		CONFIG_INT, NULL, DEFAULT_PW_GRACELIMIT},
dc8c34
 	{CONFIG_ACCESSLOG_LOGROTATIONSYNCENABLED_ATTRIBUTE, NULL,
dc8c34
 		log_set_rotationsync_enabled, SLAPD_ACCESS_LOG,
dc8c34
-		(void**)&global_slapdFrontendConfig.accesslog_rotationsync_enabled, CONFIG_ON_OFF, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.accesslog_rotationsync_enabled,
dc8c34
+		CONFIG_ON_OFF, NULL, &init_accesslog_rotationsync_enabled},
dc8c34
 	{CONFIG_ACCESSLOG_LOGROTATIONSYNCHOUR_ATTRIBUTE, NULL,
dc8c34
 		log_set_rotationsynchour, SLAPD_ACCESS_LOG,
dc8c34
-		(void**)&global_slapdFrontendConfig.accesslog_rotationsynchour, CONFIG_INT, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.accesslog_rotationsynchour,
dc8c34
+		CONFIG_INT, NULL, DEFAULT_LOG_ROTATIONSYNCHOUR},
dc8c34
 	{CONFIG_ACCESSLOG_LOGROTATIONSYNCMIN_ATTRIBUTE, NULL,
dc8c34
 		log_set_rotationsyncmin, SLAPD_ACCESS_LOG,
dc8c34
-		(void**)&global_slapdFrontendConfig.accesslog_rotationsyncmin, CONFIG_INT, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.accesslog_rotationsyncmin,
dc8c34
+		CONFIG_INT, NULL, DEFAULT_LOG_ROTATIONSYNCMIN},
dc8c34
 	{CONFIG_ACCESSLOG_LOGROTATIONTIME_ATTRIBUTE, NULL,
dc8c34
 		log_set_rotationtime, SLAPD_ACCESS_LOG,
dc8c34
-		(void**)&global_slapdFrontendConfig.accesslog_rotationtime, CONFIG_INT, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.accesslog_rotationtime,
dc8c34
+		CONFIG_INT, NULL, DEFAULT_LOG_ROTATIONTIME},
dc8c34
 	{CONFIG_PW_MUSTCHANGE_ATTRIBUTE, config_set_pw_must_change,
dc8c34
 		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.pw_policy.pw_must_change, CONFIG_ON_OFF, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.pw_policy.pw_must_change,
dc8c34
+		CONFIG_ON_OFF, NULL, &init_pw_must_change},
dc8c34
 	{CONFIG_PWPOLICY_LOCAL_ATTRIBUTE, config_set_pwpolicy_local,
dc8c34
 		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.pwpolicy_local, CONFIG_ON_OFF, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.pwpolicy_local,
dc8c34
+		CONFIG_ON_OFF, NULL, &init_pwpolicy_local},
dc8c34
 	{CONFIG_PW_ADMIN_DN_ATTRIBUTE, config_set_pw_admin_dn,
dc8c34
 		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.pw_policy.pw_admin, CONFIG_STRING, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.pw_policy.pw_admin,
dc8c34
+		CONFIG_STRING, NULL, ""},
dc8c34
 	{CONFIG_AUDITLOG_MAXLOGDISKSPACE_ATTRIBUTE, NULL,
dc8c34
 		log_set_maxdiskspace, SLAPD_AUDIT_LOG,
dc8c34
-		(void**)&global_slapdFrontendConfig.auditlog_maxdiskspace, CONFIG_INT, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.auditlog_maxdiskspace,
dc8c34
+		CONFIG_INT, NULL, DEFAULT_LOG_MAXDISKSPACE},
dc8c34
 	{CONFIG_SIZELIMIT_ATTRIBUTE, config_set_sizelimit,
dc8c34
 		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.sizelimit, CONFIG_INT, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.sizelimit,
dc8c34
+		CONFIG_INT, NULL, DEFAULT_SIZELIMIT},
dc8c34
 	{CONFIG_AUDITLOG_MAXLOGSIZE_ATTRIBUTE, NULL,
dc8c34
 		log_set_logsize, SLAPD_AUDIT_LOG,
dc8c34
-		(void**)&global_slapdFrontendConfig.auditlog_maxlogsize, CONFIG_INT, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.auditlog_maxlogsize,
dc8c34
+		CONFIG_INT, NULL, DEFAULT_LOG_MAXLOGSIZE},
dc8c34
 	{CONFIG_PW_WARNING_ATTRIBUTE, config_set_pw_warning,
dc8c34
 		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.pw_policy.pw_warning, CONFIG_LONG, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.pw_policy.pw_warning,
dc8c34
+		CONFIG_LONG, NULL, DEFAULT_PW_WARNING},
dc8c34
 	{CONFIG_READONLY_ATTRIBUTE, config_set_readonly,
dc8c34
 		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.readonly, CONFIG_ON_OFF, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.readonly,
dc8c34
+		CONFIG_ON_OFF, NULL, &init_readonly},
dc8c34
 	{CONFIG_THREADNUMBER_ATTRIBUTE, config_set_threadnumber,
dc8c34
 		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.threadnumber, CONFIG_INT, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.threadnumber,
dc8c34
+		CONFIG_INT, NULL, DEFAULT_MAX_THREADS},
dc8c34
 	{CONFIG_PW_LOCKOUT_ATTRIBUTE, config_set_pw_lockout,
dc8c34
 		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.pw_policy.pw_lockout, CONFIG_ON_OFF, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.pw_policy.pw_lockout,
dc8c34
+		CONFIG_ON_OFF, NULL, &init_pw_lockout},
dc8c34
 	{CONFIG_ENQUOTE_SUP_OC_ATTRIBUTE, config_set_enquote_sup_oc,
dc8c34
 		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.enquote_sup_oc, CONFIG_ON_OFF, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.enquote_sup_oc,
dc8c34
+		CONFIG_ON_OFF, NULL, &init_enquote_sup_oc},
dc8c34
 	{CONFIG_LOCALHOST_ATTRIBUTE, config_set_localhost,
dc8c34
 		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.localhost, CONFIG_STRING, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.localhost,
dc8c34
+		CONFIG_STRING, NULL, NULL/* deletion is not allowed */},
dc8c34
 	{CONFIG_IOBLOCKTIMEOUT_ATTRIBUTE, config_set_ioblocktimeout,
dc8c34
 		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.ioblocktimeout, CONFIG_INT, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.ioblocktimeout,
dc8c34
+		CONFIG_INT, NULL, DEFAULT_IOBLOCK_TIMEOUT},
dc8c34
 	{CONFIG_MAX_FILTER_NEST_LEVEL_ATTRIBUTE, config_set_max_filter_nest_level,
dc8c34
-		NULL, 0, (void**)&global_slapdFrontendConfig.max_filter_nest_level,
dc8c34
-		CONFIG_INT, NULL},
dc8c34
+		NULL, 0,
dc8c34
+		(void**)&global_slapdFrontendConfig.max_filter_nest_level,
dc8c34
+		CONFIG_INT, NULL, DEFAULT_MAX_FILTER_NEST_LEVEL},
dc8c34
 	{CONFIG_ERRORLOG_MAXLOGDISKSPACE_ATTRIBUTE, NULL,
dc8c34
 		log_set_maxdiskspace, SLAPD_ERROR_LOG,
dc8c34
-		(void**)&global_slapdFrontendConfig.errorlog_maxdiskspace, CONFIG_INT, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.errorlog_maxdiskspace,
dc8c34
+		CONFIG_INT, NULL, DEFAULT_LOG_MAXDISKSPACE},
dc8c34
 	{CONFIG_PW_MINLENGTH_ATTRIBUTE, config_set_pw_minlength,
dc8c34
 		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.pw_policy.pw_minlength, CONFIG_INT, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.pw_policy.pw_minlength,
dc8c34
+		CONFIG_INT, NULL, DEFAULT_PW_MINLENGTH},
dc8c34
 	{CONFIG_PW_MINDIGITS_ATTRIBUTE, config_set_pw_mindigits,
dc8c34
 		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.pw_policy.pw_mindigits, CONFIG_INT, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.pw_policy.pw_mindigits,
dc8c34
+		CONFIG_INT, NULL, DEFAULT_PW_MINDIGITS},
dc8c34
 	{CONFIG_PW_MINALPHAS_ATTRIBUTE, config_set_pw_minalphas,
dc8c34
 		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.pw_policy.pw_minalphas, CONFIG_INT, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.pw_policy.pw_minalphas,
dc8c34
+		CONFIG_INT, NULL, DEFAULT_PW_MINALPHAS},
dc8c34
 	{CONFIG_PW_MINUPPERS_ATTRIBUTE, config_set_pw_minuppers,
dc8c34
 		NULL, 0,
dc8c34
-                (void**)&global_slapdFrontendConfig.pw_policy.pw_minuppers, CONFIG_INT, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.pw_policy.pw_minuppers,
dc8c34
+		CONFIG_INT, NULL, DEFAULT_PW_MINUPPERS},
dc8c34
 	{CONFIG_PW_MINLOWERS_ATTRIBUTE, config_set_pw_minlowers,
dc8c34
 		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.pw_policy.pw_minlowers, CONFIG_INT, NULL},
dc8c34
-        {CONFIG_PW_MINSPECIALS_ATTRIBUTE, config_set_pw_minspecials,
dc8c34
-                NULL, 0,
dc8c34
-                (void**)&global_slapdFrontendConfig.pw_policy.pw_minspecials, CONFIG_INT, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.pw_policy.pw_minlowers,
dc8c34
+		CONFIG_INT, NULL, DEFAULT_PW_MINLOWERS},
dc8c34
+	{CONFIG_PW_MINSPECIALS_ATTRIBUTE, config_set_pw_minspecials,
dc8c34
+		NULL, 0,
dc8c34
+		(void**)&global_slapdFrontendConfig.pw_policy.pw_minspecials,
dc8c34
+		CONFIG_INT, NULL, DEFAULT_PW_MINSPECIALS},
dc8c34
 	{CONFIG_PW_MIN8BIT_ATTRIBUTE, config_set_pw_min8bit,
dc8c34
 		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.pw_policy.pw_min8bit, CONFIG_INT, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.pw_policy.pw_min8bit,
dc8c34
+		CONFIG_INT, NULL, DEFAULT_PW_MIN8BIT},
dc8c34
 	{CONFIG_PW_MAXREPEATS_ATTRIBUTE, config_set_pw_maxrepeats,
dc8c34
 		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.pw_policy.pw_maxrepeats, CONFIG_INT, NULL},
dc8c34
-        {CONFIG_PW_MINCATEGORIES_ATTRIBUTE, config_set_pw_mincategories,
dc8c34
-                NULL, 0,
dc8c34
-                (void**)&global_slapdFrontendConfig.pw_policy.pw_mincategories, CONFIG_INT, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.pw_policy.pw_maxrepeats,
dc8c34
+		CONFIG_INT, NULL, DEFAULT_PW_MAXREPEATS},
dc8c34
+	{CONFIG_PW_MINCATEGORIES_ATTRIBUTE, config_set_pw_mincategories,
dc8c34
+		NULL, 0,
dc8c34
+		(void**)&global_slapdFrontendConfig.pw_policy.pw_mincategories,
dc8c34
+		CONFIG_INT, NULL, DEFAULT_PW_MINCATEGORIES},
dc8c34
 	{CONFIG_PW_MINTOKENLENGTH_ATTRIBUTE, config_set_pw_mintokenlength,
dc8c34
 		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.pw_policy.pw_mintokenlength, CONFIG_INT, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.pw_policy.pw_mintokenlength,
dc8c34
+		CONFIG_INT, NULL, DEFAULT_PW_MINTOKENLENGTH},
dc8c34
 	{CONFIG_ERRORLOG_ATTRIBUTE, config_set_errorlog,
dc8c34
 		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.errorlog, CONFIG_STRING_OR_EMPTY, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.errorlog,
dc8c34
+		CONFIG_STRING_OR_EMPTY, NULL, NULL/* deletion is not allowed */},
dc8c34
 	{CONFIG_AUDITLOG_LOGEXPIRATIONTIME_ATTRIBUTE, NULL,
dc8c34
 		log_set_expirationtime, SLAPD_AUDIT_LOG,
dc8c34
-		(void**)&global_slapdFrontendConfig.auditlog_exptime, CONFIG_INT, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.auditlog_exptime,
dc8c34
+		CONFIG_INT, NULL, DEFAULT_LOG_EXPTIME},
dc8c34
 	{CONFIG_SCHEMACHECK_ATTRIBUTE, config_set_schemacheck,
dc8c34
 		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.schemacheck, CONFIG_ON_OFF, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.schemacheck,
dc8c34
+		CONFIG_ON_OFF, NULL, &init_schemacheck},
dc8c34
 	{CONFIG_SYNTAXCHECK_ATTRIBUTE, config_set_syntaxcheck,
dc8c34
 		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.syntaxcheck, CONFIG_ON_OFF, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.syntaxcheck,
dc8c34
+		CONFIG_ON_OFF, NULL, &init_syntaxcheck},
dc8c34
 	{CONFIG_SYNTAXLOGGING_ATTRIBUTE, config_set_syntaxlogging,
dc8c34
 		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.syntaxlogging, CONFIG_ON_OFF, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.syntaxlogging,
dc8c34
+		CONFIG_ON_OFF, NULL, &init_syntaxlogging},
dc8c34
 	{CONFIG_DN_VALIDATE_STRICT_ATTRIBUTE, config_set_dn_validate_strict,
dc8c34
 		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.dn_validate_strict, CONFIG_ON_OFF, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.dn_validate_strict,
dc8c34
+		CONFIG_ON_OFF, NULL, &init_dn_validate_strict},
dc8c34
 	{CONFIG_DS4_COMPATIBLE_SCHEMA_ATTRIBUTE, config_set_ds4_compatible_schema,
dc8c34
 		NULL, 0,
dc8c34
 		(void**)&global_slapdFrontendConfig.ds4_compatible_schema,
dc8c34
-		CONFIG_ON_OFF, NULL},
dc8c34
+		CONFIG_ON_OFF, NULL, &init_ds4_compatible_schema},
dc8c34
 	{CONFIG_SCHEMA_IGNORE_TRAILING_SPACES,
dc8c34
 		config_set_schema_ignore_trailing_spaces, NULL, 0,
dc8c34
 		(void**)&global_slapdFrontendConfig.schema_ignore_trailing_spaces,
dc8c34
-		CONFIG_ON_OFF, NULL},
dc8c34
+		CONFIG_ON_OFF, NULL, &init_schema_ignore_trailing_spaces},
dc8c34
 	{CONFIG_SCHEMAREPLACE_ATTRIBUTE, config_set_schemareplace, NULL, 0,
dc8c34
 		(void**)&global_slapdFrontendConfig.schemareplace,
dc8c34
-		CONFIG_STRING_OR_OFF, NULL},
dc8c34
+		CONFIG_STRING_OR_OFF, NULL, CONFIG_SCHEMAREPLACE_STR_REPLICATION_ONLY},
dc8c34
 	{CONFIG_ACCESSLOG_MAXLOGDISKSPACE_ATTRIBUTE, NULL,
dc8c34
 		log_set_maxdiskspace, SLAPD_ACCESS_LOG,
dc8c34
-		(void**)&global_slapdFrontendConfig.accesslog_maxdiskspace, CONFIG_INT, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.accesslog_maxdiskspace,
dc8c34
+		CONFIG_INT, NULL, DEFAULT_LOG_ACCESS_MAXDISKSPACE},
dc8c34
 	{CONFIG_REFERRAL_ATTRIBUTE, (ConfigSetFunc)config_set_defaultreferral,
dc8c34
 		NULL, 0,
dc8c34
 		(void**)&global_slapdFrontendConfig.defaultreferral,
dc8c34
-		CONFIG_SPECIAL_REFERRALLIST, NULL},
dc8c34
+		CONFIG_SPECIAL_REFERRALLIST, NULL, NULL/* deletion is not allowed */},
dc8c34
 	{CONFIG_PW_MAXFAILURE_ATTRIBUTE, config_set_pw_maxfailure,
dc8c34
 		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.pw_policy.pw_maxfailure, CONFIG_INT, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.pw_policy.pw_maxfailure,
dc8c34
+		CONFIG_INT, NULL, DEFAULT_PW_MAXFAILURE},
dc8c34
 	{CONFIG_ACCESSLOG_ATTRIBUTE, config_set_accesslog,
dc8c34
 		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.accesslog, CONFIG_STRING_OR_EMPTY, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.accesslog,
dc8c34
+		CONFIG_STRING_OR_EMPTY, NULL, NULL/* deletion is not allowed */},
dc8c34
 	{CONFIG_LASTMOD_ATTRIBUTE, config_set_lastmod,
dc8c34
 		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.lastmod, CONFIG_ON_OFF, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.lastmod,
dc8c34
+		CONFIG_ON_OFF, NULL, &init_lastmod},
dc8c34
 	{CONFIG_ROOTPWSTORAGESCHEME_ATTRIBUTE, config_set_rootpwstoragescheme,
dc8c34
-		NULL, 0, NULL, CONFIG_STRING, (ConfigGetFunc)config_get_rootpwstoragescheme},
dc8c34
+		NULL, 0, NULL,
dc8c34
+		CONFIG_STRING, (ConfigGetFunc)config_get_rootpwstoragescheme,
dc8c34
+		SALTED_SHA1_SCHEME_NAME},
dc8c34
 	{CONFIG_PW_HISTORY_ATTRIBUTE, config_set_pw_history,
dc8c34
 		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.pw_policy.pw_history, CONFIG_ON_OFF, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.pw_policy.pw_history,
dc8c34
+		CONFIG_ON_OFF, NULL, &init_pw_history},
dc8c34
 	{CONFIG_SECURITY_ATTRIBUTE, config_set_security,
dc8c34
 		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.security, CONFIG_ON_OFF, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.security,
dc8c34
+		CONFIG_ON_OFF, NULL, &init_security},
dc8c34
 	{CONFIG_PW_MAXAGE_ATTRIBUTE, config_set_pw_maxage,
dc8c34
 		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.pw_policy.pw_maxage, CONFIG_LONG, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.pw_policy.pw_maxage,
dc8c34
+		CONFIG_LONG, NULL, DEFAULT_PW_MAXAGE},
dc8c34
 	{CONFIG_AUDITLOG_LOGROTATIONTIMEUNIT_ATTRIBUTE, NULL,
dc8c34
 		log_set_rotationtimeunit, SLAPD_AUDIT_LOG,
dc8c34
 		(void**)&global_slapdFrontendConfig.auditlog_rotationunit,
dc8c34
-		CONFIG_STRING_OR_UNKNOWN, NULL},
dc8c34
+		CONFIG_STRING_OR_UNKNOWN, NULL, INIT_AUDITLOG_ROTATIONUNIT},
dc8c34
 	{CONFIG_PW_RESETFAILURECOUNT_ATTRIBUTE, config_set_pw_resetfailurecount,
dc8c34
 		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.pw_policy.pw_resetfailurecount, CONFIG_LONG, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.pw_policy.pw_resetfailurecount,
dc8c34
+		CONFIG_LONG, NULL, DEFAULT_PW_RESETFAILURECOUNT},
dc8c34
 	{CONFIG_PW_ISGLOBAL_ATTRIBUTE, config_set_pw_is_global_policy,
dc8c34
 		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.pw_is_global_policy, CONFIG_ON_OFF, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.pw_is_global_policy,
dc8c34
+		CONFIG_ON_OFF, NULL, &init_pw_is_global_policy},
dc8c34
 	{CONFIG_PW_IS_LEGACY, config_set_pw_is_legacy_policy,
dc8c34
 		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.pw_policy.pw_is_legacy, CONFIG_ON_OFF, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.pw_policy.pw_is_legacy,
dc8c34
+		CONFIG_ON_OFF, NULL, &init_pw_is_legacy},
dc8c34
 	{CONFIG_PW_TRACK_LAST_UPDATE_TIME, config_set_pw_track_last_update_time,
dc8c34
 		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.pw_policy.pw_track_update_time, CONFIG_ON_OFF, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.pw_policy.pw_track_update_time,
dc8c34
+		CONFIG_ON_OFF, NULL, &init_pw_track_update_time},
dc8c34
 	{CONFIG_AUDITLOG_MAXNUMOFLOGSPERDIR_ATTRIBUTE, NULL,
dc8c34
 		log_set_numlogsperdir, SLAPD_AUDIT_LOG,
dc8c34
-		(void**)&global_slapdFrontendConfig.auditlog_maxnumlogs, CONFIG_INT, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.auditlog_maxnumlogs,
dc8c34
+		CONFIG_INT, NULL, DEFAULT_LOG_MAXNUMLOGS},
dc8c34
 	{CONFIG_ERRORLOG_LOGEXPIRATIONTIMEUNIT_ATTRIBUTE, NULL,
dc8c34
 		log_set_expirationtimeunit, SLAPD_ERROR_LOG,
dc8c34
 		(void**)&global_slapdFrontendConfig.errorlog_exptimeunit,
dc8c34
-		CONFIG_STRING_OR_UNKNOWN, NULL},
dc8c34
+		CONFIG_STRING_OR_UNKNOWN, NULL, INIT_ERRORLOG_EXPTIMEUNIT},
dc8c34
 	/* errorlog list is read only, so no set func and no config var addr */
dc8c34
-	{CONFIG_ERRORLOG_LIST_ATTRIBUTE, NULL, NULL, 0, NULL,
dc8c34
-		CONFIG_CHARRAY, (ConfigGetFunc)config_get_errorlog_list},
dc8c34
+	{CONFIG_ERRORLOG_LIST_ATTRIBUTE, NULL,
dc8c34
+		NULL, 0, NULL,
dc8c34
+		CONFIG_CHARRAY, (ConfigGetFunc)config_get_errorlog_list, NULL},
dc8c34
 	{CONFIG_GROUPEVALNESTLEVEL_ATTRIBUTE, config_set_groupevalnestlevel,
dc8c34
 		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.groupevalnestlevel, CONFIG_INT, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.groupevalnestlevel,
dc8c34
+		CONFIG_INT, NULL, DEFAULT_GROUPEVALNESTLEVEL},
dc8c34
 	{CONFIG_ACCESSLOG_LOGEXPIRATIONTIMEUNIT_ATTRIBUTE, NULL,
dc8c34
 		log_set_expirationtimeunit, SLAPD_ACCESS_LOG,
dc8c34
 		(void**)&global_slapdFrontendConfig.accesslog_exptimeunit,
dc8c34
-		CONFIG_STRING_OR_UNKNOWN, NULL},
dc8c34
+		CONFIG_STRING_OR_UNKNOWN, NULL, INIT_ACCESSLOG_EXPTIMEUNIT},
dc8c34
 	{CONFIG_ROOTPW_ATTRIBUTE, config_set_rootpw,
dc8c34
 		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.rootpw, CONFIG_STRING, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.rootpw,
dc8c34
+		CONFIG_STRING, NULL, NULL/* deletion is not allowed */},
dc8c34
 	{CONFIG_PW_CHANGE_ATTRIBUTE, config_set_pw_change,
dc8c34
 		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.pw_policy.pw_change, CONFIG_ON_OFF, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.pw_policy.pw_change,
dc8c34
+		CONFIG_ON_OFF, NULL, &init_pw_change},
dc8c34
 	{CONFIG_ACCESSLOGLEVEL_ATTRIBUTE, config_set_accesslog_level,
dc8c34
 		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.accessloglevel, CONFIG_INT, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.accessloglevel,
dc8c34
+		CONFIG_INT, NULL, DEFAULT_ACCESSLOGLEVEL},
dc8c34
 	{CONFIG_ERRORLOG_LOGROTATIONTIMEUNIT_ATTRIBUTE, NULL,
dc8c34
 		log_set_rotationtimeunit, SLAPD_ERROR_LOG,
dc8c34
 		(void**)&global_slapdFrontendConfig.errorlog_rotationunit,
dc8c34
-		CONFIG_STRING_OR_UNKNOWN, NULL},
dc8c34
+		CONFIG_STRING_OR_UNKNOWN, NULL, INIT_ERRORLOG_ROTATIONUNIT},
dc8c34
 	{CONFIG_SECUREPORT_ATTRIBUTE, config_set_secureport,
dc8c34
 		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.secureport, CONFIG_INT, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.secureport,
dc8c34
+		CONFIG_INT, NULL, NULL/* deletion is not allowed */},
dc8c34
 	{CONFIG_BASEDN_ATTRIBUTE, config_set_basedn,
dc8c34
 		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.certmap_basedn, CONFIG_STRING, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.certmap_basedn,
dc8c34
+		CONFIG_STRING, NULL, NULL/* deletion is not allowed */},
dc8c34
 	{CONFIG_TIMELIMIT_ATTRIBUTE, config_set_timelimit,
dc8c34
 		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.timelimit, CONFIG_INT, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.timelimit,
dc8c34
+		CONFIG_INT, NULL, DEFAULT_TIMELIMIT},
dc8c34
 	{CONFIG_ERRORLOG_MAXLOGSIZE_ATTRIBUTE, NULL,
dc8c34
 		log_set_logsize, SLAPD_ERROR_LOG,
dc8c34
-		(void**)&global_slapdFrontendConfig.errorlog_maxlogsize, CONFIG_INT, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.errorlog_maxlogsize,
dc8c34
+		CONFIG_INT, NULL, DEFAULT_LOG_MAXLOGSIZE},
dc8c34
 	{CONFIG_RESERVEDESCRIPTORS_ATTRIBUTE, config_set_reservedescriptors,
dc8c34
 		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.reservedescriptors, CONFIG_INT, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.reservedescriptors,
dc8c34
+		CONFIG_INT, NULL, DEFAULT_RESERVE_FDS},
dc8c34
 	/* access log list is read only, no set func, no config var addr */
dc8c34
-	{CONFIG_ACCESSLOG_LIST_ATTRIBUTE, NULL, NULL, 0,
dc8c34
-		NULL, CONFIG_CHARRAY, (ConfigGetFunc)config_get_accesslog_list},
dc8c34
+	{CONFIG_ACCESSLOG_LIST_ATTRIBUTE, NULL,
dc8c34
+		NULL, 0, NULL,
dc8c34
+		CONFIG_CHARRAY, (ConfigGetFunc)config_get_accesslog_list, NULL},
dc8c34
 	{CONFIG_SVRTAB_ATTRIBUTE, config_set_srvtab,
dc8c34
 		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.srvtab, CONFIG_STRING, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.srvtab,
dc8c34
+		CONFIG_STRING, NULL, ""},
dc8c34
 	{CONFIG_PW_EXP_ATTRIBUTE, config_set_pw_exp,
dc8c34
 		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.pw_policy.pw_exp, CONFIG_ON_OFF, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.pw_policy.pw_exp,
dc8c34
+		CONFIG_ON_OFF, NULL, &init_pw_exp},
dc8c34
 	{CONFIG_ACCESSCONTROL_ATTRIBUTE, config_set_accesscontrol,
dc8c34
 		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.accesscontrol, CONFIG_ON_OFF, NULL},
dc8c34
-	{CONFIG_AUDITLOG_LIST_ATTRIBUTE, NULL, NULL, 0,
dc8c34
-		NULL, CONFIG_CHARRAY, (ConfigGetFunc)config_get_auditlog_list},
dc8c34
+		(void**)&global_slapdFrontendConfig.accesscontrol,
dc8c34
+		CONFIG_ON_OFF, NULL, &init_accesscontrol},
dc8c34
+	{CONFIG_AUDITLOG_LIST_ATTRIBUTE, NULL,
dc8c34
+		NULL, 0, NULL,
dc8c34
+		CONFIG_CHARRAY, (ConfigGetFunc)config_get_auditlog_list, NULL},
dc8c34
 	{CONFIG_ACCESSLOG_LOGROTATIONTIMEUNIT_ATTRIBUTE, NULL,
dc8c34
 		log_set_rotationtimeunit, SLAPD_ACCESS_LOG,
dc8c34
-		(void**)&global_slapdFrontendConfig.accesslog_rotationunit, CONFIG_STRING, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.accesslog_rotationunit,
dc8c34
+		CONFIG_STRING, NULL, INIT_ACCESSLOG_ROTATIONUNIT},
dc8c34
 	{CONFIG_PW_LOCKDURATION_ATTRIBUTE, config_set_pw_lockduration,
dc8c34
 		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.pw_policy.pw_lockduration, CONFIG_LONG, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.pw_policy.pw_lockduration,
dc8c34
+		CONFIG_LONG, NULL, DEFAULT_PW_LOCKDURATION},
dc8c34
 	{CONFIG_ACCESSLOG_MAXLOGSIZE_ATTRIBUTE, NULL,
dc8c34
 		log_set_logsize, SLAPD_ACCESS_LOG,
dc8c34
-		(void**)&global_slapdFrontendConfig.accesslog_maxlogsize, CONFIG_INT, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.accesslog_maxlogsize,
dc8c34
+		CONFIG_INT, NULL, DEFAULT_LOG_MAXLOGSIZE},
dc8c34
 	{CONFIG_IDLETIMEOUT_ATTRIBUTE, config_set_idletimeout,
dc8c34
 		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.idletimeout, CONFIG_INT, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.idletimeout,
dc8c34
+		CONFIG_INT, NULL, DEFAULT_IDLE_TIMEOUT},
dc8c34
 	{CONFIG_NAGLE_ATTRIBUTE, config_set_nagle,
dc8c34
 		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.nagle, CONFIG_ON_OFF, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.nagle,
dc8c34
+		CONFIG_ON_OFF, NULL, &init_nagle},
dc8c34
 	{CONFIG_ERRORLOG_MINFREEDISKSPACE_ATTRIBUTE, NULL,
dc8c34
 		log_set_mindiskspace, SLAPD_ERROR_LOG,
dc8c34
-		(void**)&global_slapdFrontendConfig.errorlog_minfreespace, CONFIG_INT, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.errorlog_minfreespace,
dc8c34
+		CONFIG_INT, NULL, DEFAULT_LOG_MINFREESPACE},
dc8c34
 	{CONFIG_AUDITLOG_LOGGING_ENABLED_ATTRIBUTE, NULL,
dc8c34
 		log_set_logging, SLAPD_AUDIT_LOG,
dc8c34
-		(void**)&global_slapdFrontendConfig.auditlog_logging_enabled, CONFIG_ON_OFF, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.auditlog_logging_enabled,
dc8c34
+		CONFIG_ON_OFF, NULL, &init_auditlog_logging_enabled},
dc8c34
 	{CONFIG_AUDITLOG_LOGGING_HIDE_UNHASHED_PW, config_set_auditlog_unhashed_pw,
dc8c34
 		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.auditlog_logging_hide_unhashed_pw, CONFIG_ON_OFF, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.auditlog_logging_hide_unhashed_pw,
dc8c34
+		CONFIG_ON_OFF, NULL, &init_auditlog_logging_hide_unhashed_pw},
dc8c34
 	{CONFIG_ACCESSLOG_BUFFERING_ATTRIBUTE, config_set_accesslogbuffering,
dc8c34
 		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.accesslogbuffering, CONFIG_ON_OFF, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.accesslogbuffering,
dc8c34
+		CONFIG_ON_OFF, NULL, &init_accesslogbuffering},
dc8c34
 	{CONFIG_CSNLOGGING_ATTRIBUTE, config_set_csnlogging,
dc8c34
 		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.csnlogging, CONFIG_ON_OFF, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.csnlogging,
dc8c34
+		CONFIG_ON_OFF, NULL, &init_csnlogging},
dc8c34
 	{CONFIG_AUDITLOG_LOGEXPIRATIONTIMEUNIT_ATTRIBUTE, NULL,
dc8c34
 		log_set_expirationtimeunit, SLAPD_AUDIT_LOG,
dc8c34
 		(void**)&global_slapdFrontendConfig.auditlog_exptimeunit,
dc8c34
-		CONFIG_STRING_OR_UNKNOWN, NULL},
dc8c34
+		CONFIG_STRING_OR_UNKNOWN, NULL, INIT_AUDITLOG_EXPTIMEUNIT},
dc8c34
 	{CONFIG_PW_SYNTAX_ATTRIBUTE, config_set_pw_syntax,
dc8c34
 		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.pw_policy.pw_syntax, CONFIG_ON_OFF, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.pw_policy.pw_syntax,
dc8c34
+		CONFIG_ON_OFF, NULL, &init_pw_syntax},
dc8c34
 	{CONFIG_LISTENHOST_ATTRIBUTE, config_set_listenhost,
dc8c34
 		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.listenhost, CONFIG_STRING, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.listenhost,
dc8c34
+		CONFIG_STRING, NULL, NULL/* NULL value is allowed */},
dc8c34
 	{CONFIG_LDAPI_FILENAME_ATTRIBUTE, config_set_ldapi_filename,
dc8c34
-                NULL, 0,
dc8c34
-                (void**)&global_slapdFrontendConfig.ldapi_filename, CONFIG_STRING, NULL},
dc8c34
-        {CONFIG_LDAPI_SWITCH_ATTRIBUTE, config_set_ldapi_switch,
dc8c34
-                NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.ldapi_switch, CONFIG_ON_OFF, NULL},
dc8c34
-        {CONFIG_LDAPI_BIND_SWITCH_ATTRIBUTE, config_set_ldapi_bind_switch,
dc8c34
-                NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.ldapi_bind_switch, CONFIG_ON_OFF, NULL},
dc8c34
-        {CONFIG_LDAPI_ROOT_DN_ATTRIBUTE, config_set_ldapi_root_dn,
dc8c34
-                NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.ldapi_root_dn, CONFIG_STRING, NULL},
dc8c34
-        {CONFIG_LDAPI_MAP_ENTRIES_ATTRIBUTE, config_set_ldapi_map_entries,
dc8c34
-                NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.ldapi_map_entries, CONFIG_ON_OFF, NULL},
dc8c34
-        {CONFIG_LDAPI_UIDNUMBER_TYPE_ATTRIBUTE, config_set_ldapi_uidnumber_type,
dc8c34
-                NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.ldapi_uidnumber_type, CONFIG_STRING, NULL},
dc8c34
-        {CONFIG_LDAPI_GIDNUMBER_TYPE_ATTRIBUTE, config_set_ldapi_gidnumber_type,
dc8c34
-                NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.ldapi_gidnumber_type, CONFIG_STRING, NULL},
dc8c34
-        {CONFIG_LDAPI_SEARCH_BASE_DN_ATTRIBUTE, config_set_ldapi_search_base_dn,
dc8c34
-                NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.ldapi_search_base_dn, CONFIG_STRING, NULL},
dc8c34
+		NULL, 0,
dc8c34
+		(void**)&global_slapdFrontendConfig.ldapi_filename,
dc8c34
+		CONFIG_STRING, NULL, SLAPD_LDAPI_DEFAULT_FILENAME},
dc8c34
+	{CONFIG_LDAPI_SWITCH_ATTRIBUTE, config_set_ldapi_switch,
dc8c34
+		NULL, 0,
dc8c34
+		(void**)&global_slapdFrontendConfig.ldapi_switch,
dc8c34
+		CONFIG_ON_OFF, NULL, &init_ldapi_switch},
dc8c34
+	{CONFIG_LDAPI_BIND_SWITCH_ATTRIBUTE, config_set_ldapi_bind_switch,
dc8c34
+		NULL, 0,
dc8c34
+		(void**)&global_slapdFrontendConfig.ldapi_bind_switch,
dc8c34
+		CONFIG_ON_OFF, NULL, &init_ldapi_bind_switch},
dc8c34
+	{CONFIG_LDAPI_ROOT_DN_ATTRIBUTE, config_set_ldapi_root_dn,
dc8c34
+		NULL, 0,
dc8c34
+		(void**)&global_slapdFrontendConfig.ldapi_root_dn,
dc8c34
+		CONFIG_STRING, NULL, DEFAULT_DIRECTORY_MANAGER},
dc8c34
+	{CONFIG_LDAPI_MAP_ENTRIES_ATTRIBUTE, config_set_ldapi_map_entries,
dc8c34
+		NULL, 0,
dc8c34
+		(void**)&global_slapdFrontendConfig.ldapi_map_entries,
dc8c34
+		CONFIG_ON_OFF, NULL, &init_ldapi_map_entries},
dc8c34
+	{CONFIG_LDAPI_UIDNUMBER_TYPE_ATTRIBUTE, config_set_ldapi_uidnumber_type,
dc8c34
+		NULL, 0,
dc8c34
+		(void**)&global_slapdFrontendConfig.ldapi_uidnumber_type,
dc8c34
+		CONFIG_STRING, NULL, DEFAULT_UIDNUM_TYPE},
dc8c34
+	{CONFIG_LDAPI_GIDNUMBER_TYPE_ATTRIBUTE, config_set_ldapi_gidnumber_type,
dc8c34
+		NULL, 0,
dc8c34
+		(void**)&global_slapdFrontendConfig.ldapi_gidnumber_type,
dc8c34
+		CONFIG_STRING, NULL, DEFAULT_GIDNUM_TYPE},
dc8c34
+	{CONFIG_LDAPI_SEARCH_BASE_DN_ATTRIBUTE, config_set_ldapi_search_base_dn,
dc8c34
+		NULL, 0,
dc8c34
+		(void**)&global_slapdFrontendConfig.ldapi_search_base_dn,
dc8c34
+		CONFIG_STRING, NULL, DEFAULT_LDAPI_SEARCH_BASE},
dc8c34
 #if defined(ENABLE_AUTO_DN_SUFFIX)
dc8c34
-        {CONFIG_LDAPI_AUTO_DN_SUFFIX_ATTRIBUTE, config_set_ldapi_auto_dn_suffix,
dc8c34
-                NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.ldapi_auto_dn_suffix, CONFIG_STRING, NULL},
dc8c34
+	{CONFIG_LDAPI_AUTO_DN_SUFFIX_ATTRIBUTE, config_set_ldapi_auto_dn_suffix,
dc8c34
+		NULL, 0,
dc8c34
+		(void**)&global_slapdFrontendConfig.ldapi_auto_dn_suffix,
dc8c34
+		CONFIG_STRING, NULL, DEFAULT_LDAPI_AUTO_DN},
dc8c34
 #endif
dc8c34
 	{CONFIG_ANON_LIMITS_DN_ATTRIBUTE, config_set_anon_limits_dn,
dc8c34
-                NULL, 0,
dc8c34
-                (void**)&global_slapdFrontendConfig.anon_limits_dn, CONFIG_STRING, NULL},
dc8c34
+		NULL, 0,
dc8c34
+		(void**)&global_slapdFrontendConfig.anon_limits_dn,
dc8c34
+		CONFIG_STRING, NULL, ""},
dc8c34
 	{CONFIG_SLAPI_COUNTER_ATTRIBUTE, config_set_slapi_counters,
dc8c34
 		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.slapi_counters, CONFIG_ON_OFF, 
dc8c34
-		(ConfigGetFunc)config_get_slapi_counters},
dc8c34
+		(void**)&global_slapdFrontendConfig.slapi_counters,
dc8c34
+		CONFIG_ON_OFF, (ConfigGetFunc)config_get_slapi_counters,
dc8c34
+		&init_slapi_counters},
dc8c34
 	{CONFIG_ACCESSLOG_MINFREEDISKSPACE_ATTRIBUTE, NULL,
dc8c34
 		log_set_mindiskspace, SLAPD_ACCESS_LOG,
dc8c34
-		(void**)&global_slapdFrontendConfig.accesslog_minfreespace, CONFIG_INT, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.accesslog_minfreespace,
dc8c34
+		CONFIG_INT, NULL, DEFAULT_LOG_MINFREESPACE},
dc8c34
 	{CONFIG_ERRORLOG_MAXNUMOFLOGSPERDIR_ATTRIBUTE, NULL,
dc8c34
 		log_set_numlogsperdir, SLAPD_ERROR_LOG,
dc8c34
-		(void**)&global_slapdFrontendConfig.errorlog_maxnumlogs, CONFIG_INT, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.errorlog_maxnumlogs,
dc8c34
+		CONFIG_INT, NULL, DEFAULT_LOG_MAXNUMLOGS},
dc8c34
 	{CONFIG_SECURELISTENHOST_ATTRIBUTE, config_set_securelistenhost,
dc8c34
 		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.securelistenhost, CONFIG_STRING, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.securelistenhost,
dc8c34
+		CONFIG_STRING, NULL, NULL/* NULL value is allowed */},
dc8c34
 	{CONFIG_AUDITLOG_MINFREEDISKSPACE_ATTRIBUTE, NULL,
dc8c34
 		log_set_mindiskspace, SLAPD_AUDIT_LOG,
dc8c34
-		(void**)&global_slapdFrontendConfig.auditlog_minfreespace, CONFIG_INT, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.auditlog_minfreespace,
dc8c34
+		CONFIG_INT, NULL, DEFAULT_LOG_MINFREESPACE},
dc8c34
 	{CONFIG_ROOTDN_ATTRIBUTE, config_set_rootdn,
dc8c34
 		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.rootdn, CONFIG_STRING, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.rootdn,
dc8c34
+		CONFIG_STRING, NULL, DEFAULT_DIRECTORY_MANAGER},
dc8c34
 	{CONFIG_PW_MINAGE_ATTRIBUTE, config_set_pw_minage,
dc8c34
 		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.pw_policy.pw_minage, CONFIG_LONG, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.pw_policy.pw_minage,
dc8c34
+		CONFIG_LONG, NULL, DEFAULT_PW_MINAGE},
dc8c34
 	{CONFIG_AUDITFILE_ATTRIBUTE, config_set_auditlog,
dc8c34
 		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.auditlog, CONFIG_STRING_OR_EMPTY, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.auditlog,
dc8c34
+		CONFIG_STRING_OR_EMPTY, NULL, NULL/* deletion is not allowed */},
dc8c34
 	{CONFIG_RETURN_EXACT_CASE_ATTRIBUTE, config_set_return_exact_case,
dc8c34
 		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.return_exact_case, CONFIG_ON_OFF, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.return_exact_case,
dc8c34
+		CONFIG_ON_OFF, NULL, &init_return_exact_case},
dc8c34
 	{CONFIG_RESULT_TWEAK_ATTRIBUTE, config_set_result_tweak,
dc8c34
 		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.result_tweak, CONFIG_ON_OFF, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.result_tweak,
dc8c34
+		CONFIG_ON_OFF, NULL, &init_result_tweak},
dc8c34
 	{CONFIG_PLUGIN_BINDDN_TRACKING_ATTRIBUTE, config_set_plugin_tracking,
dc8c34
 		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.plugin_track, CONFIG_ON_OFF, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.plugin_track,
dc8c34
+		CONFIG_ON_OFF, NULL, &init_plugin_track},
dc8c34
 	{CONFIG_ATTRIBUTE_NAME_EXCEPTION_ATTRIBUTE, config_set_attrname_exceptions,
dc8c34
 		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.attrname_exceptions, CONFIG_ON_OFF, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.attrname_exceptions,
dc8c34
+		CONFIG_ON_OFF, NULL, &init_attrname_exceptions},
dc8c34
 	{CONFIG_MAXBERSIZE_ATTRIBUTE, config_set_maxbersize,
dc8c34
 		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.maxbersize, CONFIG_INT, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.maxbersize,
dc8c34
+		CONFIG_INT, NULL, DEFAULT_MAX_BERSIZE},
dc8c34
 	{CONFIG_MAXSASLIOSIZE_ATTRIBUTE, config_set_maxsasliosize,
dc8c34
 		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.maxsasliosize, CONFIG_INT, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.maxsasliosize,
dc8c34
+		CONFIG_INT, NULL, DEFAULT_MAX_SASLIO_SIZE},
dc8c34
 	{CONFIG_VERSIONSTRING_ATTRIBUTE, config_set_versionstring,
dc8c34
 		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.versionstring, CONFIG_STRING, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.versionstring,
dc8c34
+		CONFIG_STRING, NULL, SLAPD_VERSION_STR},
dc8c34
 	{CONFIG_REFERRAL_MODE_ATTRIBUTE, config_set_referral_mode,
dc8c34
 		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.refer_url, CONFIG_STRING, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.refer_url,
dc8c34
+		CONFIG_STRING, NULL, NULL/* deletion is not allowed */},
dc8c34
 #if !defined(_WIN32) && !defined(AIX)
dc8c34
 	{CONFIG_MAXDESCRIPTORS_ATTRIBUTE, config_set_maxdescriptors,
dc8c34
 		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.maxdescriptors, CONFIG_INT, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.maxdescriptors,
dc8c34
+		CONFIG_INT, NULL, DEFAULT_MAXDESCRIPTORS},
dc8c34
 #endif
dc8c34
 	{CONFIG_CONNTABLESIZE_ATTRIBUTE, config_set_conntablesize,
dc8c34
 		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.conntablesize, CONFIG_INT, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.conntablesize,
dc8c34
+		CONFIG_INT, NULL, NULL/* deletion is not allowed */},
dc8c34
 	{CONFIG_SSLCLIENTAUTH_ATTRIBUTE, config_set_SSLclientAuth,
dc8c34
 		NULL, 0,
dc8c34
-		(void **)&global_slapdFrontendConfig.SSLclientAuth, CONFIG_SPECIAL_SSLCLIENTAUTH, NULL},
dc8c34
+		(void **)&global_slapdFrontendConfig.SSLclientAuth,
dc8c34
+		CONFIG_SPECIAL_SSLCLIENTAUTH, NULL, DEFAULT_SSLCLIENTAPTH},
dc8c34
 	{CONFIG_SSL_CHECK_HOSTNAME_ATTRIBUTE, config_set_ssl_check_hostname,
dc8c34
-		NULL, 0, NULL, CONFIG_ON_OFF, (ConfigGetFunc)config_get_ssl_check_hostname},
dc8c34
-	{CONFIG_CONFIG_ATTRIBUTE, 0, NULL, 0, (void**)SLAPD_CONFIG_DN,
dc8c34
-		CONFIG_CONSTANT_STRING, NULL},
dc8c34
+		NULL, 0, NULL,
dc8c34
+		CONFIG_ON_OFF, (ConfigGetFunc)config_get_ssl_check_hostname,
dc8c34
+		&init_ssl_check_hostname},
dc8c34
+	{CONFIG_CONFIG_ATTRIBUTE, 0,
dc8c34
+		NULL, 0, (void**)SLAPD_CONFIG_DN,
dc8c34
+		CONFIG_CONSTANT_STRING, NULL, NULL/* deletion is not allowed */},
dc8c34
 	{CONFIG_HASH_FILTERS_ATTRIBUTE, config_set_hash_filters,
dc8c34
-		NULL, 0, NULL, CONFIG_ON_OFF, (ConfigGetFunc)config_get_hash_filters},
dc8c34
+		NULL, 0, NULL,
dc8c34
+		CONFIG_ON_OFF, (ConfigGetFunc)config_get_hash_filters,
dc8c34
+		NULL/* deletion is not allowed */},
dc8c34
 	/* instance dir; used by admin tasks */
dc8c34
 	{CONFIG_INSTDIR_ATTRIBUTE, config_set_instancedir,
dc8c34
 		NULL, 0, 
dc8c34
-		(void**)&global_slapdFrontendConfig.instancedir, CONFIG_STRING, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.instancedir,
dc8c34
+		CONFIG_STRING, NULL, NULL/* deletion is not allowed */},
dc8c34
 	/* parameterizing schema dir */
dc8c34
 	{CONFIG_SCHEMADIR_ATTRIBUTE, config_set_schemadir,
dc8c34
 		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.schemadir, CONFIG_STRING, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.schemadir,
dc8c34
+		CONFIG_STRING, NULL, NULL/* deletion is not allowed */},
dc8c34
 	/* parameterizing lock dir */
dc8c34
 	{CONFIG_LOCKDIR_ATTRIBUTE, config_set_lockdir,
dc8c34
 		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.lockdir, CONFIG_STRING, (ConfigGetFunc)config_get_lockdir},
dc8c34
+		(void**)&global_slapdFrontendConfig.lockdir,
dc8c34
+		CONFIG_STRING, (ConfigGetFunc)config_get_lockdir,
dc8c34
+		NULL/* deletion is not allowed */},
dc8c34
 	/* parameterizing tmp dir */
dc8c34
 	{CONFIG_TMPDIR_ATTRIBUTE, config_set_tmpdir,
dc8c34
 		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.tmpdir, CONFIG_STRING, (ConfigGetFunc)config_get_tmpdir},
dc8c34
+		(void**)&global_slapdFrontendConfig.tmpdir,
dc8c34
+		CONFIG_STRING, (ConfigGetFunc)config_get_tmpdir,
dc8c34
+		NULL/* deletion is not allowed */},
dc8c34
 	/* parameterizing cert dir */
dc8c34
 	{CONFIG_CERTDIR_ATTRIBUTE, config_set_certdir,
dc8c34
 		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.certdir, CONFIG_STRING, (ConfigGetFunc)config_get_certdir},
dc8c34
+		(void**)&global_slapdFrontendConfig.certdir,
dc8c34
+		CONFIG_STRING, (ConfigGetFunc)config_get_certdir,
dc8c34
+		NULL/* deletion is not allowed */},
dc8c34
 	/* parameterizing ldif dir */
dc8c34
 	{CONFIG_LDIFDIR_ATTRIBUTE, config_set_ldifdir,
dc8c34
 		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.ldifdir, CONFIG_STRING, (ConfigGetFunc)config_get_ldifdir},
dc8c34
+		(void**)&global_slapdFrontendConfig.ldifdir,
dc8c34
+		CONFIG_STRING, (ConfigGetFunc)config_get_ldifdir,
dc8c34
+		NULL/* deletion is not allowed */},
dc8c34
 	/* parameterizing bak dir */
dc8c34
 	{CONFIG_BAKDIR_ATTRIBUTE, config_set_bakdir,
dc8c34
 		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.bakdir, CONFIG_STRING, (ConfigGetFunc)config_get_bakdir},
dc8c34
+		(void**)&global_slapdFrontendConfig.bakdir,
dc8c34
+		CONFIG_STRING, (ConfigGetFunc)config_get_bakdir, 
dc8c34
+		NULL/* deletion is not allowed */},
dc8c34
 	/* parameterizing sasl plugin path */
dc8c34
 	{CONFIG_SASLPATH_ATTRIBUTE, config_set_saslpath,
dc8c34
 		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.saslpath, CONFIG_STRING, (ConfigGetFunc)config_get_saslpath},
dc8c34
+		(void**)&global_slapdFrontendConfig.saslpath,
dc8c34
+		CONFIG_STRING, (ConfigGetFunc)config_get_saslpath, 
dc8c34
+		NULL/* deletion is not allowed */},
dc8c34
 	/* parameterizing run dir */
dc8c34
 	{CONFIG_RUNDIR_ATTRIBUTE, config_set_rundir,
dc8c34
 		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.rundir, CONFIG_STRING, (ConfigGetFunc)config_get_rundir},
dc8c34
+		(void**)&global_slapdFrontendConfig.rundir,
dc8c34
+		CONFIG_STRING, (ConfigGetFunc)config_get_rundir,
dc8c34
+		NULL/* deletion is not allowed */},
dc8c34
 	{CONFIG_REWRITE_RFC1274_ATTRIBUTE, config_set_rewrite_rfc1274,
dc8c34
 		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.rewrite_rfc1274, CONFIG_ON_OFF, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.rewrite_rfc1274,
dc8c34
+		CONFIG_ON_OFF, NULL, &init_rewrite_rfc1274},
dc8c34
 	{CONFIG_OUTBOUND_LDAP_IO_TIMEOUT_ATTRIBUTE,
dc8c34
 		config_set_outbound_ldap_io_timeout,
dc8c34
 		NULL, 0,
dc8c34
 		(void **)&global_slapdFrontendConfig.outbound_ldap_io_timeout,
dc8c34
-		CONFIG_INT, NULL},
dc8c34
+		CONFIG_INT, NULL, DEFAULT_OUTBOUND_LDAP_IO_TIMEOUT},
dc8c34
 	{CONFIG_UNAUTH_BINDS_ATTRIBUTE, config_set_unauth_binds_switch,
dc8c34
 		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.allow_unauth_binds, CONFIG_ON_OFF,
dc8c34
-		(ConfigGetFunc)config_get_unauth_binds_switch},
dc8c34
+		(void**)&global_slapdFrontendConfig.allow_unauth_binds,
dc8c34
+		CONFIG_ON_OFF, (ConfigGetFunc)config_get_unauth_binds_switch,
dc8c34
+		&init_allow_unauth_binds},
dc8c34
 	{CONFIG_REQUIRE_SECURE_BINDS_ATTRIBUTE, config_set_require_secure_binds,
dc8c34
 		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.require_secure_binds, CONFIG_ON_OFF,
dc8c34
-		(ConfigGetFunc)config_get_require_secure_binds},
dc8c34
+		(void**)&global_slapdFrontendConfig.require_secure_binds,
dc8c34
+		CONFIG_ON_OFF, (ConfigGetFunc)config_get_require_secure_binds,
dc8c34
+		&init_require_secure_binds},
dc8c34
 	{CONFIG_ANON_ACCESS_ATTRIBUTE, config_set_anon_access_switch,
dc8c34
 		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.allow_anon_access, CONFIG_SPECIAL_ANON_ACCESS_SWITCH,
dc8c34
-		(ConfigGetFunc)config_get_anon_access_switch},
dc8c34
+		(void**)&global_slapdFrontendConfig.allow_anon_access,
dc8c34
+		CONFIG_SPECIAL_ANON_ACCESS_SWITCH,
dc8c34
+		(ConfigGetFunc)config_get_anon_access_switch,
dc8c34
+		DEFAULT_ALLOW_ANON_ACCESS},
dc8c34
 	{CONFIG_LOCALSSF_ATTRIBUTE, config_set_localssf,
dc8c34
 		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.localssf, CONFIG_INT, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.localssf,
dc8c34
+		CONFIG_INT, NULL, DEFAULT_LOCAL_SSF},
dc8c34
 	{CONFIG_MINSSF_ATTRIBUTE, config_set_minssf,
dc8c34
 		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.minssf, CONFIG_INT, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.minssf,
dc8c34
+		CONFIG_INT, NULL, DEFAULT_MIN_SSF},
dc8c34
 	{CONFIG_MINSSF_EXCLUDE_ROOTDSE, config_set_minssf_exclude_rootdse,
dc8c34
 		NULL, 0,
dc8c34
 		(void**)&global_slapdFrontendConfig.minssf_exclude_rootdse,
dc8c34
-		CONFIG_ON_OFF,
dc8c34
-		(ConfigGetFunc)config_get_minssf_exclude_rootdse},
dc8c34
+		CONFIG_ON_OFF, (ConfigGetFunc)config_get_minssf_exclude_rootdse, 
dc8c34
+		&init_minssf_exclude_rootdse},
dc8c34
 	{CONFIG_FORCE_SASL_EXTERNAL_ATTRIBUTE, config_set_force_sasl_external,
dc8c34
 		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.force_sasl_external, CONFIG_ON_OFF,
dc8c34
-		(ConfigGetFunc)config_get_force_sasl_external},
dc8c34
+		(void**)&global_slapdFrontendConfig.force_sasl_external,
dc8c34
+		CONFIG_ON_OFF, (ConfigGetFunc)config_get_force_sasl_external, 
dc8c34
+		&init_force_sasl_external},
dc8c34
 	{CONFIG_ENTRYUSN_GLOBAL, config_set_entryusn_global,
dc8c34
 		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.entryusn_global, CONFIG_ON_OFF,
dc8c34
-		(ConfigGetFunc)config_get_entryusn_global},
dc8c34
+		(void**)&global_slapdFrontendConfig.entryusn_global,
dc8c34
+		CONFIG_ON_OFF, (ConfigGetFunc)config_get_entryusn_global,
dc8c34
+		&init_entryusn_global},
dc8c34
 	{CONFIG_ENTRYUSN_IMPORT_INITVAL, config_set_entryusn_import_init,
dc8c34
 		NULL, 0,
dc8c34
 		(void**)&global_slapdFrontendConfig.entryusn_import_init,
dc8c34
-		CONFIG_STRING, (ConfigGetFunc)config_get_entryusn_import_init},
dc8c34
+		CONFIG_STRING, (ConfigGetFunc)config_get_entryusn_import_init,
dc8c34
+		ENTRYUSN_IMPORT_INIT},
dc8c34
 	{CONFIG_ALLOWED_TO_DELETE_ATTRIBUTE, config_set_allowed_to_delete_attrs,
dc8c34
 		NULL, 0,
dc8c34
 		(void**)&global_slapdFrontendConfig.allowed_to_delete_attrs,
dc8c34
-		CONFIG_STRING, (ConfigGetFunc)config_get_allowed_to_delete_attrs},
dc8c34
+		CONFIG_STRING, (ConfigGetFunc)config_get_allowed_to_delete_attrs, 
dc8c34
+		DEFAULT_ALLOWED_TO_DELETE_ATTRS },
dc8c34
 	{CONFIG_VALIDATE_CERT_ATTRIBUTE, config_set_validate_cert_switch,
dc8c34
 		NULL, 0,
dc8c34
 		(void**)&global_slapdFrontendConfig.validate_cert,
dc8c34
 		CONFIG_SPECIAL_VALIDATE_CERT_SWITCH,
dc8c34
-		(ConfigGetFunc)config_get_validate_cert_switch},
dc8c34
+		(ConfigGetFunc)config_get_validate_cert_switch, DEFAULT_VALIDATE_CERT},
dc8c34
 	{CONFIG_PAGEDSIZELIMIT_ATTRIBUTE, config_set_pagedsizelimit,
dc8c34
 		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.pagedsizelimit, CONFIG_INT, NULL},
dc8c34
+		(void**)&global_slapdFrontendConfig.pagedsizelimit,
dc8c34
+		CONFIG_INT, NULL, DEFAULT_PAGEDSIZELIMIT},
dc8c34
 	{CONFIG_DEFAULT_NAMING_CONTEXT, config_set_default_naming_context,
dc8c34
 		NULL, 0,
dc8c34
 		(void**)&global_slapdFrontendConfig.default_naming_context,
dc8c34
-		CONFIG_STRING, (ConfigGetFunc)config_get_default_naming_context},
dc8c34
+		CONFIG_STRING, (ConfigGetFunc)config_get_default_naming_context, NULL},
dc8c34
 	{CONFIG_DISK_MONITORING, config_set_disk_monitoring,
dc8c34
 		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.disk_monitoring, CONFIG_ON_OFF,
dc8c34
-		(ConfigGetFunc)config_get_disk_monitoring},
dc8c34
+		(void**)&global_slapdFrontendConfig.disk_monitoring,
dc8c34
+		CONFIG_ON_OFF, (ConfigGetFunc)config_get_disk_monitoring,
dc8c34
+		&init_disk_monitoring},
dc8c34
 	{CONFIG_DISK_THRESHOLD, config_set_disk_threshold,
dc8c34
 		NULL, 0,
dc8c34
 		(void**)&global_slapdFrontendConfig.disk_threshold,
dc8c34
-		CONFIG_LONG_LONG, (ConfigGetFunc)config_get_disk_threshold},
dc8c34
+		CONFIG_INT, (ConfigGetFunc)config_get_disk_threshold,
dc8c34
+		DEFAULT_DISK_THRESHOLD},
dc8c34
 	{CONFIG_DISK_GRACE_PERIOD, config_set_disk_grace_period,
dc8c34
 		NULL, 0,
dc8c34
 		(void**)&global_slapdFrontendConfig.disk_grace_period,
dc8c34
-		CONFIG_INT, (ConfigGetFunc)config_get_disk_grace_period},
dc8c34
+		CONFIG_INT, (ConfigGetFunc)config_get_disk_grace_period,
dc8c34
+		DEFAULT_DISK_GRACE_PERIOD},
dc8c34
 	{CONFIG_DISK_LOGGING_CRITICAL, config_set_disk_logging_critical,
dc8c34
 		NULL, 0,
dc8c34
 		(void**)&global_slapdFrontendConfig.disk_logging_critical,
dc8c34
-		CONFIG_ON_OFF, (ConfigGetFunc)config_get_disk_logging_critical},
dc8c34
+		CONFIG_ON_OFF, (ConfigGetFunc)config_get_disk_logging_critical,
dc8c34
+		&init_disk_logging_critical},
dc8c34
 	{CONFIG_SASL_MAXBUFSIZE, config_set_sasl_maxbufsize,
dc8c34
 		NULL, 0,
dc8c34
 		(void**)&global_slapdFrontendConfig.sasl_max_bufsize,
dc8c34
-		CONFIG_INT, (ConfigGetFunc)config_get_sasl_maxbufsize},
dc8c34
-	{CONFIG_LISTEN_BACKLOG_SIZE, config_set_listen_backlog_size,
dc8c34
-		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.listen_backlog_size, CONFIG_INT,
dc8c34
-		(ConfigGetFunc)config_get_listen_backlog_size},
dc8c34
-#if defined(LINUX)
dc8c34
-	{CONFIG_MALLOC_MXFAST, config_set_malloc_mxfast,
dc8c34
-		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.malloc_mxfast,
dc8c34
-		CONFIG_INT, (ConfigGetFunc)config_get_malloc_mxfast},
dc8c34
-	{CONFIG_MALLOC_TRIM_THRESHOLD, config_set_malloc_trim_threshold,
dc8c34
-		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.malloc_trim_threshold,
dc8c34
-		CONFIG_INT, (ConfigGetFunc)config_get_malloc_trim_threshold},
dc8c34
-	{CONFIG_MALLOC_MMAP_THRESHOLD, config_set_malloc_mmap_threshold,
dc8c34
-		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.malloc_mmap_threshold,
dc8c34
-		CONFIG_INT, (ConfigGetFunc)config_get_malloc_mmap_threshold},
dc8c34
-#endif
dc8c34
-	{CONFIG_IGNORE_TIME_SKEW, config_set_ignore_time_skew,
dc8c34
-		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.ignore_time_skew,
dc8c34
-		CONFIG_ON_OFF, (ConfigGetFunc)config_get_ignore_time_skew}
dc8c34
+		CONFIG_INT, (ConfigGetFunc)config_get_sasl_maxbufsize,
dc8c34
+		DEFAULT_SASL_MAXBUFSIZE},
dc8c34
 #ifdef MEMPOOL_EXPERIMENTAL
dc8c34
 	,{CONFIG_MEMPOOL_SWITCH_ATTRIBUTE, config_set_mempool_switch,
dc8c34
 		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.mempool_switch, CONFIG_ON_OFF, (ConfigGetFunc)config_get_mempool_switch},
dc8c34
+		(void**)&global_slapdFrontendConfig.mempool_switch,
dc8c34
+		CONFIG_ON_OFF, (ConfigGetFunc)config_get_mempool_switch,
dc8c34
+		&init_mempool_switch},
dc8c34
 	{CONFIG_MEMPOOL_MAXFREELIST_ATTRIBUTE, config_set_mempool_maxfreelist,
dc8c34
 		NULL, 0,
dc8c34
-		(void**)&global_slapdFrontendConfig.mempool_maxfreelist, CONFIG_INT, (ConfigGetFunc)config_get_mempool_maxfreelist}
dc8c34
+		(void**)&global_slapdFrontendConfig.mempool_maxfreelist,
dc8c34
+		CONFIG_INT, (ConfigGetFunc)config_get_mempool_maxfreelist,
dc8c34
+		DEFAULT_MEMPOOL_MAXFREELIST}
dc8c34
 #endif /* MEMPOOL_EXPERIMENTAL */
dc8c34
 };
dc8c34
 
dc8c34
@@ -967,21 +1256,21 @@ FrontendConfig_init () {
dc8c34
   cfg->port = LDAP_PORT;
dc8c34
   cfg->secureport = LDAPS_PORT;
dc8c34
   cfg->ldapi_filename = slapi_ch_strdup(SLAPD_LDAPI_DEFAULT_FILENAME);
dc8c34
-  cfg->ldapi_switch = LDAP_OFF;
dc8c34
-  cfg->ldapi_bind_switch = LDAP_OFF;
dc8c34
-  cfg->ldapi_root_dn = slapi_ch_strdup("cn=Directory Manager");
dc8c34
-  cfg->ldapi_map_entries = LDAP_OFF;
dc8c34
-  cfg->ldapi_uidnumber_type = slapi_ch_strdup("uidNumber");
dc8c34
-  cfg->ldapi_gidnumber_type = slapi_ch_strdup("gidNumber");
dc8c34
+  init_ldapi_switch = cfg->ldapi_switch = LDAP_OFF;
dc8c34
+  init_ldapi_bind_switch = cfg->ldapi_bind_switch = LDAP_OFF;
dc8c34
+  cfg->ldapi_root_dn = slapi_ch_strdup(DEFAULT_DIRECTORY_MANAGER);
dc8c34
+  init_ldapi_map_entries = cfg->ldapi_map_entries = LDAP_OFF;
dc8c34
+  cfg->ldapi_uidnumber_type = slapi_ch_strdup(DEFAULT_UIDNUM_TYPE);
dc8c34
+  cfg->ldapi_gidnumber_type = slapi_ch_strdup(DEFAULT_GIDNUM_TYPE);
dc8c34
   /* These DNs are no need to be normalized. */
dc8c34
-  cfg->ldapi_search_base_dn = slapi_ch_strdup("dc=example,dc=com");
dc8c34
+  cfg->ldapi_search_base_dn = slapi_ch_strdup(DEFAULT_LDAPI_SEARCH_BASE);
dc8c34
 #if defined(ENABLE_AUTO_DN_SUFFIX)
dc8c34
-  cfg->ldapi_auto_dn_suffix = slapi_ch_strdup("cn=peercred,cn=external,cn=auth");
dc8c34
+  cfg->ldapi_auto_dn_suffix = slapi_ch_strdup(DEFAULT_LDAPI_AUTO_DN);
dc8c34
 #endif
dc8c34
-  cfg->allow_unauth_binds = LDAP_OFF;
dc8c34
-  cfg->require_secure_binds = LDAP_OFF;
dc8c34
+  init_allow_unauth_binds = cfg->allow_unauth_binds = LDAP_OFF;
dc8c34
+  init_require_secure_binds = cfg->require_secure_binds = LDAP_OFF;
dc8c34
   cfg->allow_anon_access = SLAPD_ANON_ACCESS_ON;
dc8c34
-  cfg->slapi_counters = LDAP_ON;
dc8c34
+  init_slapi_counters = cfg->slapi_counters = LDAP_ON;
dc8c34
   cfg->threadnumber = SLAPD_DEFAULT_MAX_THREADS;
dc8c34
   cfg->maxthreadsperconn = SLAPD_DEFAULT_MAX_THREADS_PER_CONN;
dc8c34
   cfg->reservedescriptors = SLAPD_DEFAULT_RESERVE_FDS;
dc8c34
@@ -992,8 +1281,8 @@ FrontendConfig_init () {
dc8c34
   cfg->maxsasliosize = SLAPD_DEFAULT_MAX_SASLIO_SIZE;
dc8c34
   cfg->localssf = SLAPD_DEFAULT_LOCAL_SSF;
dc8c34
   cfg->minssf = SLAPD_DEFAULT_MIN_SSF;
dc8c34
-  cfg->minssf_exclude_rootdse = LDAP_OFF; /* minssf is applied to rootdse,
dc8c34
-                                             by default */
dc8c34
+  /* minssf is applied to rootdse, by default */
dc8c34
+  init_minssf_exclude_rootdse = cfg->minssf_exclude_rootdse = LDAP_OFF;
dc8c34
   cfg->validate_cert = SLAPD_VALIDATE_CERT_WARN;
dc8c34
 
dc8c34
 #ifdef _WIN32
dc8c34
@@ -1006,17 +1295,19 @@ FrontendConfig_init () {
dc8c34
 #endif /* USE_SYSCONF */
dc8c34
 #endif /* _WIN32 */
dc8c34
 
dc8c34
-  cfg->accesscontrol = LDAP_ON;
dc8c34
-  cfg->security = LDAP_OFF;
dc8c34
-  cfg->ssl_check_hostname = LDAP_ON;
dc8c34
-  cfg->return_exact_case = LDAP_ON;
dc8c34
-  cfg->result_tweak = LDAP_OFF;
dc8c34
+  init_accesscontrol = cfg->accesscontrol = LDAP_ON;
dc8c34
+  init_nagle = cfg->nagle = LDAP_OFF;
dc8c34
+  init_security = cfg->security = LDAP_OFF;
dc8c34
+  init_ssl_check_hostname = cfg->ssl_check_hostname = LDAP_ON;
dc8c34
+  init_return_exact_case = cfg->return_exact_case = LDAP_ON;
dc8c34
+  init_result_tweak = cfg->result_tweak = LDAP_OFF;
dc8c34
+  init_attrname_exceptions = cfg->attrname_exceptions = LDAP_OFF;
dc8c34
   cfg->reservedescriptors = SLAPD_DEFAULT_RESERVE_FDS;
dc8c34
   cfg->useroc = slapi_ch_strdup ( "" );
dc8c34
   cfg->userat = slapi_ch_strdup ( "" );
dc8c34
 /* kexcoff: should not be initialized by default here
dc8c34
-  cfg->rootpwstoragescheme = pw_name2scheme( SHA1_SCHEME_NAME );
dc8c34
-  cfg->pw_storagescheme = pw_name2scheme( SHA1_SCHEME_NAME );
dc8c34
+  cfg->rootpwstoragescheme = pw_name2scheme( SALTED_SHA1_SCHEME_NAME );
dc8c34
+  cfg->pw_storagescheme = pw_name2scheme( SALTED_SHA1_SCHEME_NAME );
dc8c34
 */
dc8c34
   cfg->slapd_type = 0;
dc8c34
   cfg->versionstring = SLAPD_VERSION_STR;
dc8c34
@@ -1024,24 +1315,29 @@ FrontendConfig_init () {
dc8c34
   cfg->pagedsizelimit = 0;
dc8c34
   cfg->timelimit = SLAPD_DEFAULT_TIMELIMIT;
dc8c34
   cfg->anon_limits_dn = slapi_ch_strdup("");
dc8c34
-  cfg->schemacheck = LDAP_ON;
dc8c34
-  cfg->syntaxcheck = LDAP_OFF;
dc8c34
-  cfg->plugin_track = LDAP_OFF;
dc8c34
-  cfg->syntaxlogging = LDAP_OFF;
dc8c34
-  cfg->dn_validate_strict = LDAP_OFF;
dc8c34
-  cfg->ds4_compatible_schema = LDAP_OFF;
dc8c34
-  cfg->enquote_sup_oc = LDAP_OFF;
dc8c34
-  cfg->lastmod = LDAP_ON;
dc8c34
-  cfg->rewrite_rfc1274 = LDAP_OFF;
dc8c34
+  init_schemacheck = cfg->schemacheck = LDAP_ON;
dc8c34
+  init_syntaxcheck = cfg->syntaxcheck = LDAP_OFF;
dc8c34
+  init_plugin_track = cfg->plugin_track = LDAP_OFF;
dc8c34
+  init_syntaxlogging = cfg->syntaxlogging = LDAP_OFF;
dc8c34
+  init_dn_validate_strict = cfg->dn_validate_strict = LDAP_OFF;
dc8c34
+  init_ds4_compatible_schema = cfg->ds4_compatible_schema = LDAP_OFF;
dc8c34
+  init_enquote_sup_oc = cfg->enquote_sup_oc = LDAP_OFF;
dc8c34
+  init_lastmod = cfg->lastmod = LDAP_ON;
dc8c34
+  init_rewrite_rfc1274 = cfg->rewrite_rfc1274 = LDAP_OFF;
dc8c34
   cfg->schemareplace = slapi_ch_strdup( CONFIG_SCHEMAREPLACE_STR_REPLICATION_ONLY );
dc8c34
-  cfg->schema_ignore_trailing_spaces = SLAPD_DEFAULT_SCHEMA_IGNORE_TRAILING_SPACES;
dc8c34
-  cfg->force_sasl_external = LDAP_OFF; /* do not force sasl external by default - let clients abide by the LDAP standards and send us a SASL/EXTERNAL bind if that's what they want to do */
dc8c34
-
dc8c34
-  cfg->pwpolicy_local = LDAP_OFF;
dc8c34
-  cfg->pw_policy.pw_change = LDAP_ON;
dc8c34
-  cfg->pw_policy.pw_must_change = LDAP_OFF;
dc8c34
-  cfg->pw_policy.pw_syntax = LDAP_OFF;
dc8c34
-  cfg->pw_policy.pw_exp = LDAP_OFF;
dc8c34
+  init_schema_ignore_trailing_spaces = cfg->schema_ignore_trailing_spaces =
dc8c34
+    SLAPD_DEFAULT_SCHEMA_IGNORE_TRAILING_SPACES;
dc8c34
+  /* do not force sasl external by default - 
dc8c34
+   * let clients abide by the LDAP standards and send us a SASL/EXTERNAL bind
dc8c34
+   * if that's what they want to do */
dc8c34
+  init_force_sasl_external = cfg->force_sasl_external = LDAP_OFF;
dc8c34
+
dc8c34
+  init_readonly = cfg->readonly = LDAP_OFF;
dc8c34
+  init_pwpolicy_local = cfg->pwpolicy_local = LDAP_OFF;
dc8c34
+  init_pw_change = cfg->pw_policy.pw_change = LDAP_ON;
dc8c34
+  init_pw_must_change = cfg->pw_policy.pw_must_change = LDAP_OFF;
dc8c34
+  init_pw_syntax = cfg->pw_policy.pw_syntax = LDAP_OFF;
dc8c34
+  init_pw_exp = cfg->pw_policy.pw_exp = LDAP_OFF;
dc8c34
   cfg->pw_policy.pw_minlength = 8;
dc8c34
   cfg->pw_policy.pw_mindigits = 0;
dc8c34
   cfg->pw_policy.pw_minalphas = 0;
dc8c34
@@ -1055,88 +1351,92 @@ FrontendConfig_init () {
dc8c34
   cfg->pw_policy.pw_maxage = 8640000; /* 100 days     */
dc8c34
   cfg->pw_policy.pw_minage = 0;
dc8c34
   cfg->pw_policy.pw_warning = 86400; /* 1 day        */
dc8c34
-  cfg->pw_policy.pw_history = LDAP_OFF;
dc8c34
+  init_pw_history = cfg->pw_policy.pw_history = LDAP_OFF;
dc8c34
   cfg->pw_policy.pw_inhistory = 6;
dc8c34
-  cfg->pw_policy.pw_lockout = LDAP_OFF;
dc8c34
+  init_pw_lockout = cfg->pw_policy.pw_lockout = LDAP_OFF;
dc8c34
   cfg->pw_policy.pw_maxfailure = 3;
dc8c34
-  cfg->pw_policy.pw_unlock = LDAP_ON;
dc8c34
+  init_pw_unlock = cfg->pw_policy.pw_unlock = LDAP_ON;
dc8c34
   cfg->pw_policy.pw_lockduration = 3600;     /* 60 minutes   */
dc8c34
   cfg->pw_policy.pw_resetfailurecount = 600; /* 10 minutes   */ 
dc8c34
   cfg->pw_policy.pw_gracelimit = 0;
dc8c34
-  cfg->pw_policy.pw_is_legacy = LDAP_ON;
dc8c34
-  cfg->pw_policy.pw_track_update_time = LDAP_OFF;
dc8c34
-  cfg->pw_is_global_policy = LDAP_OFF;
dc8c34
+  cfg->pw_policy.pw_admin = NULL;
dc8c34
+  cfg->pw_policy.pw_admin_user = NULL;
dc8c34
+  init_pw_is_legacy = cfg->pw_policy.pw_is_legacy = LDAP_ON;
dc8c34
+  init_pw_track_update_time = cfg->pw_policy.pw_track_update_time = LDAP_OFF;
dc8c34
+  init_pw_is_global_policy = cfg->pw_is_global_policy = LDAP_OFF;
dc8c34
 
dc8c34
-  cfg->accesslog_logging_enabled = LDAP_ON;
dc8c34
-  cfg->accesslog_mode = slapi_ch_strdup("600");
dc8c34
+  init_accesslog_logging_enabled = cfg->accesslog_logging_enabled = LDAP_ON;
dc8c34
+  cfg->accesslog_mode = slapi_ch_strdup(INIT_ACCESSLOG_MODE);
dc8c34
   cfg->accesslog_maxnumlogs = 10;
dc8c34
   cfg->accesslog_maxlogsize = 100;
dc8c34
   cfg->accesslog_rotationtime = 1;
dc8c34
-  cfg->accesslog_rotationunit = slapi_ch_strdup("day");
dc8c34
-  cfg->accesslog_rotationsync_enabled = LDAP_OFF;
dc8c34
+  cfg->accesslog_rotationunit = slapi_ch_strdup(INIT_ACCESSLOG_ROTATIONUNIT);
dc8c34
+  init_accesslog_rotationsync_enabled =
dc8c34
+    cfg->accesslog_rotationsync_enabled = LDAP_OFF;
dc8c34
   cfg->accesslog_rotationsynchour = 0;
dc8c34
   cfg->accesslog_rotationsyncmin = 0;
dc8c34
   cfg->accesslog_maxdiskspace = 500;
dc8c34
   cfg->accesslog_minfreespace = 5;
dc8c34
   cfg->accesslog_exptime = 1;
dc8c34
-  cfg->accesslog_exptimeunit = slapi_ch_strdup("month");
dc8c34
+  cfg->accesslog_exptimeunit = slapi_ch_strdup(INIT_ACCESSLOG_EXPTIMEUNIT);
dc8c34
   cfg->accessloglevel = 256;
dc8c34
-  cfg->accesslogbuffering = LDAP_ON;
dc8c34
-  cfg->csnlogging = LDAP_ON;
dc8c34
+  init_accesslogbuffering = cfg->accesslogbuffering = LDAP_ON;
dc8c34
+  init_csnlogging = cfg->csnlogging = LDAP_ON;
dc8c34
 
dc8c34
-  cfg->errorlog_logging_enabled = LDAP_ON;
dc8c34
-  cfg->errorlog_mode = slapi_ch_strdup("600");
dc8c34
+  init_errorlog_logging_enabled = cfg->errorlog_logging_enabled = LDAP_ON;
dc8c34
+  cfg->errorlog_mode = slapi_ch_strdup(INIT_ERRORLOG_MODE);
dc8c34
   cfg->errorlog_maxnumlogs = 1;
dc8c34
   cfg->errorlog_maxlogsize = 100;
dc8c34
   cfg->errorlog_rotationtime = 1;
dc8c34
-  cfg->errorlog_rotationunit = slapi_ch_strdup ("week");
dc8c34
-  cfg->errorlog_rotationsync_enabled = LDAP_OFF;
dc8c34
+  cfg->errorlog_rotationunit = slapi_ch_strdup (INIT_ERRORLOG_ROTATIONUNIT);
dc8c34
+  init_errorlog_rotationsync_enabled =
dc8c34
+    cfg->errorlog_rotationsync_enabled = LDAP_OFF;
dc8c34
   cfg->errorlog_rotationsynchour = 0;
dc8c34
   cfg->errorlog_rotationsyncmin = 0;
dc8c34
   cfg->errorlog_maxdiskspace = 100;
dc8c34
   cfg->errorlog_minfreespace = 5;
dc8c34
   cfg->errorlog_exptime = 1;
dc8c34
-  cfg->errorlog_exptimeunit = slapi_ch_strdup("month");
dc8c34
+  cfg->errorlog_exptimeunit = slapi_ch_strdup(INIT_ERRORLOG_EXPTIMEUNIT);
dc8c34
   cfg->errorloglevel = 0;
dc8c34
 
dc8c34
-  cfg->auditlog_logging_enabled = LDAP_OFF;
dc8c34
-  cfg->auditlog_mode = slapi_ch_strdup("600");
dc8c34
+  init_auditlog_logging_enabled = cfg->auditlog_logging_enabled = LDAP_OFF;
dc8c34
+  cfg->auditlog_mode = slapi_ch_strdup(INIT_AUDITLOG_MODE);
dc8c34
   cfg->auditlog_maxnumlogs = 1;
dc8c34
   cfg->auditlog_maxlogsize = 100;
dc8c34
   cfg->auditlog_rotationtime = 1;
dc8c34
-  cfg->auditlog_rotationunit = slapi_ch_strdup ("week");
dc8c34
-  cfg->auditlog_rotationsync_enabled = LDAP_OFF;
dc8c34
+  cfg->auditlog_rotationunit = slapi_ch_strdup(INIT_AUDITLOG_ROTATIONUNIT);
dc8c34
+  init_auditlog_rotationsync_enabled =
dc8c34
+    cfg->auditlog_rotationsync_enabled = LDAP_OFF;
dc8c34
   cfg->auditlog_rotationsynchour = 0;
dc8c34
   cfg->auditlog_rotationsyncmin = 0;
dc8c34
   cfg->auditlog_maxdiskspace = 100;
dc8c34
   cfg->auditlog_minfreespace = 5;
dc8c34
   cfg->auditlog_exptime = 1;
dc8c34
-  cfg->auditlog_exptimeunit = slapi_ch_strdup("month");
dc8c34
-  cfg->auditlog_logging_hide_unhashed_pw = LDAP_ON;
dc8c34
+  cfg->auditlog_exptimeunit = slapi_ch_strdup(INIT_AUDITLOG_EXPTIMEUNIT);
dc8c34
+  init_auditlog_logging_hide_unhashed_pw = 
dc8c34
+    cfg->auditlog_logging_hide_unhashed_pw = LDAP_ON;
dc8c34
 
dc8c34
-  cfg->entryusn_global = LDAP_OFF; 
dc8c34
-  cfg->entryusn_import_init = slapi_ch_strdup("0"); 
dc8c34
+  init_entryusn_global = cfg->entryusn_global = LDAP_OFF; 
dc8c34
+  cfg->entryusn_import_init = slapi_ch_strdup(ENTRYUSN_IMPORT_INIT); 
dc8c34
   cfg->allowed_to_delete_attrs = slapi_ch_strdup("nsslapd-listenhost nsslapd-securelistenhost nsslapd-defaultnamingcontext");
dc8c34
   cfg->default_naming_context = NULL; /* store normalized dn */
dc8c34
 
dc8c34
-  cfg->disk_monitoring = LDAP_OFF;
dc8c34
+  init_disk_monitoring = cfg->disk_monitoring = LDAP_OFF;
dc8c34
   cfg->disk_threshold = 2097152;  /* 2 mb */
dc8c34
   cfg->disk_grace_period = 60; /* 1 hour */
dc8c34
-  cfg->disk_logging_critical = LDAP_OFF;
dc8c34
+  init_disk_logging_critical = cfg->disk_logging_critical = LDAP_OFF;
dc8c34
   cfg->sasl_max_bufsize = SLAPD_DEFAULT_SASL_MAXBUFSIZE;
dc8c34
-  cfg->pw_policy.pw_admin = NULL;
dc8c34
-  cfg->pw_policy.pw_admin_user = NULL;
dc8c34
-  cfg->listen_backlog_size = DAEMON_LISTEN_SIZE;
dc8c34
-  cfg->ignore_time_skew = LDAP_OFF;
dc8c34
+  init_listen_backlog_size = cfg->listen_backlog_size = DAEMON_LISTEN_SIZE;
dc8c34
+  init_ignore_time_skew = cfg->ignore_time_skew = LDAP_OFF;
dc8c34
 
dc8c34
 #if defined(LINUX)
dc8c34
-  cfg->malloc_mxfast = DEFAULT_MALLOC_UNSET;
dc8c34
-  cfg->malloc_trim_threshold = DEFAULT_MALLOC_UNSET;
dc8c34
-  cfg->malloc_mmap_threshold = DEFAULT_MALLOC_UNSET;
dc8c34
+  init_malloc_mxfast = cfg->malloc_mxfast = DEFAULT_MALLOC_UNSET;
dc8c34
+  init_malloc_trim_threshold = cfg->malloc_trim_threshold = DEFAULT_MALLOC_UNSET;
dc8c34
+  init_malloc_mmap_threshold = cfg->malloc_mmap_threshold = DEFAULT_MALLOC_UNSET;
dc8c34
 #endif
dc8c34
 
dc8c34
 #ifdef MEMPOOL_EXPERIMENTAL
dc8c34
-  cfg->mempool_switch = LDAP_ON;
dc8c34
+  init_mempool_switch = cfg->mempool_switch = LDAP_ON;
dc8c34
   cfg->mempool_maxfreelist = 1024;
dc8c34
   cfg->system_page_size = sysconf(_SC_PAGE_SIZE);	/* not to get every time; no set, get only */
dc8c34
   {
dc8c34
@@ -1251,8 +1551,8 @@ config_value_is_null( const char *attrname, const char *value, char *errorbuf,
dc8c34
 		int or_zero_length )
dc8c34
 {
dc8c34
 	if ( NULL == value || ( or_zero_length && *value == '\0' )) {
dc8c34
-		PR_snprintf( errorbuf, SLAPI_DSE_RETURNTEXT_SIZE, "%s: NULL value",
dc8c34
-				attrname );
dc8c34
+		PR_snprintf( errorbuf, SLAPI_DSE_RETURNTEXT_SIZE,
dc8c34
+		             "%s: deleting the value is not allowed.", attrname );
dc8c34
 		return 1;
dc8c34
 	}
dc8c34
 
dc8c34
@@ -2731,7 +3031,6 @@ config_set_security( const char *attrname, char *value, char *errorbuf, int appl
dc8c34
   return retVal;
dc8c34
 }
dc8c34
 
dc8c34
-
dc8c34
 static int 
dc8c34
 config_set_onoff ( const char *attrname, char *value, int *configvalue,
dc8c34
 		char *errorbuf, int apply )
dc8c34
@@ -2744,7 +3043,10 @@ config_set_onoff ( const char *attrname, char *value, int *configvalue,
dc8c34
   }
dc8c34
   
dc8c34
   if ( strcasecmp ( value, "on" ) != 0 &&
dc8c34
-	   strcasecmp ( value, "off") != 0 ) {
dc8c34
+	   strcasecmp ( value, "off") != 0 && 
dc8c34
+	   /* initializing the value */
dc8c34
+	   (*(int *)value != LDAP_ON) &&
dc8c34
+	   (*(int *)value != LDAP_OFF)) {
dc8c34
 	PR_snprintf ( errorbuf, SLAPI_DSE_RETURNTEXT_SIZE,
dc8c34
 			"%s: invalid value \"%s\". Valid values are \"on\" or \"off\".",
dc8c34
 			attrname, value );
dc8c34
@@ -2760,9 +3062,10 @@ config_set_onoff ( const char *attrname, char *value, int *configvalue,
dc8c34
   
dc8c34
   if ( strcasecmp ( value, "on" ) == 0 ) {
dc8c34
 	*configvalue = LDAP_ON;
dc8c34
-  }
dc8c34
-  else if ( strcasecmp ( value, "off" ) == 0 ) {
dc8c34
+  } else if ( strcasecmp ( value, "off" ) == 0 ) {
dc8c34
 	*configvalue = LDAP_OFF;
dc8c34
+  } else {
dc8c34
+	*configvalue = *(int *)value;
dc8c34
   }
dc8c34
   
dc8c34
   CFG_UNLOCK_WRITE(slapdFrontendConfig);
dc8c34
@@ -3716,7 +4019,8 @@ config_set_errorlog_level( const char *attrname, char *value, char *errorbuf, in
dc8c34
 
dc8c34
 
dc8c34
 int
dc8c34
-config_set_accesslog_level( const char *attrname, char *value, char *errorbuf, int apply ) {
dc8c34
+config_set_accesslog_level( const char *attrname, char *value, char *errorbuf, int apply )
dc8c34
+{
dc8c34
   int retVal = LDAP_SUCCESS;
dc8c34
   long level = 0;
dc8c34
   char *endp = NULL;
dc8c34
@@ -4832,7 +5136,7 @@ config_get_accesslog(){
dc8c34
 }
dc8c34
 
dc8c34
 char *
dc8c34
-config_get_errorlog(  ){
dc8c34
+config_get_errorlog(){
dc8c34
   slapdFrontendConfig_t *slapdFrontendConfig = getFrontendConfig();
dc8c34
   char *retVal;
dc8c34
 
dc8c34
@@ -6341,10 +6645,10 @@ config_set(const char *attr, struct berval **values, char *errorbuf, int apply)
dc8c34
 		if ((NULL == values) &&
dc8c34
 			config_allowed_to_delete_attrs(cgas->attr_name)) {
dc8c34
 			if (cgas->setfunc) {
dc8c34
-				retval = (cgas->setfunc)(cgas->attr_name, NULL,
dc8c34
+				retval = (cgas->setfunc)(cgas->attr_name, cgas->initvalue,
dc8c34
 				                         errorbuf, apply);
dc8c34
 			} else if (cgas->logsetfunc) {
dc8c34
-				retval = (cgas->logsetfunc)(cgas->attr_name, NULL,
dc8c34
+				retval = (cgas->logsetfunc)(cgas->attr_name, cgas->initvalue,
dc8c34
 				                            cgas->whichlog, errorbuf, apply);
dc8c34
 			} else {
dc8c34
 				LDAPDebug1Arg(LDAP_DEBUG_ANY, 
dc8c34
-- 
dc8c34
1.8.1.4
dc8c34