[SCM] Samba Shared Repository - branch master updated
Andrew Bartlett
abartlet at samba.org
Mon Jul 30 15:24:02 UTC 2018
The branch, master has been updated
via c891df4 lib ldb key value: convert TDB_DATA structs to ldb_val
via f2d5c2c lib ldb: rename LTDB_* constants to LDB_KV_*
via 19be0be lib ldb: move key value code to lib/ldb/ldb_key_value
via 67c0554 lib ldb: rename ltdb_parse_data_unpack_ctx
via 9191d3b lib ldb: remove unused function prototypes
via d3bfd37 lib ldb: rename ltdb_idxptr to ldb_kv_idxptr
via f6d5cf5 lib ldb: rename tdb_key_ctx to key_ctx
via 72724f7 lib ldb: rename ltdb_cache to ldb_kv_cache
via b8c9c30 lib ldb: format rename ldb_kv_private
via e0186d1 lib ldb: rename ltdb_private to ldb_kv_private
via 641b38e4 lib ldb: format rename of ltdb_req_spy
via 17a84d12 lib ldb: rename ltdb_req_spy to ldb_kv_req_spy
via c782d71 lib ldb: rename ltdb_context to ldb_kv_context
via e969de0 lib ldb: reformat ltdb_reindex_context rename
via e8aa764 lib ldb: rename struct ltdb_reindex_context
via 9e62946 lib ldb: fix formatting of ldb_kv rename.
via 1c8ea09 lib ldb: Rename functions to ldb_kv
from 4fcbaae ctdb-doc: Provide an example script for migrating old configuration
https://git.samba.org/?p=samba.git;a=shortlog;h=master
- Log -----------------------------------------------------------------
commit c891df421813781b32081b566600076562525261
Author: Gary Lockyer <gary at catalyst.net.nz>
Date: Mon Jul 23 13:20:46 2018 +1200
lib ldb key value: convert TDB_DATA structs to ldb_val
Convert the key value functions to use ldb_val instead of TDB_DATA.
Signed-off-by: Gary Lockyer <gary at catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet at samba.org>
Autobuild-User(master): Andrew Bartlett <abartlet at samba.org>
Autobuild-Date(master): Mon Jul 30 17:23:22 CEST 2018 on sn-devel-144
commit f2d5c2c5cc52788a60fb2c390f681ea4cc767e58
Author: Gary Lockyer <gary at catalyst.net.nz>
Date: Mon Jul 23 10:08:26 2018 +1200
lib ldb: rename LTDB_* constants to LDB_KV_*
Rename all the LTDB_* constants to LDB_KV_* as they are key value level
constants and not tdb specific.
Signed-off-by: Gary Lockyer <gary at catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet at samba.org>
commit 19be0be232c25250e79dc313fd43829de049b491
Author: Gary Lockyer <gary at catalyst.net.nz>
Date: Mon Jul 23 10:02:16 2018 +1200
lib ldb: move key value code to lib/ldb/ldb_key_value
Move the key value code to a separate subdirectory.
Signed-off-by: Gary Lockyer <gary at catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet at samba.org>
commit 67c055406c7ad6b92c89337acd72a751962e99f0
Author: Gary Lockyer <gary at catalyst.net.nz>
Date: Fri Jul 20 13:50:00 2018 +1200
lib ldb: rename ltdb_parse_data_unpack_ctx
Rename ltdb_parse_data_unpack_ctx to ldb_kv_parse_data_unpack_ctx, as
it's a key value level structure and not ltdb specific.
Signed-off-by: Gary Lockyer <gary at catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet at samba.org>
commit 9191d3baf513f9cd2d15206f1378c24a5e7de2e3
Author: Gary Lockyer <gary at catalyst.net.nz>
Date: Fri Jul 20 13:47:16 2018 +1200
lib ldb: remove unused function prototypes
Remove unused function prototypes
Signed-off-by: Gary Lockyer <gary at catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet at samba.org>
commit d3bfd374a65b93f5a7d9f3bf3c356871a5879a12
Author: Gary Lockyer <gary at catalyst.net.nz>
Date: Fri Jul 20 13:40:02 2018 +1200
lib ldb: rename ltdb_idxptr to ldb_kv_idxptr
Rename ltdb_idxptr to ldb_kv_idxptr as it's key value level and not tdb
specific.
Signed-off-by: Gary Lockyer <gary at catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet at samba.org>
commit f6d5cf5eb11533ac1e3388dbb21c7f0757fff969
Author: Gary Lockyer <gary at catalyst.net.nz>
Date: Fri Jul 20 13:36:07 2018 +1200
lib ldb: rename tdb_key_ctx to key_ctx
Rename tdb_key_ctx to key_ctx, as it's key value level and not tdb
specific.
Signed-off-by: Gary Lockyer <gary at catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet at samba.org>
commit 72724f75ce97a1bf0b106bdf2e30cfb1729af765
Author: Gary Lockyer <gary at catalyst.net.nz>
Date: Fri Jul 20 13:31:27 2018 +1200
lib ldb: rename ltdb_cache to ldb_kv_cache
Rename ltdb_cache to ldb_kv_cache as it's key value level and not tdb
specific
Signed-off-by: Gary Lockyer <gary at catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet at samba.org>
commit b8c9c305b3a1fa5103fb8af63768f8abf681106c
Author: Gary Lockyer <gary at catalyst.net.nz>
Date: Fri Jul 20 11:54:39 2018 +1200
lib ldb: format rename ldb_kv_private
Tidy up the code format after the rename of ltdb_private to
ldb_kv_private
Signed-off-by: Gary Lockyer <gary at catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet at samba.org>
commit e0186d1f2da7d946ee140e6bb54b1d62766b43aa
Author: Gary Lockyer <gary at catalyst.net.nz>
Date: Fri Jul 20 11:53:21 2018 +1200
lib ldb: rename ltdb_private to ldb_kv_private
Rename ltdb_private to ldb_kv_private as it contains key value operation
context.
Note there is still some tdb specific context that can be refactored into a
separate structure along the lines of the lmdb context.
Signed-off-by: Gary Lockyer <gary at catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet at samba.org>
commit 641b38e458b1f9ce848f76e2f226d42e7507a529
Author: Gary Lockyer <gary at catalyst.net.nz>
Date: Fri Jul 20 09:15:24 2018 +1200
lib ldb: format rename of ltdb_req_spy
Fix up the code formatting after the rename of ltdb_req_spy to
ldb_kv_req_spy
Signed-off-by: Gary Lockyer <gary at catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet at samba.org>
commit 17a84d12e2cef7a42c94d0df404f1ec4854fb65c
Author: Gary Lockyer <gary at catalyst.net.nz>
Date: Fri Jul 20 09:14:52 2018 +1200
lib ldb: rename ltdb_req_spy to ldb_kv_req_spy
Rename ltdb_req_spy to ldb_kv_req_spy, as it is key value level and not
tdb specific.
Signed-off-by: Gary Lockyer <gary at catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet at samba.org>
commit c782d710e97ffaed8fef18524b468e801be053d3
Author: Gary Lockyer <gary at catalyst.net.nz>
Date: Fri Jul 20 09:07:47 2018 +1200
lib ldb: rename ltdb_context to ldb_kv_context
Rename ltdb_context to ldb_kv_context as it is a key value level
structure and not tdb specific.
Signed-off-by: Gary Lockyer <gary at catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet at samba.org>
commit e969de0797bed4a3663f0b638ac49b3b6ef2952f
Author: Gary Lockyer <gary at catalyst.net.nz>
Date: Fri Jul 20 08:53:28 2018 +1200
lib ldb: reformat ltdb_reindex_context rename
Fix up the formatting after the rename of ltdb_reindex_context to
ldb_kv_reindex_context.
Signed-off-by: Gary Lockyer <gary at catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet at samba.org>
commit e8aa764ea7dffbb499882f6bdf986322cd17c20d
Author: Gary Lockyer <gary at catalyst.net.nz>
Date: Fri Jul 20 08:52:48 2018 +1200
lib ldb: rename struct ltdb_reindex_context
Rename struct ltdb_reindex_context to ldb_kv_reindex_context, as this is
a key value level structure and not a tdb specific structure.
Signed-off-by: Gary Lockyer <gary at catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet at samba.org>
commit 9e6294668aa58408863bc6bb2c2510608bf916f3
Author: Gary Lockyer <gary at catalyst.net.nz>
Date: Fri Jul 20 07:25:32 2018 +1200
lib ldb: fix formatting of ldb_kv rename.
Clean up the code format after the rename in the previous commit.
Hopefully doing a rename commit followed by a reformat commit makes the
code easier to review.
Signed-off-by: Gary Lockyer <gary at catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet at samba.org>
commit 1c8ea099ce57ae35879e9a1cebcfd2de5c89bfdf
Author: Gary Lockyer <gary at catalyst.net.nz>
Date: Fri Jul 20 07:23:10 2018 +1200
lib ldb: Rename functions to ldb_kv
Rename the ldb key value functions from ltdb_* to ldb_kv_*. The renaming
is preparation for the separation of the tdb specific code from the key
value code. This work is a follow on from the addition of the lmdb
backend.
Note that the next commit tidies up the code formatting.
Signed-off-by: Gary Lockyer <gary at catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet at samba.org>
-----------------------------------------------------------------------
Summary of changes:
.../{ldb_tdb/ldb_tdb.c => ldb_key_value/ldb_kv.c} | 1233 ++++-------
lib/ldb/ldb_key_value/ldb_kv.h | 265 +++
.../ldb_cache.c => ldb_key_value/ldb_kv_cache.c} | 278 +--
.../ldb_index.c => ldb_key_value/ldb_kv_index.c} | 998 ++++-----
.../ldb_search.c => ldb_key_value/ldb_kv_search.c} | 194 +-
lib/ldb/ldb_mdb/ldb_mdb.c | 120 +-
lib/ldb/ldb_tdb/ldb_tdb.c | 2306 ++------------------
lib/ldb/ldb_tdb/ldb_tdb.h | 232 --
.../ldb_tdb/{ldb_tdb_init.c => ldb_tdb_err_map.c} | 33 +-
lib/ldb/tests/ldb_kv_ops_test.c | 254 +--
lib/ldb/tests/ldb_lmdb_test.c | 9 +-
lib/ldb/tests/ldb_tdb_test.c | 9 +-
lib/ldb/wscript | 24 +-
13 files changed, 1858 insertions(+), 4097 deletions(-)
copy lib/ldb/{ldb_tdb/ldb_tdb.c => ldb_key_value/ldb_kv.c} (55%)
create mode 100644 lib/ldb/ldb_key_value/ldb_kv.h
rename lib/ldb/{ldb_tdb/ldb_cache.c => ldb_key_value/ldb_kv_cache.c} (63%)
rename lib/ldb/{ldb_tdb/ldb_index.c => ldb_key_value/ldb_kv_index.c} (73%)
rename lib/ldb/{ldb_tdb/ldb_search.c => ldb_key_value/ldb_kv_search.c} (82%)
copy lib/ldb/ldb_tdb/{ldb_tdb_init.c => ldb_tdb_err_map.c} (69%)
Changeset truncated at 500 lines:
diff --git a/lib/ldb/ldb_tdb/ldb_tdb.c b/lib/ldb/ldb_key_value/ldb_kv.c
similarity index 55%
copy from lib/ldb/ldb_tdb/ldb_tdb.c
copy to lib/ldb/ldb_key_value/ldb_kv.c
index daf9a77..3ea8d5e 100644
--- a/lib/ldb/ldb_tdb/ldb_tdb.c
+++ b/lib/ldb/ldb_key_value/ldb_kv.c
@@ -25,11 +25,11 @@
*/
/*
- * Name: ldb_tdb
+ * Name: ldb_kv
*
- * Component: ldb tdb backend
+ * Component: ldb key value backend
*
- * Description: core functions for tdb backend
+ * Description: core functions for ldb key value backend
*
* Author: Andrew Tridgell
* Author: Stefan Metzmacher
@@ -49,158 +49,58 @@
* Author: Matthias Dieter Wallnöfer
*/
-#include "ldb_tdb.h"
+#include "ldb_kv.h"
#include "ldb_private.h"
-#include <tdb.h>
/*
prevent memory errors on callbacks
*/
-struct ltdb_req_spy {
- struct ltdb_context *ctx;
+struct ldb_kv_req_spy {
+ struct ldb_kv_context *ctx;
};
/*
- map a tdb error code to a ldb error code
-*/
-int ltdb_err_map(enum TDB_ERROR tdb_code)
-{
- switch (tdb_code) {
- case TDB_SUCCESS:
- return LDB_SUCCESS;
- case TDB_ERR_CORRUPT:
- case TDB_ERR_OOM:
- case TDB_ERR_EINVAL:
- return LDB_ERR_OPERATIONS_ERROR;
- case TDB_ERR_IO:
- return LDB_ERR_PROTOCOL_ERROR;
- case TDB_ERR_LOCK:
- case TDB_ERR_NOLOCK:
- return LDB_ERR_BUSY;
- case TDB_ERR_LOCK_TIMEOUT:
- return LDB_ERR_TIME_LIMIT_EXCEEDED;
- case TDB_ERR_EXISTS:
- return LDB_ERR_ENTRY_ALREADY_EXISTS;
- case TDB_ERR_NOEXIST:
- return LDB_ERR_NO_SUCH_OBJECT;
- case TDB_ERR_RDONLY:
- return LDB_ERR_INSUFFICIENT_ACCESS_RIGHTS;
- default:
- break;
- }
- return LDB_ERR_OTHER;
-}
-
-/*
- lock the database for read - use by ltdb_search and ltdb_sequence_number
-*/
-static int ltdb_lock_read(struct ldb_module *module)
-{
- void *data = ldb_module_get_private(module);
- struct ltdb_private *ltdb = talloc_get_type(data, struct ltdb_private);
- int tdb_ret = 0;
- int ret;
- pid_t pid = getpid();
-
- if (ltdb->pid != pid) {
- ldb_asprintf_errstring(
- ldb_module_get_ctx(module),
- __location__": Reusing ldb opend by pid %d in "
- "process %d\n",
- ltdb->pid,
- pid);
- return LDB_ERR_PROTOCOL_ERROR;
- }
-
- if (tdb_transaction_active(ltdb->tdb) == false &&
- ltdb->read_lock_count == 0) {
- tdb_ret = tdb_lockall_read(ltdb->tdb);
- }
- if (tdb_ret == 0) {
- ltdb->read_lock_count++;
- return LDB_SUCCESS;
- }
- ret = ltdb_err_map(tdb_error(ltdb->tdb));
- if (ret == LDB_SUCCESS) {
- ret = LDB_ERR_OPERATIONS_ERROR;
- }
- ldb_debug_set(ldb_module_get_ctx(module),
- LDB_DEBUG_FATAL,
- "Failure during ltdb_lock_read(): %s -> %s",
- tdb_errorstr(ltdb->tdb),
- ldb_strerror(ret));
- return ret;
-}
-
-/*
- unlock the database after a ltdb_lock_read()
-*/
-static int ltdb_unlock_read(struct ldb_module *module)
-{
- void *data = ldb_module_get_private(module);
- struct ltdb_private *ltdb = talloc_get_type(data, struct ltdb_private);
- pid_t pid = getpid();
-
- if (ltdb->pid != pid) {
- ldb_asprintf_errstring(
- ldb_module_get_ctx(module),
- __location__": Reusing ldb opend by pid %d in "
- "process %d\n",
- ltdb->pid,
- pid);
- return LDB_ERR_PROTOCOL_ERROR;
- }
- if (!tdb_transaction_active(ltdb->tdb) && ltdb->read_lock_count == 1) {
- tdb_unlockall_read(ltdb->tdb);
- ltdb->read_lock_count--;
- return 0;
- }
- ltdb->read_lock_count--;
- return 0;
-}
-
-
-/*
* Determine if this key could hold a record. We allow the new GUID
* index, the old DN index and a possible future ID=
*/
-bool ltdb_key_is_record(TDB_DATA key)
+bool ldb_kv_key_is_record(struct ldb_val key)
{
- if (key.dsize < 4) {
+ if (key.length < 4) {
return false;
}
- if (memcmp(key.dptr, "DN=", 3) == 0) {
+ if (memcmp(key.data, "DN=", 3) == 0) {
return true;
}
-
- if (memcmp(key.dptr, "ID=", 3) == 0) {
+
+ if (memcmp(key.data, "ID=", 3) == 0) {
return true;
}
- if (key.dsize < sizeof(LTDB_GUID_KEY_PREFIX)) {
+ if (key.length < sizeof(LDB_KV_GUID_KEY_PREFIX)) {
return false;
}
- if (memcmp(key.dptr, LTDB_GUID_KEY_PREFIX,
- sizeof(LTDB_GUID_KEY_PREFIX) - 1) == 0) {
+ if (memcmp(key.data, LDB_KV_GUID_KEY_PREFIX,
+ sizeof(LDB_KV_GUID_KEY_PREFIX) - 1) == 0) {
return true;
}
-
+
return false;
}
/*
- form a TDB_DATA for a record key
+ form a ldb_val for a record key
caller frees
note that the key for a record can depend on whether the
dn refers to a case sensitive index record or not
*/
-TDB_DATA ltdb_key_dn(struct ldb_module *module, TALLOC_CTX *mem_ctx,
- struct ldb_dn *dn)
+struct ldb_val ldb_kv_key_dn(struct ldb_module *module,
+ TALLOC_CTX *mem_ctx,
+ struct ldb_dn *dn)
{
- TDB_DATA key;
+ struct ldb_val key;
char *key_str = NULL;
const char *dn_folded = NULL;
@@ -231,33 +131,33 @@ TDB_DATA ltdb_key_dn(struct ldb_module *module, TALLOC_CTX *mem_ctx,
goto failed;
}
- key.dptr = (uint8_t *)key_str;
- key.dsize = strlen(key_str) + 1;
+ key.data = (uint8_t *)key_str;
+ key.length = strlen(key_str) + 1;
return key;
failed:
errno = ENOMEM;
- key.dptr = NULL;
- key.dsize = 0;
+ key.data = NULL;
+ key.length = 0;
return key;
}
/* The caller is to provide a correctly sized key */
-int ltdb_guid_to_key(struct ldb_module *module,
- struct ltdb_private *ltdb,
- const struct ldb_val *GUID_val,
- TDB_DATA *key)
+int ldb_kv_guid_to_key(struct ldb_module *module,
+ struct ldb_kv_private *ldb_kv,
+ const struct ldb_val *GUID_val,
+ struct ldb_val *key)
{
- const char *GUID_prefix = LTDB_GUID_KEY_PREFIX;
- const int GUID_prefix_len = sizeof(LTDB_GUID_KEY_PREFIX) - 1;
+ const char *GUID_prefix = LDB_KV_GUID_KEY_PREFIX;
+ const int GUID_prefix_len = sizeof(LDB_KV_GUID_KEY_PREFIX) - 1;
- if (key->dsize != (GUID_val->length+GUID_prefix_len)) {
+ if (key->length != (GUID_val->length+GUID_prefix_len)) {
return LDB_ERR_OPERATIONS_ERROR;
}
- memcpy(key->dptr, GUID_prefix, GUID_prefix_len);
- memcpy(&key->dptr[GUID_prefix_len],
+ memcpy(key->data, GUID_prefix, GUID_prefix_len);
+ memcpy(&key->data[GUID_prefix_len],
GUID_val->data, GUID_val->length);
return LDB_SUCCESS;
}
@@ -266,18 +166,17 @@ int ltdb_guid_to_key(struct ldb_module *module,
* The caller is to provide a correctly sized key, used only in
* the GUID index mode
*/
-int ltdb_idx_to_key(struct ldb_module *module,
- struct ltdb_private *ltdb,
- TALLOC_CTX *mem_ctx,
- const struct ldb_val *idx_val,
- TDB_DATA *key)
+int ldb_kv_idx_to_key(struct ldb_module *module,
+ struct ldb_kv_private *ldb_kv,
+ TALLOC_CTX *mem_ctx,
+ const struct ldb_val *idx_val,
+ struct ldb_val *key)
{
struct ldb_context *ldb = ldb_module_get_ctx(module);
struct ldb_dn *dn;
- if (ltdb->cache->GUID_index_attribute != NULL) {
- return ltdb_guid_to_key(module, ltdb,
- idx_val, key);
+ if (ldb_kv->cache->GUID_index_attribute != NULL) {
+ return ldb_kv_guid_to_key(module, ldb_kv, idx_val, key);
}
dn = ldb_dn_from_ldb_val(mem_ctx, ldb, idx_val);
@@ -289,9 +188,9 @@ int ltdb_idx_to_key(struct ldb_module *module,
return LDB_ERR_OPERATIONS_ERROR;
}
/* form the key */
- *key = ltdb_key_dn(module, mem_ctx, dn);
+ *key = ldb_kv_key_dn(module, mem_ctx, dn);
TALLOC_FREE(dn);
- if (!key->dptr) {
+ if (!key->data) {
return ldb_module_oom(module);
}
return LDB_SUCCESS;
@@ -305,54 +204,56 @@ int ltdb_idx_to_key(struct ldb_module *module,
note that the key for a record can depend on whether a
GUID index is in use, or the DN is used as the key
*/
-TDB_DATA ltdb_key_msg(struct ldb_module *module, TALLOC_CTX *mem_ctx,
- const struct ldb_message *msg)
+struct ldb_val ldb_kv_key_msg(struct ldb_module *module,
+ TALLOC_CTX *mem_ctx,
+ const struct ldb_message *msg)
{
void *data = ldb_module_get_private(module);
- struct ltdb_private *ltdb = talloc_get_type(data, struct ltdb_private);
- TDB_DATA key;
+ struct ldb_kv_private *ldb_kv =
+ talloc_get_type(data, struct ldb_kv_private);
+ struct ldb_val key;
const struct ldb_val *guid_val;
int ret;
- if (ltdb->cache->GUID_index_attribute == NULL) {
- return ltdb_key_dn(module, mem_ctx, msg->dn);
+ if (ldb_kv->cache->GUID_index_attribute == NULL) {
+ return ldb_kv_key_dn(module, mem_ctx, msg->dn);
}
if (ldb_dn_is_special(msg->dn)) {
- return ltdb_key_dn(module, mem_ctx, msg->dn);
+ return ldb_kv_key_dn(module, mem_ctx, msg->dn);
}
- guid_val = ldb_msg_find_ldb_val(msg,
- ltdb->cache->GUID_index_attribute);
+ guid_val =
+ ldb_msg_find_ldb_val(msg, ldb_kv->cache->GUID_index_attribute);
if (guid_val == NULL) {
ldb_asprintf_errstring(ldb_module_get_ctx(module),
"Did not find GUID attribute %s "
"in %s, required for TDB record "
- "key in " LTDB_IDXGUID " mode.",
- ltdb->cache->GUID_index_attribute,
+ "key in " LDB_KV_IDXGUID " mode.",
+ ldb_kv->cache->GUID_index_attribute,
ldb_dn_get_linearized(msg->dn));
errno = EINVAL;
- key.dptr = NULL;
- key.dsize = 0;
+ key.data = NULL;
+ key.length = 0;
return key;
}
/* In this case, allocate with talloc */
- key.dptr = talloc_size(mem_ctx, LTDB_GUID_KEY_SIZE);
- if (key.dptr == NULL) {
+ key.data = talloc_size(mem_ctx, LDB_KV_GUID_KEY_SIZE);
+ if (key.data == NULL) {
errno = ENOMEM;
- key.dptr = NULL;
- key.dsize = 0;
+ key.data = NULL;
+ key.length = 0;
return key;
}
- key.dsize = talloc_get_size(key.dptr);
+ key.length = talloc_get_size(key.data);
- ret = ltdb_guid_to_key(module, ltdb, guid_val, &key);
+ ret = ldb_kv_guid_to_key(module, ldb_kv, guid_val, &key);
if (ret != LDB_SUCCESS) {
errno = EINVAL;
- key.dptr = NULL;
- key.dsize = 0;
+ key.data = NULL;
+ key.length = 0;
return key;
}
return key;
@@ -362,14 +263,14 @@ TDB_DATA ltdb_key_msg(struct ldb_module *module, TALLOC_CTX *mem_ctx,
check special dn's have valid attributes
currently only @ATTRIBUTES is checked
*/
-static int ltdb_check_special_dn(struct ldb_module *module,
- const struct ldb_message *msg)
+static int ldb_kv_check_special_dn(struct ldb_module *module,
+ const struct ldb_message *msg)
{
struct ldb_context *ldb = ldb_module_get_ctx(module);
unsigned int i, j;
if (! ldb_dn_is_special(msg->dn) ||
- ! ldb_dn_check_special(msg->dn, LTDB_ATTRIBUTES)) {
+ ! ldb_dn_check_special(msg->dn, LDB_KV_ATTRIBUTES)) {
return LDB_SUCCESS;
}
@@ -379,7 +280,8 @@ static int ltdb_check_special_dn(struct ldb_module *module,
if (ldb_attr_cmp(msg->elements[i].name, "distinguishedName") == 0) continue;
for (j = 0; j < msg->elements[i].num_values; j++) {
- if (ltdb_check_at_attributes_values(&msg->elements[i].values[j]) != 0) {
+ if (ldb_kv_check_at_attributes_values(
+ &msg->elements[i].values[j]) != 0) {
ldb_set_errstring(ldb, "Invalid attribute value in an @ATTRIBUTES entry");
return LDB_ERR_INVALID_ATTRIBUTE_SYNTAX;
}
@@ -394,136 +296,108 @@ static int ltdb_check_special_dn(struct ldb_module *module,
we've made a modification to a dn - possibly reindex and
update sequence number
*/
-static int ltdb_modified(struct ldb_module *module, struct ldb_dn *dn)
+static int ldb_kv_modified(struct ldb_module *module, struct ldb_dn *dn)
{
int ret = LDB_SUCCESS;
- struct ltdb_private *ltdb = talloc_get_type(ldb_module_get_private(module), struct ltdb_private);
+ struct ldb_kv_private *ldb_kv = talloc_get_type(
+ ldb_module_get_private(module), struct ldb_kv_private);
/* only allow modifies inside a transaction, otherwise the
* ldb is unsafe */
- if (ltdb->kv_ops->transaction_active(ltdb) == false) {
+ if (ldb_kv->kv_ops->transaction_active(ldb_kv) == false) {
ldb_set_errstring(ldb_module_get_ctx(module), "ltdb modify without transaction");
return LDB_ERR_OPERATIONS_ERROR;
}
if (ldb_dn_is_special(dn) &&
- (ldb_dn_check_special(dn, LTDB_INDEXLIST) ||
- ldb_dn_check_special(dn, LTDB_ATTRIBUTES)) )
+ (ldb_dn_check_special(dn, LDB_KV_INDEXLIST) ||
+ ldb_dn_check_special(dn, LDB_KV_ATTRIBUTES)) )
{
- if (ltdb->warn_reindex) {
+ if (ldb_kv->warn_reindex) {
ldb_debug(ldb_module_get_ctx(module),
- LDB_DEBUG_ERROR, "Reindexing %s due to modification on %s",
- ltdb->kv_ops->name(ltdb), ldb_dn_get_linearized(dn));
+ LDB_DEBUG_ERROR,
+ "Reindexing %s due to modification on %s",
+ ldb_kv->kv_ops->name(ldb_kv),
+ ldb_dn_get_linearized(dn));
}
- ret = ltdb_reindex(module);
+ ret = ldb_kv_reindex(module);
}
/* If the modify was to a normal record, or any special except @BASEINFO, update the seq number */
if (ret == LDB_SUCCESS &&
!(ldb_dn_is_special(dn) &&
- ldb_dn_check_special(dn, LTDB_BASEINFO)) ) {
- ret = ltdb_increase_sequence_number(module);
+ ldb_dn_check_special(dn, LDB_KV_BASEINFO)) ) {
+ ret = ldb_kv_increase_sequence_number(module);
}
/* If the modify was to @OPTIONS, reload the cache */
if (ret == LDB_SUCCESS &&
ldb_dn_is_special(dn) &&
- (ldb_dn_check_special(dn, LTDB_OPTIONS)) ) {
- ret = ltdb_cache_reload(module);
+ (ldb_dn_check_special(dn, LDB_KV_OPTIONS)) ) {
+ ret = ldb_kv_cache_reload(module);
}
if (ret != LDB_SUCCESS) {
- ltdb->reindex_failed = true;
+ ldb_kv->reindex_failed = true;
}
return ret;
}
-
-static int ltdb_tdb_store(struct ltdb_private *ltdb, struct ldb_val ldb_key,
- struct ldb_val ldb_data, int flags)
-{
- TDB_DATA key = {
- .dptr = ldb_key.data,
- .dsize = ldb_key.length
- };
- TDB_DATA data = {
- .dptr = ldb_data.data,
- .dsize = ldb_data.length
- };
- bool transaction_active = tdb_transaction_active(ltdb->tdb);
- if (transaction_active == false){
- return LDB_ERR_PROTOCOL_ERROR;
- }
- return tdb_store(ltdb->tdb, key, data, flags);
-}
-
-static int ltdb_error(struct ltdb_private *ltdb)
-{
- return ltdb_err_map(tdb_error(ltdb->tdb));
-}
-
-static const char *ltdb_errorstr(struct ltdb_private *ltdb)
-{
- return tdb_errorstr(ltdb->tdb);
-}
-
/*
store a record into the db
*/
-int ltdb_store(struct ldb_module *module, const struct ldb_message *msg, int flgs)
+int ldb_kv_store(struct ldb_module *module,
+ const struct ldb_message *msg,
+ int flgs)
{
void *data = ldb_module_get_private(module);
- struct ltdb_private *ltdb = talloc_get_type(data, struct ltdb_private);
- TDB_DATA tdb_key;
- struct ldb_val ldb_key;
+ struct ldb_kv_private *ldb_kv =
+ talloc_get_type(data, struct ldb_kv_private);
+ struct ldb_val key;
struct ldb_val ldb_data;
int ret = LDB_SUCCESS;
--
Samba Shared Repository
More information about the samba-cvs
mailing list