]> git.sur5r.net Git - openldap/commitdiff
Add an LDBM backend "directory" directive (in addition to
authorKurt Zeilenga <kurt@openldap.org>
Tue, 29 May 2001 01:51:37 +0000 (01:51 +0000)
committerKurt Zeilenga <kurt@openldap.org>
Tue, 29 May 2001 01:51:37 +0000 (01:51 +0000)
the existing database "directory" directive) to allow setting
of a DB_ENV directory.  Should likely be database specific.

13 files changed:
doc/man/man5/slapd.conf.5
servers/slapd/back-ldbm/back-ldbm.h
servers/slapd/back-ldbm/config.c
servers/slapd/back-ldbm/external.h
servers/slapd/back-ldbm/init.c
tests/data/slapd-acl.conf
tests/data/slapd-master.conf
tests/data/slapd-pw.conf
tests/data/slapd-ref-slave.conf
tests/data/slapd-repl-master.conf
tests/data/slapd-repl-slave.conf
tests/data/slapd-schema.conf
tests/data/slapd.conf

index b03bbba9e580016e966c555d490310f870d2561e..70cebdda213d500ade15cde5439a0df6e81ce6fd 100644 (file)
@@ -1,5 +1,5 @@
-.TH SLAPD.CONF 5 "17 October 2000" "OpenLDAP LDVERSION"
-.\" Copyright 1998-2000 The OpenLDAP Foundation All Rights Reserved.
+.TH SLAPD.CONF 5 "28 May 2001" "OpenLDAP LDVERSION"
+.\" Copyright 1998-2001 The OpenLDAP Foundation All Rights Reserved.
 .\" Copying restrictions apply.  See COPYRIGHT/LICENSE.
 .\" $OpenLDAP$
 .SH NAME
