mirror of
https://github.com/samba-team/samba.git
synced 2024-12-25 23:21:54 +03:00
r7776: add a method for getting arbitrary opaque data into a ldb context, for use by backends.
Currently only EventContext is used in this way.
(This used to be commit 9fa21b2458
)
This commit is contained in:
parent
6b4f3e17f0
commit
bd7a474b19
@ -178,3 +178,34 @@ const char *ldb_errstring(struct ldb_context *ldb)
|
||||
return ldb->modules->ops->errstring(ldb->modules);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
set backend specific opaque parameters
|
||||
*/
|
||||
int ldb_set_opaque(struct ldb_context *ldb, const char *name, void *value)
|
||||
{
|
||||
struct ldb_opaque *o = talloc(ldb, struct ldb_opaque);
|
||||
if (o == NULL) {
|
||||
ldb_oom(ldb);
|
||||
return -1;
|
||||
}
|
||||
o->next = ldb->opaque;
|
||||
o->name = name;
|
||||
o->value = value;
|
||||
ldb->opaque = o;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
get a previously set opaque value
|
||||
*/
|
||||
void *ldb_get_opaque(struct ldb_context *ldb, const char *name)
|
||||
{
|
||||
struct ldb_opaque *o;
|
||||
for (o=ldb->opaque;o;o=o->next) {
|
||||
if (strcmp(o->name, name) == 0) {
|
||||
return o->value;
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
@ -372,4 +372,8 @@ int ldb_set_debug(struct ldb_context *ldb,
|
||||
/* this sets up debug to print messages on stderr */
|
||||
int ldb_set_debug_stderr(struct ldb_context *ldb);
|
||||
|
||||
/* control backend specific opaque values */
|
||||
int ldb_set_opaque(struct ldb_context *ldb, const char *name, void *value);
|
||||
void *ldb_get_opaque(struct ldb_context *ldb, const char *name);
|
||||
|
||||
#endif
|
||||
|
@ -77,6 +77,13 @@ struct ldb_context {
|
||||
|
||||
/* debugging operations */
|
||||
struct ldb_debug_ops debug_ops;
|
||||
|
||||
/* backend specific opaque parameters */
|
||||
struct ldb_opaque {
|
||||
struct ldb_opaque *next;
|
||||
const char *name;
|
||||
void *value;
|
||||
} *opaque;
|
||||
};
|
||||
|
||||
/* the modules init function */
|
||||
|
@ -398,7 +398,7 @@ int ildb_connect(struct ldb_context *ldb, const char *url,
|
||||
|
||||
ildb->rootDSE = NULL;
|
||||
|
||||
ildb->ldap = ldap_new_connection(ildb, NULL);
|
||||
ildb->ldap = ldap_new_connection(ildb, ldb_get_opaque(ldb, "EventContext"));
|
||||
if (!ildb->ldap) {
|
||||
ldb_oom(ldb);
|
||||
goto failed;
|
||||
@ -421,7 +421,8 @@ int ildb_connect(struct ldb_context *ldb, const char *url,
|
||||
ldb->modules->private_data = ildb;
|
||||
ldb->modules->ops = &ildb_ops;
|
||||
|
||||
if (cmdline_credentials->username_obtained > CRED_GUESSED) {
|
||||
if (cmdline_credentials != NULL &&
|
||||
cmdline_credentials->username_obtained > CRED_GUESSED) {
|
||||
status = ldap_bind_sasl(ildb->ldap, cmdline_credentials);
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
ldb_debug(ldb, LDB_DEBUG_ERROR, "Failed to bind - %s\n",
|
||||
|
Loading…
Reference in New Issue
Block a user