From e3a5e9d060ac42048229e41538172342c3d80e18 Mon Sep 17 00:00:00 2001 From: Howard Chu Date: Fri, 4 Feb 2011 12:22:17 +0000 Subject: [PATCH] Dynamic config for back-passwd --- servers/slapd/back-passwd/back-passwd.h | 2 - servers/slapd/back-passwd/config.c | 56 ++++++++++++------------ servers/slapd/back-passwd/init.c | 4 +- servers/slapd/back-passwd/proto-passwd.h | 4 +- servers/slapd/bconfig.c | 3 +- 5 files changed, 35 insertions(+), 34 deletions(-) diff --git a/servers/slapd/back-passwd/back-passwd.h b/servers/slapd/back-passwd/back-passwd.h index 139cb44dc7..2eefbdc1a8 100644 --- a/servers/slapd/back-passwd/back-passwd.h +++ b/servers/slapd/back-passwd/back-passwd.h @@ -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 diff --git a/servers/slapd/back-passwd/config.c b/servers/slapd/back-passwd/config.c index a41ab0fbd7..1ab28d06a6 100644 --- a/servers/slapd/back-passwd/config.c +++ b/servers/slapd/back-passwd/config.c @@ -38,36 +38,36 @@ #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 \" 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 ); } diff --git a/servers/slapd/back-passwd/init.c b/servers/slapd/back-passwd/init.c index 8d21538b1a..78c48a7a37 100644 --- a/servers/slapd/back-passwd/init.c +++ b/servers/slapd/back-passwd/init.c @@ -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 diff --git a/servers/slapd/back-passwd/proto-passwd.h b/servers/slapd/back-passwd/proto-passwd.h index 4da4b67d96..a626ab2c02 100644 --- a/servers/slapd/back-passwd/proto-passwd.h +++ b/servers/slapd/back-passwd/proto-passwd.h @@ -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 */ diff --git a/servers/slapd/bconfig.c b/servers/slapd/bconfig.c index 60aed4c511..96bc7a9eb2 100644 --- a/servers/slapd/bconfig.c +++ b/servers/slapd/bconfig.c @@ -244,9 +244,10 @@ static OidRec OidMacros[] = { * OLcfg{Bk|Db}{Oc|At}:3 -> back-ldap * OLcfg{Bk|Db}{Oc|At}:4 -> back-monitor * OLcfg{Bk|Db}{Oc|At}:5 -> back-relay - * OLcfg{Bk|Db}{Oc|At}:6 -> back-sql + * OLcfg{Bk|Db}{Oc|At}:6 -> back-sql(/back-ndb) * OLcfg{Bk|Db}{Oc|At}:7 -> back-sock * OLcfg{Bk|Db}{Oc|At}:8 -> back-null + * OLcfg{Bk|Db}{Oc|At}:9 -> back-passwd */ /* -- 2.39.5