From 9b705b738a0295c3d26e78967bf1a49f6661a6ac Mon Sep 17 00:00:00 2001 From: Michael Adam Date: Wed, 23 Jun 2010 12:12:37 +0200 Subject: [PATCH] s3:idmap_tdb: add idmap_rw_ops to idmap_tdb_context and initialize them in init_db --- source3/Makefile.in | 8 +++++--- source3/winbindd/idmap_tdb.c | 15 +++++++++++++++ 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/source3/Makefile.in b/source3/Makefile.in index f81604784b7b..f9ce52d94dc1 100644 --- a/source3/Makefile.in +++ b/source3/Makefile.in @@ -1063,7 +1063,9 @@ PAM_SMBPASS_OBJ = $(PAM_SMBPASS_OBJ_0) $(PARAM_OBJ) $(LIB_NONSMBD_OBJ) $(PASSDB_ $(SMBLDAP_OBJ) $(LIBSAMBA_OBJ) \ $(LDB_OBJ) -IDMAP_OBJ = winbindd/idmap.o winbindd/idmap_util.o @IDMAP_STATIC@ +IDMAP_RW_OBJ = winbindd/idmap_rw.o + +IDMAP_OBJ = winbindd/idmap.o winbindd/idmap_util.o $(IDMAP_RW_OBJ) @IDMAP_STATIC@ NSS_INFO_OBJ = winbindd/nss_info.o @NSS_INFO_STATIC@ @@ -2481,9 +2483,9 @@ bin/adex.@SHLIBEXT@: $(BINARY_PREREQS) $(IDMAP_ADEX_OBJ) @echo "Building plugin $@" @$(SHLD_MODULE) $(IDMAP_ADEX_OBJ) -bin/tdb2.@SHLIBEXT@: $(BINARY_PREREQS) winbindd/idmap_tdb2.o winbindd/idmap_rw.o +bin/tdb2.@SHLIBEXT@: $(BINARY_PREREQS) winbindd/idmap_tdb2.o $(IDMAP_RW_OBJ) @echo "Building plugin $@" - @$(SHLD_MODULE) winbindd/idmap_tdb2.o winbindd/idmap_rw.o + @$(SHLD_MODULE) winbindd/idmap_tdb2.o $(IDMAP_RW_OBJ) bin/ldap.@SHLIBEXT@: $(BINARY_PREREQS) winbindd/idmap_ldap.o @echo "Building plugin $@" diff --git a/source3/winbindd/idmap_tdb.c b/source3/winbindd/idmap_tdb.c index 0e70a90c2f19..2c9d1cc0a1e9 100644 --- a/source3/winbindd/idmap_tdb.c +++ b/source3/winbindd/idmap_tdb.c @@ -25,6 +25,7 @@ #include "includes.h" #include "winbindd.h" +#include "idmap_rw.h" #undef DBGC_CLASS #define DBGC_CLASS DBGC_IDMAP @@ -36,6 +37,7 @@ struct idmap_tdb_context { struct db_context *db; + struct idmap_rw_ops *rw_ops; }; /* High water mark keys */ @@ -479,6 +481,9 @@ static NTSTATUS idmap_tdb_get_new_id(struct idmap_domain *dom, Initialise idmap database. *****************************/ +static NTSTATUS idmap_tdb_set_mapping(struct idmap_domain *dom, + const struct id_map *map); + static NTSTATUS idmap_tdb_db_init(struct idmap_domain *dom, const char *params) { NTSTATUS ret; @@ -497,6 +502,16 @@ static NTSTATUS idmap_tdb_db_init(struct idmap_domain *dom, const char *params) } #endif + ctx->rw_ops = talloc_zero(ctx, struct idmap_rw_ops); + if (ctx->rw_ops == NULL) { + DEBUG(0, ("Out of memory!\n")); + ret = NT_STATUS_NO_MEMORY; + goto failed; + } + + ctx->rw_ops->get_new_id = idmap_tdb_get_new_id; + ctx->rw_ops->set_mapping = idmap_tdb_set_mapping; + dom->private_data = ctx; ret = idmap_tdb_open_db(dom); -- 2.34.1