diff options
author | Matthieu Patou <mat@matws.net> | 2011-04-20 20:26:47 +0400 |
---|---|---|
committer | Stefan Metzmacher <metze@samba.org> | 2011-04-21 14:41:56 +0200 |
commit | 93d5e7a018cc4d999c2f322902fa337c6af724d1 (patch) | |
tree | 830357343db4efa6f81c9f6274d49fe85a5d33b4 | |
parent | f04689ae63a9dfdca6d5eb8679186561d3e450b4 (diff) | |
download | samba-93d5e7a018cc4d999c2f322902fa337c6af724d1.tar.gz samba-93d5e7a018cc4d999c2f322902fa337c6af724d1.tar.bz2 samba-93d5e7a018cc4d999c2f322902fa337c6af724d1.zip |
ldb: add custom flags and functions for the application that wants to manipulate them
Signed-off-by: Simo Sorce <idra@samba.org>
Signed-off-by: Stefan Metzmacher <metze@samba.org>
-rw-r--r-- | source4/lib/ldb/common/ldb.c | 38 | ||||
-rw-r--r-- | source4/lib/ldb/include/ldb_module.h | 14 | ||||
-rw-r--r-- | source4/lib/ldb/include/ldb_private.h | 2 |
3 files changed, 54 insertions, 0 deletions
diff --git a/source4/lib/ldb/common/ldb.c b/source4/lib/ldb/common/ldb.c index 0aadeb0d30..433f30b7c1 100644 --- a/source4/lib/ldb/common/ldb.c +++ b/source4/lib/ldb/common/ldb.c @@ -1112,6 +1112,7 @@ int ldb_build_search_req_ex(struct ldb_request **ret_req, req->handle->nesting++; req->handle->parent = parent; req->handle->flags = parent->handle->flags; + req->handle->custom_flags = parent->handle->custom_flags; } *ret_req = req; @@ -1185,6 +1186,7 @@ int ldb_build_add_req(struct ldb_request **ret_req, req->handle->nesting++; req->handle->parent = parent; req->handle->flags = parent->handle->flags; + req->handle->custom_flags = parent->handle->custom_flags; } *ret_req = req; @@ -1229,6 +1231,7 @@ int ldb_build_mod_req(struct ldb_request **ret_req, req->handle->nesting++; req->handle->parent = parent; req->handle->flags = parent->handle->flags; + req->handle->custom_flags = parent->handle->custom_flags; } *ret_req = req; @@ -1273,6 +1276,7 @@ int ldb_build_del_req(struct ldb_request **ret_req, req->handle->nesting++; req->handle->parent = parent; req->handle->flags = parent->handle->flags; + req->handle->custom_flags = parent->handle->custom_flags; } *ret_req = req; @@ -1319,6 +1323,7 @@ int ldb_build_rename_req(struct ldb_request **ret_req, req->handle->nesting++; req->handle->parent = parent; req->handle->flags = parent->handle->flags; + req->handle->custom_flags = parent->handle->custom_flags; } *ret_req = req; @@ -1394,6 +1399,7 @@ int ldb_build_extended_req(struct ldb_request **ret_req, req->handle->nesting++; req->handle->parent = parent; req->handle->flags = parent->handle->flags; + req->handle->custom_flags = parent->handle->custom_flags; } *ret_req = req; @@ -1877,6 +1883,38 @@ void ldb_req_mark_trusted(struct ldb_request *req) } /** + set custom flags. Those flags are set by applications using ldb, + they are application dependent and the same bit can have different + meaning in different application. + */ +void ldb_req_set_custom_flags(struct ldb_request *req, uint32_t flags) +{ + if (req != NULL && req->handle != NULL) { + req->handle->custom_flags = flags; + } +} + + +/** + get custom flags. Those flags are set by applications using ldb, + they are application dependent and the same bit can have different + meaning in different application. + */ +uint32_t ldb_req_get_custom_flags(struct ldb_request *req) +{ + if (req != NULL && req->handle != NULL) { + return req->handle->custom_flags; + } + + /* + * 0 is not something any better or worse than + * anything else as req or the handle is NULL + */ + return 0; +} + + +/** return true is a request is untrusted */ bool ldb_req_is_untrusted(struct ldb_request *req) diff --git a/source4/lib/ldb/include/ldb_module.h b/source4/lib/ldb/include/ldb_module.h index db8726b7a3..6d6fff251c 100644 --- a/source4/lib/ldb/include/ldb_module.h +++ b/source4/lib/ldb/include/ldb_module.h @@ -240,6 +240,20 @@ void ldb_req_mark_trusted(struct ldb_request *req); */ bool ldb_req_is_untrusted(struct ldb_request *req); +/** + set custom flags. Those flags are set by applications using ldb, + they are application dependent and the same bit can have different + meaning in different application. + */ +void ldb_req_set_custom_flags(struct ldb_request *req, uint32_t flags); + +/** + get custom flags. Those flags are set by applications using ldb, + they are application dependent and the same bit can have different + meaning in different application. + */ +uint32_t ldb_req_get_custom_flags(struct ldb_request *req); + /* load all modules from the given directory */ int ldb_modules_load(const char *modules_path, const char *version); diff --git a/source4/lib/ldb/include/ldb_private.h b/source4/lib/ldb/include/ldb_private.h index 5397b79ec5..cafc020e29 100644 --- a/source4/lib/ldb/include/ldb_private.h +++ b/source4/lib/ldb/include/ldb_private.h @@ -58,6 +58,8 @@ struct ldb_handle { enum ldb_state state; struct ldb_context *ldb; unsigned flags; + /* flags dedicated to be set by application using ldb */ + uint32_t custom_flags; unsigned nesting; /* used for debugging */ |