summaryrefslogtreecommitdiffstats
path: root/ldap/servers/slapd/main.c
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/main.c
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/main.c')
-rw-r--r--ldap/servers/slapd/main.c32
1 files changed, 17 insertions, 15 deletions
diff --git a/ldap/servers/slapd/main.c b/ldap/servers/slapd/main.c
index 3cad84b8..375fc4a2 100644
--- a/ldap/servers/slapd/main.c
+++ b/ldap/servers/slapd/main.c
@@ -439,7 +439,7 @@ usage( char *name, char *extraname )
usagestr = "usage: %s %s%s -D configdir {-s suffix}*\n";
break;
case SLAPD_EXEMODE_UPGRADEDB:
- usagestr = "usage: %s %s%s-D configdir [-d debuglevel] [-f] -a archivedir\n";
+ usagestr = "usage: %s %s%s-D configdir [-d debuglevel] [-f] [-r] -a archivedir\n";
break;
case SLAPD_EXEMODE_DBVERIFY:
usagestr = "usage: %s %s%s-D configdir [-d debuglevel] [-n backend-instance-name]\n";
@@ -483,7 +483,7 @@ static int ldif2db_generate_uniqueid = SLAPI_UNIQUEID_GENERATE_TIME_BASED;
static int dbverify_verbose = 0;
static char *ldif2db_namespaceid = NULL;
int importexport_encrypt = 0;
-static int upgradedb_force = 0;
+static int upgradedb_flags = 0;
/* taken from idsktune */
#if defined(__sun)
@@ -1398,11 +1398,12 @@ process_command_line(int argc, char **argv, char *myname,
{"exclude",ArgRequired,'x'},
{0,0,0}};
- char *opts_upgradedb = "vfd:a:D:";
+ char *opts_upgradedb = "vfrd:a:D:";
struct opt_ext long_options_upgradedb[] = {
{"version",ArgNone,'v'},
{"debug",ArgRequired,'d'},
{"force",ArgNone,'f'},
+ {"dn2rdn",ArgNone,'r'},
{"archive",ArgRequired,'a'},
{"configDir",ArgRequired,'D'},
{0,0,0}};
@@ -1639,17 +1640,18 @@ process_command_line(int argc, char **argv, char *myname,
break;
case 'r': /* db2ldif for replication */
if (slapd_exemode == SLAPD_EXEMODE_REFERRAL) {
- if (config_set_referral_mode( "referral (-r)", optarg_ext,
+ if (config_set_referral_mode( "referral (-r)", optarg_ext,
errorbuf, CONFIG_APPLY) != LDAP_SUCCESS) {
- fprintf(stderr, "%s: aborting now\n",
- errorbuf);
- usage(myname, *extraname);
- exit(1);
- }
- break;
- }
- if (slapd_exemode != SLAPD_EXEMODE_DB2LDIF ) {
- usage( myname, *extraname );
+ fprintf(stderr, "%s: aborting now\n", errorbuf);
+ usage(myname, *extraname);
+ exit(1);
+ }
+ break;
+ } else if ( slapd_exemode == SLAPD_EXEMODE_UPGRADEDB ) {
+ upgradedb_flags |= SLAPI_UPGRADEDB_DN2RDN;
+ break;
+ } else if (slapd_exemode != SLAPD_EXEMODE_DB2LDIF ) {
+ usage( myname, *extraname );
exit( 1 );
}
db2ldif_dump_replica = 1;
@@ -1842,7 +1844,7 @@ process_command_line(int argc, char **argv, char *myname,
usage( myname, *extraname );
exit( 1 );
}
- upgradedb_force = SLAPI_UPGRADEDB_FORCE;
+ upgradedb_flags |= SLAPI_UPGRADEDB_FORCE;
break;
case '1': /* db2ldif only */
if ( slapd_exemode != SLAPD_EXEMODE_DB2LDIF ) {
@@ -2651,7 +2653,7 @@ slapd_exemode_upgradedb()
pb.pb_backend = NULL;
pb.pb_plugin = backend_plugin;
pb.pb_seq_val = archive_name;
- pb.pb_seq_type = upgradedb_force;
+ pb.pb_seq_type = upgradedb_flags;
pb.pb_task_flags = SLAPI_TASK_RUNNING_FROM_COMMANDLINE;
/* borrowing import code, so need to set up the import variables */
pb.pb_ldif_generate_uniqueid = ldif2db_generate_uniqueid;