diff options
author | Martin Nagy <mnagy@redhat.com> | 2009-01-14 16:41:12 +0100 |
---|---|---|
committer | Martin Nagy <mnagy@redhat.com> | 2009-01-14 16:41:12 +0100 |
commit | b5a1cfb1cded6a31719da75525aa6ffb7d0915f3 (patch) | |
tree | ce37ffd4c18a918bd1977c89ff0bde8a36881b0f /ldap_driver.c | |
parent | 4a78983d04dc77729b75d1620c41f1d2d140e8cc (diff) | |
download | ldap_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.c | 23 |
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); } |