]> git.sur5r.net Git - openldap/commitdiff
Dynamic config for back-passwd
authorQuanah Gibson-Mount <quanah@openldap.org>
Fri, 4 Nov 2011 22:55:53 +0000 (15:55 -0700)
committerQuanah Gibson-Mount <quanah@openldap.org>
Fri, 4 Nov 2011 22:55:53 +0000 (15:55 -0700)
servers/slapd/back-passwd/back-passwd.h
servers/slapd/back-passwd/config.c
servers/slapd/back-passwd/init.c
servers/slapd/back-passwd/proto-passwd.h

index 139cb44dc7c5d31556ecb7046223f41aef3b0c14..2eefbdc1a89466aa0ed3c2f80b0d30b98fbc71a0 100644 (file)
@@ -24,8 +24,6 @@ extern ldap_pvt_thread_mutex_t passwd_mutex;
 
 extern BI_destroy      passwd_back_destroy;
 
-extern BI_db_config    passwd_back_db_config;
-
 extern BI_op_search    passwd_back_search;
 
 LDAP_END_DECL
index a41ab0fbd77ced3f864c5964916830ab57fd88dc..1ab28d06a67e5c7c202cb2c2ab5d1ad6653e1e1a 100644 (file)
 
 #include "slap.h"
 #include "back-passwd.h"
+#include "config.h"
 
-int
-passwd_back_db_config(
-    BackendDB  *be,
-    const char *fname,
-    int                lineno,
-    int                argc,
-    char       **argv
-)
-{
-       /* alternate passwd file */
-       if ( strcasecmp( argv[0], "file" ) == 0 ) {
+static ConfigTable passwdcfg[] = {
+       { "file", "filename", 2, 2, 0,
 #ifdef HAVE_SETPWFILE
-               if ( argc < 2 ) {
-                       fprintf( stderr,
-               "%s: line %d: missing filename in \"file <filename>\" line\n",
-                           fname, lineno );
-                       return( 1 );
-               }
-               be->be_private = ch_strdup( argv[1] );
-#else /* HAVE_SETPWFILE */
-               fprintf( stderr,
-    "%s: line %d: ignoring \"file\" option (not supported on this platform)\n",
-                           fname, lineno );
-#endif /* HAVE_SETPWFILE */
+               ARG_STRING, NULL,
+#else
+               ARG_IGNORED, NULL,
+#endif
+               "( OLcfgDbAt:9.1 NAME 'olcPasswdFile' "
+                       "DESC 'File containing passwd records' "
+                       "EQUALITY caseExactMatch "
+                       "SYNTAX OMsDirectoryString SINGLE-VALUE )", NULL, NULL },
+       { NULL, NULL, 0, 0, 0, ARG_IGNORED,
+               NULL, NULL, NULL, NULL }
+};
 
-       /* anything else */
-       } else {
-               return SLAP_CONF_UNKNOWN;
-       }
+static ConfigOCs passwdocs[] = {
+       { "( OLcfgDbOc:9.1 "
+                       "NAME 'olcPasswdConfig' "
+                       "DESC 'Passwd backend configuration' "
+                       "SUP olcDatabaseConfig "
+                       "MAY olcPasswdFile )",
+                       Cft_Database, passwdcfg },
+       { NULL, 0, NULL }
+};
 
-       return( 0 );
+int
+passwd_back_init_cf( BackendInfo *bi )
+{
+       bi->bi_cf_ocs = passwdocs;
+       return config_register_schema( passwdcfg, passwdocs );
 }
index 8d21538b1aeab69de5a9e7e51d98cd951021af1e..78c48a7a37aff62681ed714bb8732e823461cba4 100644 (file)
@@ -41,7 +41,7 @@ passwd_back_initialize(
        bi->bi_destroy = passwd_back_destroy;
 
        bi->bi_db_init = 0;
-       bi->bi_db_config = passwd_back_db_config;
+       bi->bi_db_config = 0;
        bi->bi_db_open = 0;
        bi->bi_db_close = 0;
        bi->bi_db_destroy = 0;
@@ -63,7 +63,7 @@ passwd_back_initialize(
        bi->bi_connection_init = 0;
        bi->bi_connection_destroy = 0;
 
-       return 0;
+       return passwd_back_init_cf( bi );
 }
 
 int
index 4da4b67d96ab404e504b78089d7964cf9457b35a..a626ab2c0268074849db08093fc123c68d21b709 100644 (file)
@@ -21,11 +21,13 @@ LDAP_BEGIN_DECL
 extern BI_init         passwd_back_initialize;
 extern BI_open         passwd_back_open;
 extern BI_destroy      passwd_back_destroy;
-extern BI_db_config    passwd_back_db_config;
 extern BI_op_search    passwd_back_search;
 
+extern int passwd_back_init_cf( BackendInfo *bi );
+
 extern AttributeDescription    *ad_sn;
 extern AttributeDescription    *ad_desc;
+
 LDAP_END_DECL
 
 #endif /* PROTO_PASSWD_H */