4
Copyright (C) Andrew Tridgell 2004
5
Copyright (C) Stefan Metzmacher 2004
6
Copyright (C) Simo Sorce 2004-2005
8
** NOTE! The following LGPL license applies to the ldb
9
** library. This does NOT imply that all of Samba is released
12
This library is free software; you can redistribute it and/or
13
modify it under the terms of the GNU Lesser General Public
14
License as published by the Free Software Foundation; either
15
version 3 of the License, or (at your option) any later version.
17
This library is distributed in the hope that it will be useful,
18
but WITHOUT ANY WARRANTY; without even the implied warranty of
19
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
20
Lesser General Public License for more details.
22
You should have received a copy of the GNU Lesser General Public
23
License along with this library; if not, see <http://www.gnu.org/licenses/>.
29
* Component: ldb private header
31
* Description: defines internal ldb structures used by the subsystem and modules
33
* Author: Andrew Tridgell
34
* Author: Stefan Metzmacher
37
#ifndef _LDB_PRIVATE_H_
38
#define _LDB_PRIVATE_H_ 1
40
#include "ldb_includes.h"
42
#include "ldb_module.h"
46
struct ldb_module_ops;
48
struct ldb_backend_ops;
53
struct ldb_context *ldb;
56
/* basic module structure */
58
struct ldb_module *prev, *next;
59
struct ldb_context *ldb;
61
const struct ldb_module_ops *ops;
65
schema related information needed for matching rules
68
/* attribute handling table */
69
unsigned num_attributes;
70
struct ldb_schema_attribute *attributes;
72
unsigned num_dn_extended_syntax;
73
struct ldb_dn_extended_syntax *dn_extended_syntax;
77
every ldb connection is started by establishing a ldb_context
80
/* the operations provided by the backend */
81
struct ldb_module *modules;
83
/* debugging operations */
84
struct ldb_debug_ops debug_ops;
86
/* custom utf8 functions */
87
struct ldb_utf8_fns utf8_fns;
89
/* backend specific opaque parameters */
91
struct ldb_opaque *next;
96
struct ldb_schema schema;
100
int transaction_active;
106
unsigned int create_perms;
110
struct tevent_context *ev_ctx;
113
/* The following definitions come from lib/ldb/common/ldb.c */
115
int ldb_connect_backend(struct ldb_context *ldb, const char *url, const char *options[],
116
struct ldb_module **backend_module);
117
void ldb_set_default_dns(struct ldb_context *ldb);
120
extern const struct ldb_module_ops ldb_objectclass_module_ops;
121
extern const struct ldb_module_ops ldb_operational_module_ops;
122
extern const struct ldb_module_ops ldb_paged_results_module_ops;
123
extern const struct ldb_module_ops ldb_rdn_name_module_ops;
124
extern const struct ldb_module_ops ldb_schema_module_ops;
125
extern const struct ldb_module_ops ldb_asq_module_ops;
126
extern const struct ldb_module_ops ldb_server_sort_module_ops;
127
extern const struct ldb_module_ops ldb_ldap_module_ops;
128
extern const struct ldb_module_ops ldb_ildap_module_ops;
129
extern const struct ldb_module_ops ldb_paged_searches_module_ops;
130
extern const struct ldb_module_ops ldb_tdb_module_ops;
131
extern const struct ldb_module_ops ldb_skel_module_ops;
132
extern const struct ldb_module_ops ldb_subtree_rename_module_ops;
133
extern const struct ldb_module_ops ldb_subtree_delete_module_ops;
134
extern const struct ldb_module_ops ldb_sqlite3_module_ops;
135
extern const struct ldb_module_ops ldb_wins_ldb_module_ops;
136
extern const struct ldb_module_ops ldb_ranged_results_module_ops;
138
extern const struct ldb_backend_ops ldb_tdb_backend_ops;
139
extern const struct ldb_backend_ops ldb_sqlite3_backend_ops;
140
extern const struct ldb_backend_ops ldb_ldap_backend_ops;
141
extern const struct ldb_backend_ops ldb_ldapi_backend_ops;
142
extern const struct ldb_backend_ops ldb_ldaps_backend_ops;
144
int ldb_setup_wellknown_attributes(struct ldb_context *ldb);
146
const char **ldb_subclass_list(struct ldb_context *ldb, const char *classname);
147
void ldb_subclass_remove(struct ldb_context *ldb, const char *classname);
148
int ldb_subclass_add(struct ldb_context *ldb, const char *classname, const char *subclass);
150
/* The following definitions come from lib/ldb/common/ldb_utf8.c */
151
char *ldb_casefold_default(void *context, void *mem_ctx, const char *s, size_t n);
153
void ldb_dump_results(struct ldb_context *ldb, struct ldb_result *result, FILE *f);
156
/* The following definitions come from lib/ldb/common/ldb_modules.c */
158
const char **ldb_modules_list_from_string(struct ldb_context *ldb, TALLOC_CTX *mem_ctx, const char *string);
159
int ldb_load_modules_list(struct ldb_context *ldb, const char **module_list, struct ldb_module *backend, struct ldb_module **out);
160
int ldb_load_modules(struct ldb_context *ldb, const char *options[]);
161
int ldb_init_module_chain(struct ldb_context *ldb, struct ldb_module *module);
163
struct ldb_val ldb_binary_decode(void *mem_ctx, const char *str);