wmi-1.3.16 from opsview.com
This commit is contained in:
@@ -0,0 +1,111 @@
|
||||
/*
|
||||
Unix SMB/CIFS implementation.
|
||||
some simple double linked list macros
|
||||
Copyright (C) Andrew Tridgell 1998
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*/
|
||||
|
||||
/* To use these macros you must have a structure containing a next and
|
||||
prev pointer */
|
||||
|
||||
|
||||
/* hook into the front of the list */
|
||||
#define DLIST_ADD(list, p) \
|
||||
do { \
|
||||
if (!(list)) { \
|
||||
(list) = (p); \
|
||||
(p)->next = (p)->prev = NULL; \
|
||||
} else { \
|
||||
(list)->prev = (p); \
|
||||
(p)->next = (list); \
|
||||
(p)->prev = NULL; \
|
||||
(list) = (p); \
|
||||
}\
|
||||
} while (0)
|
||||
|
||||
/* remove an element from a list - element doesn't have to be in list. */
|
||||
#ifndef DLIST_REMOVE
|
||||
#define DLIST_REMOVE(list, p) \
|
||||
do { \
|
||||
if ((p) == (list)) { \
|
||||
(list) = (p)->next; \
|
||||
if (list) (list)->prev = NULL; \
|
||||
} else { \
|
||||
if ((p)->prev) (p)->prev->next = (p)->next; \
|
||||
if ((p)->next) (p)->next->prev = (p)->prev; \
|
||||
} \
|
||||
if ((p) && ((p) != (list))) (p)->next = (p)->prev = NULL; \
|
||||
} while (0)
|
||||
#endif
|
||||
|
||||
/* promote an element to the top of the list */
|
||||
#define DLIST_PROMOTE(list, p) \
|
||||
do { \
|
||||
DLIST_REMOVE(list, p); \
|
||||
DLIST_ADD(list, p); \
|
||||
} while (0)
|
||||
|
||||
/* hook into the end of the list - needs a tmp pointer */
|
||||
#define DLIST_ADD_END(list, p, type) \
|
||||
do { \
|
||||
if (!(list)) { \
|
||||
(list) = (p); \
|
||||
(p)->next = (p)->prev = NULL; \
|
||||
} else { \
|
||||
type tmp; \
|
||||
for (tmp = (list); tmp->next; tmp = tmp->next) ; \
|
||||
tmp->next = (p); \
|
||||
(p)->next = NULL; \
|
||||
(p)->prev = tmp; \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
/* insert 'p' after the given element 'el' in a list. If el is NULL then
|
||||
this is the same as a DLIST_ADD() */
|
||||
#define DLIST_ADD_AFTER(list, p, el) \
|
||||
do { \
|
||||
if (!(list) || !(el)) { \
|
||||
DLIST_ADD(list, p); \
|
||||
} else { \
|
||||
p->prev = el; \
|
||||
p->next = el->next; \
|
||||
el->next = p; \
|
||||
if (p->next) p->next->prev = p; \
|
||||
}\
|
||||
} while (0)
|
||||
|
||||
/* demote an element to the end of the list, needs a tmp pointer */
|
||||
#define DLIST_DEMOTE(list, p, tmp) \
|
||||
do { \
|
||||
DLIST_REMOVE(list, p); \
|
||||
DLIST_ADD_END(list, p, tmp); \
|
||||
} while (0)
|
||||
|
||||
/* concatenate two lists - putting all elements of the 2nd list at the
|
||||
end of the first list */
|
||||
#define DLIST_CONCATENATE(list1, list2, type) \
|
||||
do { \
|
||||
if (!(list1)) { \
|
||||
(list1) = (list2); \
|
||||
} else { \
|
||||
type tmp; \
|
||||
for (tmp = (list1); tmp->next; tmp = tmp->next) ; \
|
||||
tmp->next = (list2); \
|
||||
if (list2) { \
|
||||
(list2)->prev = tmp; \
|
||||
} \
|
||||
} \
|
||||
} while (0)
|
||||
@@ -0,0 +1,34 @@
|
||||
#ifndef _LDB_PRIVATE_INCLUDES_H_
|
||||
#define _LDB_PRIVATE_INCLUDES_H_
|
||||
/*
|
||||
a temporary includes file until I work on the ldb build system
|
||||
*/
|
||||
|
||||
#if (_SAMBA_BUILD_ >= 4)
|
||||
/* tell ldb we have the internal ldap code */
|
||||
#define HAVE_ILDAP 1
|
||||
#endif
|
||||
|
||||
#if (_SAMBA_BUILD_ <= 3)
|
||||
/* allow forbidden string functions - should be replaced with _m functions */
|
||||
#undef strcasecmp
|
||||
#undef strncasecmp
|
||||
#define dyn_MODULESDIR dyn_LIBDIR
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#define discard_const(ptr) ((void *)((intptr_t)(ptr)))
|
||||
#define discard_const_p(type, ptr) ((type *)discard_const(ptr))
|
||||
|
||||
#include "replace.h"
|
||||
#include "system/filesys.h"
|
||||
#include "system/network.h"
|
||||
#include "system/time.h"
|
||||
#include "talloc.h"
|
||||
#include "ldb.h"
|
||||
#include "ldb_errors.h"
|
||||
#include "ldb_private.h"
|
||||
#include "dlinklist.h"
|
||||
|
||||
#endif /*_LDB_PRIVATE_INCLUDES_H_*/
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,311 @@
|
||||
/*
|
||||
ldb database library
|
||||
|
||||
Copyright (C) Simo Sorce 2005
|
||||
|
||||
** NOTE! The following LGPL license applies to the ldb
|
||||
** library. This does NOT imply that all of Samba is released
|
||||
** under the LGPL
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2 of the License, or (at your option) any later version.
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with this library; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
/*
|
||||
* Name: ldb
|
||||
*
|
||||
* Component: ldb header
|
||||
*
|
||||
* Description: defines error codes following RFC 2251 ldap error codes
|
||||
*
|
||||
* Author: Simo Sorce
|
||||
*/
|
||||
|
||||
#ifndef _LDB_ERRORS_H_
|
||||
|
||||
/*! \cond DOXYGEN_IGNORE */
|
||||
#define _LDB_ERRORS_H_ 1
|
||||
/*! \endcond */
|
||||
|
||||
/**
|
||||
\file ldb_errors.h
|
||||
|
||||
This header provides a set of result codes for LDB function calls.
|
||||
|
||||
Many LDB function calls return an integer value (int). As shown in
|
||||
the function documentation, those return values may indicate
|
||||
whether the function call worked correctly (in which case it
|
||||
returns LDB_SUCCESS) or some problem occurred (in which case some
|
||||
other value will be returned). As a special case,
|
||||
LDB_ERR_COMPARE_FALSE or LDB_ERR_COMPARE_TRUE may be returned,
|
||||
which does not indicate an error.
|
||||
|
||||
\note Not all error codes make sense for LDB, however they are
|
||||
based on the LDAP error codes, and are kept for reference and to
|
||||
avoid overlap.
|
||||
|
||||
\note Some of this documentation is based on information in
|
||||
the OpenLDAP documentation, as developed and maintained by the
|
||||
<a href="http://www.openldap.org/">The OpenLDAP Project</a>.
|
||||
*/
|
||||
|
||||
/**
|
||||
The function call succeeded.
|
||||
|
||||
If a function returns LDB_SUCCESS, then that function, and the
|
||||
underlying transactions that may have been required, completed
|
||||
successfully.
|
||||
*/
|
||||
#define LDB_SUCCESS 0
|
||||
|
||||
/**
|
||||
The function call failed for some non-specific reason.
|
||||
*/
|
||||
#define LDB_ERR_OPERATIONS_ERROR 1
|
||||
|
||||
/**
|
||||
The function call failed because of a protocol violation.
|
||||
*/
|
||||
#define LDB_ERR_PROTOCOL_ERROR 2
|
||||
|
||||
/**
|
||||
The function call failed because a time limit was exceeded.
|
||||
*/
|
||||
#define LDB_ERR_TIME_LIMIT_EXCEEDED 3
|
||||
|
||||
/**
|
||||
The function call failed because a size limit was exceeded.
|
||||
*/
|
||||
#define LDB_ERR_SIZE_LIMIT_EXCEEDED 4
|
||||
|
||||
/**
|
||||
The function was for value comparison, and the comparison operation
|
||||
returned false.
|
||||
|
||||
\note This is a status value, and doesn't normally indicate an
|
||||
error.
|
||||
*/
|
||||
#define LDB_ERR_COMPARE_FALSE 5
|
||||
|
||||
/**
|
||||
The function was for value comparison, and the comparison operation
|
||||
returned true.
|
||||
|
||||
\note This is a status value, and doesn't normally indicate an
|
||||
error.
|
||||
*/
|
||||
#define LDB_ERR_COMPARE_TRUE 6
|
||||
|
||||
/**
|
||||
The function used an authentication method that is not supported by
|
||||
the database.
|
||||
*/
|
||||
#define LDB_ERR_AUTH_METHOD_NOT_SUPPORTED 7
|
||||
|
||||
/**
|
||||
The function call required a underlying operation that required
|
||||
strong authentication.
|
||||
|
||||
This will normally only occur if you are using LDB with a LDAP
|
||||
backend.
|
||||
*/
|
||||
#define LDB_ERR_STRONG_AUTH_REQUIRED 8
|
||||
/* 9 RESERVED */
|
||||
|
||||
/**
|
||||
The function resulted in a referral to another server.
|
||||
*/
|
||||
#define LDB_ERR_REFERRAL 10
|
||||
|
||||
/**
|
||||
The function failed because an administrative / policy limit was
|
||||
exceeded.
|
||||
*/
|
||||
#define LDB_ERR_ADMIN_LIMIT_EXCEEDED 11
|
||||
|
||||
/**
|
||||
The function required an extension or capability that the
|
||||
database cannot provide.
|
||||
*/
|
||||
#define LDB_ERR_UNSUPPORTED_CRITICAL_EXTENSION 12
|
||||
|
||||
/**
|
||||
The function involved a transaction or database operation that
|
||||
could not be performed without a secure link.
|
||||
*/
|
||||
#define LDB_ERR_CONFIDENTIALITY_REQUIRED 13
|
||||
|
||||
/**
|
||||
This is an intermediate result code for SASL bind operations that
|
||||
have more than one step.
|
||||
|
||||
\note This is a result code that does not normally indicate an
|
||||
error has occurred.
|
||||
*/
|
||||
#define LDB_ERR_SASL_BIND_IN_PROGRESS 14
|
||||
|
||||
/**
|
||||
The function referred to an attribute type that is not present in
|
||||
the entry.
|
||||
*/
|
||||
#define LDB_ERR_NO_SUCH_ATTRIBUTE 16
|
||||
|
||||
/**
|
||||
The function referred to an attribute type that is invalid
|
||||
*/
|
||||
#define LDB_ERR_UNDEFINED_ATTRIBUTE_TYPE 17
|
||||
|
||||
/**
|
||||
The function required a filter type that is not available for the
|
||||
specified attribute.
|
||||
*/
|
||||
#define LDB_ERR_INAPPROPRIATE_MATCHING 18
|
||||
|
||||
/**
|
||||
The function would have violated an attribute constraint.
|
||||
*/
|
||||
#define LDB_ERR_CONSTRAINT_VIOLATION 19
|
||||
|
||||
/**
|
||||
The function involved an attribute type or attribute value that
|
||||
already exists in the entry.
|
||||
*/
|
||||
#define LDB_ERR_ATTRIBUTE_OR_VALUE_EXISTS 20
|
||||
/**
|
||||
The function used an invalid (incorrect syntax) attribute value.
|
||||
*/
|
||||
#define LDB_ERR_INVALID_ATTRIBUTE_SYNTAX 21
|
||||
|
||||
/* 22-31 unused */
|
||||
|
||||
/**
|
||||
The function referred to an object that does not exist in the
|
||||
database.
|
||||
*/
|
||||
#define LDB_ERR_NO_SUCH_OBJECT 32
|
||||
|
||||
/**
|
||||
The function referred to an alias which points to a non-existant
|
||||
object in the database.
|
||||
*/
|
||||
#define LDB_ERR_ALIAS_PROBLEM 33
|
||||
|
||||
/**
|
||||
The function used a DN which was invalid (incorrect syntax).
|
||||
*/
|
||||
#define LDB_ERR_INVALID_DN_SYNTAX 34
|
||||
|
||||
/* 35 RESERVED */
|
||||
|
||||
/**
|
||||
The function required dereferencing of an alias, and something went
|
||||
wrong during the dereferencing process.
|
||||
*/
|
||||
#define LDB_ERR_ALIAS_DEREFERENCING_PROBLEM 36
|
||||
|
||||
/* 37-47 unused */
|
||||
|
||||
/**
|
||||
The function passed in the wrong authentication method.
|
||||
*/
|
||||
#define LDB_ERR_INAPPROPRIATE_AUTHENTICATION 48
|
||||
|
||||
/**
|
||||
The function passed in or referenced incorrect credentials during
|
||||
authentication.
|
||||
*/
|
||||
#define LDB_ERR_INVALID_CREDENTIALS 49
|
||||
|
||||
/**
|
||||
The function required access permissions that the user does not
|
||||
possess.
|
||||
*/
|
||||
#define LDB_ERR_INSUFFICIENT_ACCESS_RIGHTS 50
|
||||
|
||||
/**
|
||||
The function required a transaction or call that the database could
|
||||
not perform because it is busy.
|
||||
*/
|
||||
#define LDB_ERR_BUSY 51
|
||||
|
||||
/**
|
||||
The function required a transaction or call to a database that is
|
||||
not available.
|
||||
*/
|
||||
#define LDB_ERR_UNAVAILABLE 52
|
||||
|
||||
/**
|
||||
The function required a transaction or call to a database that the
|
||||
database declined to perform.
|
||||
*/
|
||||
#define LDB_ERR_UNWILLING_TO_PERFORM 53
|
||||
|
||||
/**
|
||||
The function failed because it resulted in a loop being detected.
|
||||
*/
|
||||
#define LDB_ERR_LOOP_DETECT 54
|
||||
|
||||
/* 55-63 unused */
|
||||
|
||||
/**
|
||||
The function failed because it would have violated a naming rule.
|
||||
*/
|
||||
#define LDB_ERR_NAMING_VIOLATION 64
|
||||
|
||||
/**
|
||||
The function failed because it would have violated the schema.
|
||||
*/
|
||||
#define LDB_ERR_OBJECT_CLASS_VIOLATION 65
|
||||
|
||||
/**
|
||||
The function required an operation that is only allowed on leaf
|
||||
objects, but the object is not a leaf.
|
||||
*/
|
||||
#define LDB_ERR_NOT_ALLOWED_ON_NON_LEAF 66
|
||||
|
||||
/**
|
||||
The function required an operation that cannot be performed on a
|
||||
Relative DN, but the object is a Relative DN.
|
||||
*/
|
||||
#define LDB_ERR_NOT_ALLOWED_ON_RDN 67
|
||||
|
||||
/**
|
||||
The function failed because the entry already exists.
|
||||
*/
|
||||
#define LDB_ERR_ENTRY_ALREADY_EXISTS 68
|
||||
|
||||
/**
|
||||
The function failed because modifications to an object class are
|
||||
not allowable.
|
||||
*/
|
||||
#define LDB_ERR_OBJECT_CLASS_MODS_PROHIBITED 69
|
||||
|
||||
/* 70 RESERVED FOR CLDAP */
|
||||
|
||||
/**
|
||||
The function failed because it needed to be applied to multiple
|
||||
databases.
|
||||
*/
|
||||
#define LDB_ERR_AFFECTS_MULTIPLE_DSAS 71
|
||||
|
||||
/* 72-79 unused */
|
||||
|
||||
/**
|
||||
The function failed for unknown reasons.
|
||||
*/
|
||||
#define LDB_ERR_OTHER 80
|
||||
|
||||
/* 81-90 RESERVED for APIs */
|
||||
|
||||
#endif /* _LDB_ERRORS_H_ */
|
||||
@@ -0,0 +1,68 @@
|
||||
/*
|
||||
ldb database library
|
||||
|
||||
Copyright (C) Simo Sorce 2005
|
||||
|
||||
** NOTE! The following LGPL license applies to the ldb
|
||||
** library. This does NOT imply that all of Samba is released
|
||||
** under the LGPL
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2 of the License, or (at your option) any later version.
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with this library; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
/*
|
||||
* Name: ldb
|
||||
*
|
||||
* Component: ldb header
|
||||
*
|
||||
* Description: defines attribute handlers
|
||||
*
|
||||
* Author: Simo Sorce
|
||||
*/
|
||||
|
||||
|
||||
int ldb_handler_copy( struct ldb_context *ldb, void *mem_ctx,
|
||||
const struct ldb_val *in, struct ldb_val *out);
|
||||
|
||||
int ldb_handler_fold( struct ldb_context *ldb, void *mem_ctx,
|
||||
const struct ldb_val *in, struct ldb_val *out);
|
||||
|
||||
int ldb_canonicalise_Integer( struct ldb_context *ldb, void *mem_ctx,
|
||||
const struct ldb_val *in, struct ldb_val *out);
|
||||
|
||||
int ldb_comparison_Integer( struct ldb_context *ldb, void *mem_ctx,
|
||||
const struct ldb_val *v1, const struct ldb_val *v2);
|
||||
|
||||
int ldb_comparison_binary( struct ldb_context *ldb, void *mem_ctx,
|
||||
const struct ldb_val *v1, const struct ldb_val *v2);
|
||||
|
||||
int ldb_comparison_fold( struct ldb_context *ldb, void *mem_ctx,
|
||||
const struct ldb_val *v1, const struct ldb_val *v2);
|
||||
|
||||
int ldb_canonicalise_dn( struct ldb_context *ldb, void *mem_ctx,
|
||||
const struct ldb_val *in, struct ldb_val *out);
|
||||
|
||||
int ldb_comparison_dn( struct ldb_context *ldb, void *mem_ctx,
|
||||
const struct ldb_val *v1, const struct ldb_val *v2);
|
||||
|
||||
int ldb_comparison_objectclass( struct ldb_context *ldb, void *mem_ctx,
|
||||
const struct ldb_val *v1, const struct ldb_val *v2);
|
||||
|
||||
int ldb_comparison_utctime( struct ldb_context *ldb, void *mem_ctx,
|
||||
const struct ldb_val *v1, const struct ldb_val *v2);
|
||||
|
||||
int ldb_canonicalise_utctime( struct ldb_context *ldb, void *mem_ctx,
|
||||
const struct ldb_val *in, struct ldb_val *out);
|
||||
|
||||
@@ -0,0 +1,225 @@
|
||||
/*
|
||||
ldb database library
|
||||
|
||||
Copyright (C) Andrew Tridgell 2004
|
||||
Copyright (C) Stefan Metzmacher 2004
|
||||
Copyright (C) Simo Sorce 2004-2005
|
||||
|
||||
** NOTE! The following LGPL license applies to the ldb
|
||||
** library. This does NOT imply that all of Samba is released
|
||||
** under the LGPL
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2 of the License, or (at your option) any later version.
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with this library; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
/*
|
||||
* Name: ldb
|
||||
*
|
||||
* Component: ldb private header
|
||||
*
|
||||
* Description: defines internal ldb structures used by the subsystem and modules
|
||||
*
|
||||
* Author: Andrew Tridgell
|
||||
* Author: Stefan Metzmacher
|
||||
*/
|
||||
|
||||
#ifndef _LDB_PRIVATE_H_
|
||||
#define _LDB_PRIVATE_H_ 1
|
||||
|
||||
struct ldb_context;
|
||||
|
||||
struct ldb_module_ops;
|
||||
|
||||
/* basic module structure */
|
||||
struct ldb_module {
|
||||
struct ldb_module *prev, *next;
|
||||
struct ldb_context *ldb;
|
||||
void *private_data;
|
||||
const struct ldb_module_ops *ops;
|
||||
};
|
||||
|
||||
/*
|
||||
these function pointers define the operations that a ldb module must perform
|
||||
they correspond exactly to the ldb_*() interface
|
||||
*/
|
||||
struct ldb_module_ops {
|
||||
const char *name;
|
||||
int (*init_context) (struct ldb_module *);
|
||||
int (*search)(struct ldb_module *, struct ldb_request *); /* search */
|
||||
int (*add)(struct ldb_module *, struct ldb_request *); /* add */
|
||||
int (*modify)(struct ldb_module *, struct ldb_request *); /* modify */
|
||||
int (*del)(struct ldb_module *, struct ldb_request *); /* delete */
|
||||
int (*rename)(struct ldb_module *, struct ldb_request *); /* rename */
|
||||
int (*request)(struct ldb_module *, struct ldb_request *); /* match any other operation */
|
||||
int (*extended)(struct ldb_module *, struct ldb_request *); /* extended operations */
|
||||
int (*start_transaction)(struct ldb_module *);
|
||||
int (*end_transaction)(struct ldb_module *);
|
||||
int (*del_transaction)(struct ldb_module *);
|
||||
int (*wait)(struct ldb_handle *, enum ldb_wait_type);
|
||||
int (*sequence_number)(struct ldb_module *, struct ldb_request *);
|
||||
};
|
||||
|
||||
typedef int (*ldb_connect_fn) (struct ldb_context *ldb, const char *url, unsigned int flags, const char *options[],
|
||||
struct ldb_module **module);
|
||||
|
||||
/*
|
||||
schema related information needed for matching rules
|
||||
*/
|
||||
struct ldb_schema {
|
||||
/* attribute handling table */
|
||||
unsigned num_attrib_handlers;
|
||||
struct ldb_attrib_handler *attrib_handlers;
|
||||
|
||||
/* objectclass information */
|
||||
unsigned num_classes;
|
||||
struct ldb_subclass {
|
||||
char *name;
|
||||
char **subclasses;
|
||||
} *classes;
|
||||
};
|
||||
|
||||
/*
|
||||
every ldb connection is started by establishing a ldb_context
|
||||
*/
|
||||
struct ldb_context {
|
||||
/* the operations provided by the backend */
|
||||
struct ldb_module *modules;
|
||||
|
||||
/* debugging operations */
|
||||
struct ldb_debug_ops debug_ops;
|
||||
|
||||
/* custom utf8 functions */
|
||||
struct ldb_utf8_fns utf8_fns;
|
||||
|
||||
/* backend specific opaque parameters */
|
||||
struct ldb_opaque {
|
||||
struct ldb_opaque *next;
|
||||
const char *name;
|
||||
void *value;
|
||||
} *opaque;
|
||||
|
||||
struct ldb_schema schema;
|
||||
|
||||
char *err_string;
|
||||
|
||||
int transaction_active;
|
||||
|
||||
int default_timeout;
|
||||
|
||||
unsigned int flags;
|
||||
|
||||
unsigned int create_perms;
|
||||
};
|
||||
|
||||
#ifndef ARRAY_SIZE
|
||||
#define ARRAY_SIZE(a) (sizeof(a)/sizeof(a[0]))
|
||||
#endif
|
||||
|
||||
/*
|
||||
simplify out of memory handling
|
||||
*/
|
||||
#define ldb_oom(ldb) ldb_debug_set(ldb, LDB_DEBUG_FATAL, "ldb out of memory at %s:%d\n", __FILE__, __LINE__)
|
||||
|
||||
/* The following definitions come from lib/ldb/common/ldb.c */
|
||||
|
||||
int ldb_connect_backend(struct ldb_context *ldb, const char *url, const char *options[],
|
||||
struct ldb_module **backend_module);
|
||||
|
||||
/* The following definitions come from lib/ldb/common/ldb_modules.c */
|
||||
|
||||
const char **ldb_modules_list_from_string(struct ldb_context *ldb, TALLOC_CTX *mem_ctx, const char *string);
|
||||
int ldb_load_modules_list(struct ldb_context *ldb, const char **module_list, struct ldb_module *backend, struct ldb_module **out);
|
||||
int ldb_load_modules(struct ldb_context *ldb, const char *options[]);
|
||||
int ldb_init_module_chain(struct ldb_context *ldb, struct ldb_module *module);
|
||||
int ldb_next_request(struct ldb_module *module, struct ldb_request *request);
|
||||
int ldb_next_start_trans(struct ldb_module *module);
|
||||
int ldb_next_end_trans(struct ldb_module *module);
|
||||
int ldb_next_del_trans(struct ldb_module *module);
|
||||
int ldb_next_init(struct ldb_module *module);
|
||||
|
||||
void ldb_set_errstring(struct ldb_context *ldb, const char *err_string);
|
||||
void ldb_asprintf_errstring(struct ldb_context *ldb, const char *format, ...) PRINTF_ATTRIBUTE(2,3);
|
||||
void ldb_reset_err_string(struct ldb_context *ldb);
|
||||
|
||||
int ldb_register_module(const struct ldb_module_ops *);
|
||||
int ldb_register_backend(const char *url_prefix, ldb_connect_fn);
|
||||
int ldb_try_load_dso(struct ldb_context *ldb, const char *name);
|
||||
|
||||
/* The following definitions come from lib/ldb/common/ldb_debug.c */
|
||||
void ldb_debug(struct ldb_context *ldb, enum ldb_debug_level level, const char *fmt, ...) PRINTF_ATTRIBUTE(3, 4);
|
||||
void ldb_debug_set(struct ldb_context *ldb, enum ldb_debug_level level,
|
||||
const char *fmt, ...) PRINTF_ATTRIBUTE(3, 4);
|
||||
|
||||
/* The following definitions come from lib/ldb/common/ldb_ldif.c */
|
||||
int ldb_should_b64_encode(const struct ldb_val *val);
|
||||
|
||||
int ldb_objectclass_init(void);
|
||||
int ldb_operational_init(void);
|
||||
int ldb_paged_results_init(void);
|
||||
int ldb_rdn_name_init(void);
|
||||
int ldb_schema_init(void);
|
||||
int ldb_asq_init(void);
|
||||
int ldb_sort_init(void);
|
||||
int ldb_ldap_init(void);
|
||||
int ldb_ildap_init(void);
|
||||
int ldb_tdb_init(void);
|
||||
int ldb_sqlite3_init(void);
|
||||
|
||||
int ldb_match_msg(struct ldb_context *ldb,
|
||||
const struct ldb_message *msg,
|
||||
const struct ldb_parse_tree *tree,
|
||||
struct ldb_dn *base,
|
||||
enum ldb_scope scope);
|
||||
|
||||
void ldb_remove_attrib_handler(struct ldb_context *ldb, const char *attrib);
|
||||
const struct ldb_attrib_handler *ldb_attrib_handler_syntax(struct ldb_context *ldb,
|
||||
const char *syntax);
|
||||
int ldb_set_attrib_handlers(struct ldb_context *ldb,
|
||||
const struct ldb_attrib_handler *handlers,
|
||||
unsigned num_handlers);
|
||||
int ldb_setup_wellknown_attributes(struct ldb_context *ldb);
|
||||
int ldb_set_attrib_handler_syntax(struct ldb_context *ldb,
|
||||
const char *attr, const char *syntax);
|
||||
|
||||
/* The following definitions come from lib/ldb/common/ldb_attributes.c */
|
||||
const char **ldb_subclass_list(struct ldb_context *ldb, const char *classname);
|
||||
void ldb_subclass_remove(struct ldb_context *ldb, const char *classname);
|
||||
int ldb_subclass_add(struct ldb_context *ldb, const char *classname, const char *subclass);
|
||||
|
||||
int ldb_handler_copy(struct ldb_context *ldb, void *mem_ctx,
|
||||
const struct ldb_val *in, struct ldb_val *out);
|
||||
int ldb_comparison_binary(struct ldb_context *ldb, void *mem_ctx,
|
||||
const struct ldb_val *v1, const struct ldb_val *v2);
|
||||
|
||||
/* The following definitions come from lib/ldb/common/ldb_controls.c */
|
||||
struct ldb_control *get_control_from_list(struct ldb_control **controls, const char *oid);
|
||||
int save_controls(struct ldb_control *exclude, struct ldb_request *req, struct ldb_control ***saver);
|
||||
int check_critical_controls(struct ldb_control **controls);
|
||||
|
||||
/* The following definitions come from lib/ldb/common/ldb_utf8.c */
|
||||
char *ldb_casefold_default(void *context, void *mem_ctx, const char *s);
|
||||
|
||||
void ldb_msg_remove_element(struct ldb_message *msg, struct ldb_message_element *el);
|
||||
|
||||
/**
|
||||
Obtain current/next database sequence number
|
||||
*/
|
||||
int ldb_sequence_number(struct ldb_context *ldb, enum ldb_sequence_type type, uint64_t *seq_num);
|
||||
|
||||
#define LDB_SEQ_GLOBAL_SEQUENCE 0x01
|
||||
#define LDB_SEQ_TIMESTAMP_SEQUENCE 0x02
|
||||
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user