@@ -56,9 +56,10 @@ backslash character (`\\'), the character should be preceded by a
 backslash character.
 .LP
 The specific configuration options available are discussed below in the
-Global Configuration Options, General Backend Options, LDBM
-Backend-Specific Options, Shell Backend-Specific Options, and Password
-Backend-Specific Options sections.  Refer to the "OpenLDAP
+Global Configuration Options, General Backend Options, General Database
+Options, LDBM Backend-Specific Options, LDBM Database-Specific Options,
+Shell Database-Specific Options, and Password
+Database-Specific Options sections.  Refer to the "OpenLDAP
 Administrator's Guide" for more details on the slapd configuration
 file.
 .SH GLOBAL CONFIGURATION OPTIONS
@@ -480,7 +481,21 @@ is not available.  Generally set to the name of the EGD/PRNGD socket.
 The environment variable RANDFILE can also be used to specify the filename.
 .SH GENERAL BACKEND OPTIONS
 Options in this section only apply to the configuration file section
-for the backend in which they are defined.  They are supported by every
+for the specified backend.  They are supported by every
+type of backend.
+.TP
+.B backend <databasetype>
+Mark the beginning of a backend definition. <databasetype>
+should be one of
+.B ldbm,
+.B shell,
+or
+.B passwd
+depending on which backend will serve the database.
+
+.SH GENERAL DATABASE OPTIONS
+Options in this section only apply to the configuration file section
+for the database in which they are defined.  They are supported by every
 type of backend.
 .TP
 .B database <databasetype>
@@ -590,10 +605,20 @@ Specify the referral to pass back when
 is asked to modify a replicated local database.
 If specified multiple times, each url is provided.
 .SH LDBM BACKEND-SPECIFIC OPTIONS
-Options in this category only apply to the LDBM backend database. That is,
-they must follow a "database ldbm" line and come before any subsequent
-"database" lines.  The LDBM backend is a high-performance database that
-makes extensive use of indexing and caching to speed data access. 
+Options in this category only apply to the LDBM backend. That is,
+they must follow "backend ldbm" line and come before any subsequent
+"backend" or "database" lines.  The LDBM backend is a high-performance
+database that makes extensive use of indexing and caching to speed
+data access. 
+.TP
+.B directory <directory>
+Specify the directory where shared LDBM files, namely those associated
+with a BerkeleyDB environment, for all LDBM databases are kept.
+The default is unset.
+.SH LDBM DATABASE-SPECIFIC OPTIONS
+Options in this category only apply to the LDBM databases. That is,
+they must follow "database ldbm" line and come before any subsequent
+"backend" or "database" lines.
 .TP
 .B cachesize <integer>
 Specify the size in entries of the in-memory cache maintained 
@@ -649,10 +674,10 @@ other subtypes.
 .B mode <integer>
 Specify the file protection mode that newly created database 
 index files should have.  The default is 0600.
-.SH SHELL BACKEND-SPECIFIC OPTIONS
+.SH SHELL DATABASE-SPECIFIC OPTIONS
 Options in this category only apply to the SHELL backend database. That is,
 they must follow a "database shell" line and come before any subsequent
-"database" lines.  The Shell backend executes external programs to
+"backend" or "database" lines.  The Shell backend executes external programs to
 implement operations, and is designed to make it easy to tie an existing
 database to the
 .B slapd
@@ -681,10 +706,10 @@ to the given LDAP operation.
 Note that you need only supply configuration lines for those commands you
 want the backend to handle. Operations for which a command is not
 supplied will be refused with an "unwilling to perform" error.
-.SH PASSWORD BACKEND-SPECIFIC OPTIONS
+.SH PASSWORD DATABASE-SPECIFIC OPTIONS
 Options in this category only apply to the PASSWD backend database.
 That is, they must follow a "database passwd" line and come before any
-subsequent "database" lines.  The PASSWD database serves up the user
+subsequent "backend" or "database" lines.  The PASSWD database serves up the user
 account information listed in the system
 .BR passwd (5)
 file.
index b1b374b1a76299a00a31962d40c763540e58a616..04ef6c4637fe090c72bbc5d9778bd181b4fb9220 100644 (file)
@@ -119,6 +119,10 @@ struct ldbminfo {
        ldap_pvt_thread_cond_t          li_dbcache_cv;
 };
 
+struct ldbm_backend_info {
+       char    *lbi_directory;
+};
+
 LDAP_END_DECL
 
 #include "proto-back-ldbm.h"
index a6c3e15a5b189af9be5a66d597e9b57fc2d361d1..60c6f4609df15b27f4eb88c58e40791a447e10cd 100644 (file)
 #include "back-ldbm.h"
 
 
+int
+ldbm_back_config(
+    BackendInfo        *bi,
+    const char *fname,
+    int                lineno,
+    int                argc,
+    char       **argv
+)
+{
+       int rc;
+       struct ldbm_backend_info *lbi =
+               (struct ldbm_backend_info *) bi->bi_private;
+
+       if ( lbi == NULL ) {
+               fprintf( stderr, "%s: line %d: ldbm backend info is null!\n",
+                   fname, lineno );
+               return 1;
+       }
+
+       /* directory where database files live */
+       if ( strcasecmp( argv[0], "directory" ) == 0 ) {
+               if ( argc < 2 ) {
+                       fprintf( stderr,
+               "%s: line %d: missing dir in \"directory <dir>\" line\n",
+                           fname, lineno );
+                       return( 1 );
+               }
+               if ( lbi->lbi_directory ) {
+                       free( lbi->lbi_directory );
+               }
+               lbi->lbi_directory = ch_strdup( argv[1] );
+
+       /* anything else */
+       } else {
+               fprintf( stderr,
+"%s: line %d: unknown directive \"%s\" in ldbm backend definition (ignored)\n",
+                   fname, lineno, argv[0] );
+       }
+
+       return 0;
+}
+
 int
 ldbm_back_db_config(
     Backend    *be,
index 76a3771f0501c5cc3e4547451766071354be06b5..03d937ea548c6d80ad28d8cae8ccb683cd9feb7d 100644 (file)
@@ -13,6 +13,9 @@ extern int    ldbm_back_initialize LDAP_P(( BackendInfo *bi ));
 extern int     ldbm_back_open LDAP_P(( BackendInfo *bi ));
 extern int     ldbm_back_close LDAP_P(( BackendInfo *bi ));
 extern int     ldbm_back_destroy LDAP_P(( BackendInfo *bi ));
+extern int     ldbm_back_config LDAP_P(( BackendInfo *bi,
+       const char *fname, int lineno,
+       int argc, char **argv ));
 
 extern int     ldbm_back_db_init LDAP_P(( BackendDB *bd ));
 extern int     ldbm_back_db_open LDAP_P(( BackendDB *bd ));
index 10727040839af5feb483bbb5b60eb240d3482071..0d339543d467ebf1b1c17ea688e0313039a97594 100644 (file)
@@ -43,7 +43,7 @@ ldbm_back_initialize(
        bi->bi_controls = controls;
 
        bi->bi_open = ldbm_back_open;
-       bi->bi_config = 0;
+       bi->bi_config = ldbm_back_config;
        bi->bi_close = ldbm_back_close;
        bi->bi_destroy = ldbm_back_destroy;
 
@@ -85,6 +85,14 @@ ldbm_back_initialize(
        bi->bi_connection_init = 0;
        bi->bi_connection_destroy = 0;
 
+       {
+               struct ldbm_backend_info *lbi = malloc(
+                       sizeof( struct ldbm_backend_info ) );
+
+               bi->bi_private = lbi;
+               lbi->lbi_directory = NULL;
+       }
+
        return 0;
 }
 
@@ -103,8 +111,11 @@ ldbm_back_open(
 {
        int rc;
 
+       struct ldbm_backend_info *lbi
+               = (struct ldbm_backend_info *) bi->bi_private;
+
        /* initialize the underlying database system */
-       rc = ldbm_initialize( NULL );
+       rc = ldbm_initialize( lbi->lbi_directory );
        return rc;
 }
 
index da39acbccd533f3af27b7484b511c1bb2361dc2e..eb2ed5237dd447ed0b91c80eab413022bb5f910d 100644 (file)
@@ -14,6 +14,9 @@ argsfile    ./test-db/slapd.args
 # ldbm database definitions
 #######################################################################
 
+backend @BACKEND@
+#LDBM#directory ./test-db
+
 database       @BACKEND@
 cachesize      0
 suffix         "o=University of Michigan, c=US"
index 9934499be6bb546b0b7d8355f777fb8b93b33c78..a6e92b4c92e806c909a7c469759dadeaa1fdcf6a 100644 (file)
@@ -14,6 +14,9 @@ argsfile    ./test-db/slapd.args
 # ldbm database definitions
 #######################################################################
 
+backend @BACKEND@
+#LDBM#directory ./test-db
+
 database       @BACKEND@
 suffix         "o=University of Michigan, c=US"
 directory      ./test-db
index 509a1e21c1b17994638b45bb81c7438fc1b7997e..4a894fd9f25b4a61dcfaee9f64dc521532c13bf3 100644 (file)
@@ -16,6 +16,9 @@ argsfile    ./test-db/slapd.args
 # ldbm database definitions
 #######################################################################
 
+backend @BACKEND@
+#LDBM#directory ./test-db
+
 database       @BACKEND@
 cachesize      0
 suffix         "o=University of Michigan, c=US"
index 305faa8ead869dda1e0c74ff780cc59b79763ea8..4d81cd41373dab0c9f58eeed992ab3d65a117c50 100644 (file)
@@ -18,6 +18,9 @@ argsfile    ./test-repl/slapd.args
 
 referral       "ldap://localhost:9009/"
 
+backend @BACKEND@
+#LDBM#directory ./test-repl
+
 database       @BACKEND@
 cachesize      0
 suffix         "o=University of Mich, c=US"
index 9eea2a08da50cbc59b7d80075ce76f2a4b66b162..4a8a22b2cf41b511312dc6e34e20aa118c50a8fa 100644 (file)
@@ -16,6 +16,9 @@ argsfile    ./test-db/slapd.args
 # ldbm database definitions
 #######################################################################
 
+backend @BACKEND@
+#LDBM#directory ./test-db
+
 database       @BACKEND@
 cachesize      0
 suffix         "o=University of Michigan, c=US"
index 8086ba7487610ce747c9006898170e539aad85b5..70c0d6b0b85cf6d3c157cdcc89b2e0e598e38413 100644 (file)
@@ -17,6 +17,9 @@ argsfile    ./test-repl/slapd.args
 # ldbm database definitions
 #######################################################################
 
+backend @BACKEND@
+#LDBM#directory ./test-repl
+
 database       @BACKEND@
 cachesize      0
 suffix         "o=University of Michigan, c=US"
index c66d35127f76a60400522238a40e2457fd85e000..fd7ba59fd88bf1c0d1e6c07e491d65e7a0c596a3 100644 (file)
@@ -25,6 +25,9 @@ argsfile    ./test-db/slapd.args
 # ldbm database definitions
 #######################################################################
 
+backend @BACKEND@
+#LDBM#directory ./test-db
+
 database       @BACKEND@
 suffix         "o=OpenLDAP Project, l=Internet"
 directory      ./test-db
index 5b47d50763f8d9a98862c44ae4ba1dda81446a09..51c3076c1244e3d392594e395cc1a1debd898833 100644 (file)
@@ -15,6 +15,9 @@ argsfile    ./test-db/slapd.args
 # ldbm database definitions
 #######################################################################
 
+backend @BACKEND@
+#LDBM#directory ./test-db
+
 database       @BACKEND@
 suffix         "o=University of Michigan, c=US"
 directory      ./test-db