]> git.sur5r.net Git - openldap/commitdiff
add -S to slapadd to set desired SID in generated entryCSN/contextCSN
authorPierangelo Masarati <ando@openldap.org>
Tue, 28 Aug 2007 19:35:57 +0000 (19:35 +0000)
committerPierangelo Masarati <ando@openldap.org>
Tue, 28 Aug 2007 19:35:57 +0000 (19:35 +0000)
doc/man/man8/slapadd.8
servers/slapd/slapadd.c
servers/slapd/slapcommon.c
servers/slapd/slapcommon.h

index 48c418f4acc905ec33031cab13d8c854c6afbe63..7cecd3d527030834689c431c3714072a47041735 100644 (file)
@@ -18,6 +18,7 @@ slapadd \- Add entries to a SLAPD database
 .B [\-o name[=value]
 .B [\-q]
 .B [\-s]
+.B [\-S SID]
 .B [\-u]
 .B [\-v]
 .B [\-w]
@@ -119,6 +120,10 @@ databases containing special objects, such as fractional objects on a
 partial replica.  Loading normal objects which do not conform to
 schema may result in unexpected and ill behavior.
 .TP
+.B \-S " SID"
+Server ID to use in generated entryCSN.  Also used for contextCSN
+if `\-w' is set as well.  Defaults to 0.
+.TP
 .B \-u
 enable dry-run (don't write to backend) mode.
 .TP
index a758955224a1c420fab84dcb0a94cca5b2aa2ac7..5f8d6be3644671f4ab2a53a43c2fcf5b89a9a42d 100644 (file)
@@ -67,6 +67,9 @@ slapadd( int argc, char **argv )
        int rc = EXIT_SUCCESS;
        int manage = 0; 
 
+       /* default "000" */
+       csnsid = 0;
+
        slap_tool_init( progname, SLAPADD, argc, argv );
 
        memset( &opbuf, 0, sizeof(opbuf) );
@@ -220,7 +223,7 @@ slapadd( int argc, char **argv )
                        nvals[1].bv_len = 0;
                        nvals[1].bv_val = NULL;
 
-                       csn.bv_len = lutil_csnstr( csnbuf, sizeof( csnbuf ), 0, 0 );
+                       csn.bv_len = lutil_csnstr( csnbuf, sizeof( csnbuf ), csnsid, 0 );
                        csn.bv_val = csnbuf;
 
                        timestamp.bv_val = timebuf;
index 5df004555741f1384aaa98b8d3846aa1ff0f9905..adf5a60323305ee1383312698c1015578109cd8b 100644 (file)
@@ -241,7 +241,7 @@ slap_tool_init(
 
        switch( tool ) {
        case SLAPADD:
-               options = "b:cd:f:F:gj:l:n:o:qstuvw";
+               options = "b:cd:f:F:gj:l:n:o:qsS:tuvw";
                break;
 
        case SLAPCAT:
@@ -384,6 +384,14 @@ slap_tool_init(
                        realm = optarg;
                        break;
 
+               case 'S':
+                       if ( lutil_atoul( &csnsid, optarg )
+                               || csnsid > SLAP_SYNC_SID_MAX )
+                       {
+                               usage( tool, progname );
+                       }
+                       break;
+
                case 's':       /* dump subtree */
                        if ( tool == SLAPADD )
                                mode |= SLAP_TOOL_NO_SCHEMA_CHECK;
index 0fc4f09e1554cc22c2e5f0a2015f4e7f38262763..d48d2179750265273badf0a1947b8a198acf8a44 100644 (file)
@@ -60,6 +60,7 @@ typedef struct tool_vars {
        slap_ssf_t tv_tls_ssf;
        slap_ssf_t tv_sasl_ssf;
        unsigned tv_dn_mode;
+       unsigned int tv_csnsid;
 } tool_vars;
 
 extern tool_vars tool_globals;
@@ -91,6 +92,7 @@ extern tool_vars tool_globals;
 #define tls_ssf tool_globals.tv_tls_ssf
 #define sasl_ssf tool_globals.tv_sasl_ssf
 #define dn_mode tool_globals.tv_dn_mode
+#define csnsid tool_globals.tv_csnsid
 #define SLAP_TOOL_LDAPDN_PRETTY                SLAP_LDAPDN_PRETTY
 #define SLAP_TOOL_LDAPDN_NORMAL                (SLAP_LDAPDN_PRETTY << 1)