/* $OpenLDAP$ */
/* This work is part of OpenLDAP Software <http://www.openldap.org/>.
*
- * Copyright 2002-2009 The OpenLDAP Foundation.
+ * Copyright 2002-2011 The OpenLDAP Foundation.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
ID ni_nextid;
};
+static ConfigDriver null_cf_gen;
+
+static ConfigTable nullcfg[] = {
+ { "bind", "true|FALSE", 1, 2, 0, ARG_ON_OFF|ARG_MAGIC,
+ null_cf_gen,
+ "( OLcfgDbAt:8.1 NAME 'olcDbBindAllowed' "
+ "DESC 'Allow binds to this database' "
+ "SYNTAX OMsBoolean SINGLE-VALUE )", NULL, NULL },
+ { NULL, NULL, 0, 0, 0, ARG_IGNORED,
+ NULL, NULL, NULL, NULL }
+};
+
+static ConfigOCs nullocs[] = {
+ { "( OLcfgDbOc:8.1 "
+ "NAME 'olcNullConfig' "
+ "DESC 'Null backend ocnfiguration' "
+ "SUP olcDatabaseConfig "
+ "MAY ( olcDbBindAllowed ) )",
+ Cft_Database, nullcfg },
+ { NULL, 0, NULL }
+};
+
/* LDAP operations */
return 0;
}
+static ID
+null_tool_entry_first_x( BackendDB *be, struct berval *base, int scope, Filter *f )
+{
+ return NOID;
+}
+
static ID
null_tool_entry_next( BackendDB *be )
{
/* Setup */
static int
-null_back_db_config(
- BackendDB *be,
- const char *fname,
- int lineno,
- int argc,
- char **argv )
+null_cf_gen( ConfigArgs *c )
{
- struct null_info *ni = (struct null_info *) be->be_private;
-
- if ( ni == NULL ) {
- fprintf( stderr, "%s: line %d: null database info is null!\n",
- fname, lineno );
- return 1;
- }
-
- /* bind requests allowed */
- if ( strcasecmp( argv[0], "bind" ) == 0 ) {
- if ( argc < 2 ) {
- fprintf( stderr,
- "%s: line %d: missing <on/off> in \"bind <on/off>\" line\n",
- fname, lineno );
- return 1;
- }
- ni->ni_bind_allowed = strcasecmp( argv[1], "off" );
+ struct null_info *ni = (struct null_info *) c->be->be_private;
- /* anything else */
- } else {
- return SLAP_CONF_UNKNOWN;
+ if ( c->op == SLAP_CONFIG_EMIT ) {
+ c->value_int = ni->ni_bind_allowed;
+ return LDAP_SUCCESS;
+ } else if ( c->op == LDAP_MOD_DELETE ) {
+ ni->ni_bind_allowed = 0;
+ return LDAP_SUCCESS;
}
- return 0;
+ ni->ni_bind_allowed = c->value_int;
+ return LDAP_SUCCESS;
}
static int
ni->ni_bind_allowed = 0;
ni->ni_nextid = 1;
be->be_private = ni;
+ be->be_cf_ocs = be->bd_info->bi_cf_ocs;
return 0;
}
bi->bi_destroy = 0;
bi->bi_db_init = null_back_db_init;
- bi->bi_db_config = null_back_db_config;
+ bi->bi_db_config = config_generic_wrapper;
bi->bi_db_open = 0;
bi->bi_db_close = 0;
bi->bi_db_destroy = null_back_db_destroy;
bi->bi_tool_entry_open = null_tool_entry_open;
bi->bi_tool_entry_close = null_tool_entry_close;
- bi->bi_tool_entry_first = null_tool_entry_next;
+ bi->bi_tool_entry_first = backend_tool_entry_first;
+ bi->bi_tool_entry_first_x = null_tool_entry_first_x;
bi->bi_tool_entry_next = null_tool_entry_next;
bi->bi_tool_entry_get = null_tool_entry_get;
bi->bi_tool_entry_put = null_tool_entry_put;
- return 0;
+ bi->bi_cf_ocs = nullocs;
+ return config_register_schema( nullcfg, nullocs );
}
#if SLAPD_NULL == SLAPD_MOD_DYNAMIC