summaryrefslogtreecommitdiffstats
path: root/ldap_driver.c
diff options
context:
space:
mode:
authorMartin Nagy <mnagy@redhat.com>2009-01-14 16:41:12 +0100
committerMartin Nagy <mnagy@redhat.com>2009-01-14 16:41:12 +0100
commitb5a1cfb1cded6a31719da75525aa6ffb7d0915f3 (patch)
treece37ffd4c18a918bd1977c89ff0bde8a36881b0f /ldap_driver.c
parent4a78983d04dc77729b75d1620c41f1d2d140e8cc (diff)
downloadldap_driver_testing-b5a1cfb1cded6a31719da75525aa6ffb7d0915f3.tar.gz
ldap_driver_testing-b5a1cfb1cded6a31719da75525aa6ffb7d0915f3.tar.xz
ldap_driver_testing-b5a1cfb1cded6a31719da75525aa6ffb7d0915f3.zip
Add LDAP helper routines.
Diffstat (limited to 'ldap_driver.c')
-rw-r--r--ldap_driver.c23
1 files changed, 19 insertions, 4 deletions
diff --git a/ldap_driver.c b/ldap_driver.c
index 1bda8b6..7d3c4fe 100644
--- a/ldap_driver.c
+++ b/ldap_driver.c
@@ -25,6 +25,7 @@
#include <dns/db.h>
#include <dns/result.h>
+#include "ldap_helper.h"
#include "log.h"
#include "util.h"
@@ -37,6 +38,10 @@
LDAPDBNODE_MAGIC)
typedef struct {
+ ldap_db_t *ldap_db;
+} ldapdb_data_t;
+
+typedef struct {
dns_db_t common;
isc_refcount_t refs;
isc_mutex_t lock; /* convert to isc_rwlock_t ? */
@@ -57,6 +62,7 @@ typedef struct {
static int dummy;
static void *ldapdb_version = &dummy;
+static ldapdb_data_t driver_data;
/* ldapdbnode_t functions */
static isc_result_t
@@ -640,15 +646,16 @@ dynamic_driver_init(isc_mem_t *mctx, const char *name, const char * const *argv,
{
isc_result_t result;
- UNUSED(mctx);
+ REQUIRE(argv != NULL);
UNUSED(view);
log_debug(2, "Registering dynamic ldap driver for %s.", name);
/* Test argv. */
- while (*argv != NULL) {
- log_debug(2, "Arg: %s", *argv);
- argv++;
+ int i = 0;
+ while (argv[i] != NULL) {
+ log_debug(2, "Arg: %s", argv[i]);
+ i++;
}
result = dns_db_register(ldapdb_impname, &ldapdb_create, NULL, mctx,
@@ -659,6 +666,10 @@ dynamic_driver_init(isc_mem_t *mctx, const char *name, const char * const *argv,
if (result != ISC_R_SUCCESS)
return result;
+ CHECK(new_ldap_db(mctx, &driver_data.ldap_db, argv));
+
+ get_zone_list(driver_data.ldap_db);
+
/*
* XXX now fetch all zones and initialize ldap zone manager
* (periodically check for new zones)
@@ -682,10 +693,14 @@ dynamic_driver_init(isc_mem_t *mctx, const char *name, const char * const *argv,
*/
return ISC_R_SUCCESS;
+
+cleanup:
+ return result;
}
void
dynamic_driver_destroy(void)
{
dns_db_unregister(&ldapdb_imp);
+ destroy_ldap_db(&driver_data.ldap_db);
}