Browse Source

Resolves: #245407
Summary: Add config attributes to cn=config to support Console (comment #1)
Description: Console needs to know the default paths for ldif_dir and bak_dir.
Adding the paths to cn=config.

Noriko Hosoi 18 years ago
parent
commit
27fdf0afda
3 changed files with 87 additions and 0 deletions
  1. 79 0
      ldap/servers/slapd/libglobs.c
  2. 4 0
      ldap/servers/slapd/proto-slap.h
  3. 4 0
      ldap/servers/slapd/slap.h

+ 79 - 0
ldap/servers/slapd/libglobs.c

@@ -558,6 +558,14 @@ static struct config_get_and_set {
 	{CONFIG_CERTDIR_ATTRIBUTE, config_set_certdir,
 		NULL, 0,
 		(void**)&global_slapdFrontendConfig.certdir, CONFIG_STRING, config_get_certdir},
+	/* parameterizing ldif dir */
+	{CONFIG_LDIFDIR_ATTRIBUTE, config_set_ldifdir,
+		NULL, 0,
+		(void**)&global_slapdFrontendConfig.ldifdir, CONFIG_STRING, config_get_ldifdir},
+	/* parameterizing bak dir */
+	{CONFIG_BAKDIR_ATTRIBUTE, config_set_bakdir,
+		NULL, 0,
+		(void**)&global_slapdFrontendConfig.bakdir, CONFIG_STRING, config_get_bakdir},
 	/* parameterizing sasl plugin path */
 	{CONFIG_SASLPATH_ATTRIBUTE, config_set_saslpath,
 		NULL, 0,
@@ -4598,6 +4606,77 @@ config_set_certdir(const char *attrname, char *value, char *errorbuf, int apply)
 	return retVal;
 }
 
+char *
+config_get_ldifdir()
+{
+	slapdFrontendConfig_t *slapdFrontendConfig = getFrontendConfig();
+	char *retVal;
+
+	CFG_LOCK_READ(slapdFrontendConfig);
+	retVal = config_copy_strval(slapdFrontendConfig->ldifdir);
+	CFG_UNLOCK_READ(slapdFrontendConfig);
+
+	return retVal; 
+}
+
+int
+config_set_ldifdir(const char *attrname, char *value, char *errorbuf, int apply)
+{
+	int retVal = LDAP_SUCCESS;
+	slapdFrontendConfig_t *slapdFrontendConfig = getFrontendConfig();
+  
+	if ( config_value_is_null( attrname, value, errorbuf, 0 )) {
+		return LDAP_OPERATIONS_ERROR;
+	}
+  
+	if (!apply) {
+		return retVal;
+	}
+
+	CFG_LOCK_WRITE(slapdFrontendConfig);
+	slapi_ch_free((void **)&slapdFrontendConfig->ldifdir);
+
+	slapdFrontendConfig->ldifdir = slapi_ch_strdup(value);
+  
+	CFG_UNLOCK_WRITE(slapdFrontendConfig);
+	return retVal;
+}
+
+char *
+config_get_bakdir()
+{
+	slapdFrontendConfig_t *slapdFrontendConfig = getFrontendConfig();
+	char *retVal;
+
+	CFG_LOCK_READ(slapdFrontendConfig);
+	retVal = config_copy_strval(slapdFrontendConfig->bakdir);
+	CFG_UNLOCK_READ(slapdFrontendConfig);
+
+	return retVal; 
+}
+
+int
+config_set_bakdir(const char *attrname, char *value, char *errorbuf, int apply)
+{
+	int retVal = LDAP_SUCCESS;
+	slapdFrontendConfig_t *slapdFrontendConfig = getFrontendConfig();
+  
+	if ( config_value_is_null( attrname, value, errorbuf, 0 )) {
+		return LDAP_OPERATIONS_ERROR;
+	}
+  
+	if (!apply) {
+		return retVal;
+	}
+
+	CFG_LOCK_WRITE(slapdFrontendConfig);
+	slapi_ch_free((void **)&slapdFrontendConfig->bakdir);
+
+	slapdFrontendConfig->bakdir = slapi_ch_strdup(value);
+  
+	CFG_UNLOCK_WRITE(slapdFrontendConfig);
+	return retVal;
+}
 char *
 config_get_saslpath()
 {

+ 4 - 0
ldap/servers/slapd/proto-slap.h

@@ -320,6 +320,8 @@ int config_set_schemadir( const char *attrname, char *value, char *errorbuf, int
 int config_set_lockdir( const char *attrname, char *value, char *errorbuf, int apply );
 int config_set_tmpdir( const char *attrname, char *value, char *errorbuf, int apply );
 int config_set_certdir( const char *attrname, char *value, char *errorbuf, int apply );
+int config_set_ldifdir( const char *attrname, char *value, char *errorbuf, int apply );
+int config_set_bakdir( const char *attrname, char *value, char *errorbuf, int apply );
 int config_set_saslpath( const char *attrname, char *value, char *errorbuf, int apply );
 int config_set_attrname_exceptions( const char *attrname, char *value, char *errorbuf, int apply );
 int config_set_hash_filters( const char *attrname, char *value, char *errorbuf, int apply );
@@ -430,6 +432,8 @@ char *config_get_schemadir();
 char *config_get_lockdir();
 char *config_get_tmpdir();
 char *config_get_certdir();
+char *config_get_ldifdir();
+char *config_get_bakdir();
 char *config_get_saslpath();
 char **config_get_errorlog_list();
 char **config_get_accesslog_list();

+ 4 - 0
ldap/servers/slapd/slap.h

@@ -1728,6 +1728,8 @@ typedef struct _slapdEntryPoints {
 #define CONFIG_LOCKDIR_ATTRIBUTE "nsslapd-lockdir"
 #define CONFIG_TMPDIR_ATTRIBUTE "nsslapd-tmpdir"
 #define CONFIG_CERTDIR_ATTRIBUTE "nsslapd-certdir"
+#define CONFIG_LDIFDIR_ATTRIBUTE "nsslapd-ldifdir"
+#define CONFIG_BAKDIR_ATTRIBUTE "nsslapd-bakdir"
 #define CONFIG_SASLPATH_ATTRIBUTE "nsslapd-saslpath"
 #define CONFIG_SSLCLIENTAUTH_ATTRIBUTE "nsslapd-SSLclientAuth"
 #define CONFIG_SSL_CHECK_HOSTNAME_ATTRIBUTE "nsslapd-ssl-check-hostname"
@@ -1906,6 +1908,8 @@ typedef struct _slapdFrontendConfig {
   char *lockdir;    /* full path name of directory containing lock files */
   char *tmpdir;     /* full path name of directory containing tmp files */
   char *certdir;    /* full path name of directory containing cert files */
+  char *ldifdir;    /* full path name of directory containing ldif files */
+  char *bakdir;     /* full path name of directory containing bakup files */
   char *saslpath;   /* full path name of directory containing sasl plugins */
   int attrname_exceptions;  /* if true, allow questionable attribute names */
   int rewrite_rfc1274;		/* return attrs for both v2 and v3 names */