andykimpe / rpms / 389-ds-base

Forked from rpms/389-ds-base 5 months ago
Clone
Blob Blame History Raw
From 9cc7fade0b5440479b39ddbcb989e5ed220b267f Mon Sep 17 00:00:00 2001
From: Noriko Hosoi <nhosoi@totoro.usersys.redhat.com>
Date: Tue, 6 Nov 2012 18:15:46 -0800
Subject: [PATCH 239/243] Trac Ticket #443 - Deleting attribute present in    
 nsslapd-allowed-to-delete-attrs returns Operations error

https://fedorahosted.org/389/ticket/443

Bug Description: Even if setting a config parameter to nsslapd-
allowed-to-delete-attrs, the value failed to delete if the type
was on|off or integer.

Fix Description: Store all the initial config param values in
ConfigList.  If the attribute value is deleted, reset the initial
value.
(cherry picked from commit 90dd9bb3c1411daca353d055d90618e67aa1fa7e)
(cherry picked from commit 77cb32ceb9548e6a49c55a754a82c5383adb9910)
---
 ldap/servers/slapd/libglobs.c | 928 ++++++++++++++++++++++++++++--------------
 1 file changed, 616 insertions(+), 312 deletions(-)

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