summaryrefslogtreecommitdiffstats
path: root/ldap/servers/slapd/slap.h
diff options
context:
space:
mode:
authorNoriko Hosoi <nhosoi@redhat.com>2010-01-22 09:47:52 -0800
committerNoriko Hosoi <nhosoi@jiji.localdomain>2010-01-22 10:36:16 -0800
commitb5e653a844af60596f9bc6b16349ee902ddb51f5 (patch)
treed22f47113e303de236e9a9b01376cb6e3d14486f /ldap/servers/slapd/slap.h
parent4d93699a71acb061c5787d2b8b61a0417ce02808 (diff)
downloadds-b5e653a844af60596f9bc6b16349ee902ddb51f5.tar.gz
ds-b5e653a844af60596f9bc6b16349ee902ddb51f5.tar.xz
ds-b5e653a844af60596f9bc6b16349ee902ddb51f5.zip
Allow modrdn to move subtree and rename non-leaf node
This patch includes - replacing the entrydn index with the entryrdn index - replacing a full DN in each entry in the DB with an RDN - extending Slapi_Entry, entry2str, and str2entry to absorb the changes made on the entry - adding DN/RDN helper functions - adding DN cache - adding a utility and a migration script to convert the DN format database to the RDN format - extending a database dump utility dbscan to support the entryrdn - slapi_dn_syntax_check by nkinder@redhat.com is added to check the dn before modify operations - big fix for 171338 - Enhancement: winsync modrdn not synced In addition to the above, compile warnings and memory leaks found in testing the new feature are fixed. For more details, see the feature design document at: http://directory.fedoraproject.org/wiki/Subtree_Rename and bugzilla at: https://bugzilla.redhat.com/show_bug.cgi?id=171338
Diffstat (limited to 'ldap/servers/slapd/slap.h')
-rw-r--r--ldap/servers/slapd/slap.h31
1 files changed, 20 insertions, 11 deletions
diff --git a/ldap/servers/slapd/slap.h b/ldap/servers/slapd/slap.h
index 93f8470d..08de2c15 100644
--- a/ldap/servers/slapd/slap.h
+++ b/ldap/servers/slapd/slap.h
@@ -577,13 +577,19 @@ struct slapi_dn
/*
* Represents a Relative Distinguished Name.
*/
+#define FLAG_RDNS 0
+#define FLAG_ALL_RDNS 1
+#define FLAG_ALL_NRDNS 2
struct slapi_rdn
{
unsigned char flag;
char *rdn;
- char **rdns; /* Valid when FLAG_RDNS is set. */
+ char **rdns; /* Valid when FLAG_RDNS is set. */
int butcheredupto; /* How far through rdns we've gone converting '=' to '\0' */
+ char *nrdn; /* normalized rdn */
+ char **all_rdns; /* Valid when FLAG_ALL_RDNS is set. */
+ char **all_nrdns; /* Valid when FLAG_ALL_NRDNS is set. */
};
/*
@@ -603,17 +609,19 @@ struct slapi_rdn
* function
*/
struct slapi_entry {
- struct slapi_dn e_sdn; /* DN of this entry */
- char *e_uniqueid; /* uniqueID of this entry */
- CSNSet *e_dncsnset; /* The set of DN CSNs for this entry */
- CSN *e_maxcsn; /* maximum CSN of the entry */
- Slapi_Attr *e_attrs; /* list of attributes and values */
+ struct slapi_dn e_sdn; /* DN of this entry */
+ struct slapi_rdn e_srdn; /* RDN of this entry */
+ char *e_uniqueid; /* uniqueID of this entry */
+ CSNSet *e_dncsnset; /* The set of DN CSNs for this entry */
+ CSN *e_maxcsn; /* maximum CSN of the entry */
+ Slapi_Attr *e_attrs; /* list of attributes and values */
Slapi_Attr *e_deleted_attrs; /* deleted list of attributes and values */
- Slapi_Attr *e_virtual_attrs; /* list of virtual attributes */
- time_t e_virtual_watermark; /* indicates cache consistency when compared to global watermark */
- PRRWLock *e_virtual_lock; /* for access to cached vattrs */
- void *e_extension; /* A list of entry object extensions */
- unsigned char e_flags;
+ Slapi_Attr *e_virtual_attrs; /* list of virtual attributes */
+ time_t e_virtual_watermark; /* indicates cache consistency when compared
+ to global watermark */
+ PRRWLock *e_virtual_lock; /* for access to cached vattrs */
+ void *e_extension; /* A list of entry object extensions */
+ unsigned char e_flags;
};
/*
@@ -2014,6 +2022,7 @@ typedef struct _slapdFrontendConfig {
char *workingdir; /* full path of directory before detach */
char *configdir; /* full path name of directory containing configuration files */
char *schemadir; /* full path name of directory containing schema files */
+ char *instancedir;/* full path name of instance directory */
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 */