~zulcss/samba/server-dailies-3.4

« back to all changes in this revision

Viewing changes to source4/lib/ldb/include/ldb_private.h

  • Committer: Chuck Short
  • Date: 2010-09-28 20:38:39 UTC
  • Revision ID: zulcss@ubuntu.com-20100928203839-pgjulytsi9ue63x1
Initial version

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* 
 
2
   ldb database library
 
3
 
 
4
   Copyright (C) Andrew Tridgell    2004
 
5
   Copyright (C) Stefan Metzmacher  2004
 
6
   Copyright (C) Simo Sorce         2004-2005
 
7
 
 
8
     ** NOTE! The following LGPL license applies to the ldb
 
9
     ** library. This does NOT imply that all of Samba is released
 
10
     ** under the LGPL
 
11
   
 
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.
 
16
 
 
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.
 
21
 
 
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/>.
 
24
*/
 
25
 
 
26
/*
 
27
 *  Name: ldb
 
28
 *
 
29
 *  Component: ldb private header
 
30
 *
 
31
 *  Description: defines internal ldb structures used by the subsystem and modules
 
32
 *
 
33
 *  Author: Andrew Tridgell
 
34
 *  Author: Stefan Metzmacher
 
35
 */
 
36
 
 
37
#ifndef _LDB_PRIVATE_H_
 
38
#define _LDB_PRIVATE_H_ 1
 
39
 
 
40
#include "ldb_includes.h"
 
41
#include "ldb.h"
 
42
#include "ldb_module.h"
 
43
 
 
44
struct ldb_context;
 
45
 
 
46
struct ldb_module_ops;
 
47
 
 
48
struct ldb_backend_ops;
 
49
 
 
50
struct ldb_handle {
 
51
        int status;
 
52
        enum ldb_state state;
 
53
        struct ldb_context *ldb;
 
54
};
 
55
 
 
56
/* basic module structure */
 
57
struct ldb_module {
 
58
        struct ldb_module *prev, *next;
 
59
        struct ldb_context *ldb;
 
60
        void *private_data;
 
61
        const struct ldb_module_ops *ops;
 
62
};
 
63
 
 
64
/*
 
65
  schema related information needed for matching rules
 
66
*/
 
67
struct ldb_schema {
 
68
        /* attribute handling table */
 
69
        unsigned num_attributes;
 
70
        struct ldb_schema_attribute *attributes;
 
71
 
 
72
        unsigned num_dn_extended_syntax;
 
73
        struct ldb_dn_extended_syntax *dn_extended_syntax;
 
74
};
 
75
 
 
76
/*
 
77
  every ldb connection is started by establishing a ldb_context
 
78
*/
 
79
struct ldb_context {
 
80
        /* the operations provided by the backend */
 
81
        struct ldb_module *modules;
 
82
 
 
83
        /* debugging operations */
 
84
        struct ldb_debug_ops debug_ops;
 
85
 
 
86
        /* custom utf8 functions */
 
87
        struct ldb_utf8_fns utf8_fns;
 
88
 
 
89
        /* backend specific opaque parameters */
 
90
        struct ldb_opaque {
 
91
                struct ldb_opaque *next;
 
92
                const char *name;
 
93
                void *value;
 
94
        } *opaque;
 
95
 
 
96
        struct ldb_schema schema;
 
97
 
 
98
        char *err_string;
 
99
 
 
100
        int transaction_active;
 
101
 
 
102
        int default_timeout;
 
103
 
 
104
        unsigned int flags;
 
105
 
 
106
        unsigned int create_perms;
 
107
 
 
108
        char *modules_dir;
 
109
 
 
110
        struct tevent_context *ev_ctx;
 
111
};
 
112
 
 
113
/* The following definitions come from lib/ldb/common/ldb.c  */
 
114
 
 
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);
 
118
 
 
119
 
 
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;
 
137
 
 
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;
 
143
 
 
144
int ldb_setup_wellknown_attributes(struct ldb_context *ldb);
 
145
 
 
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);
 
149
 
 
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);
 
152
 
 
153
void ldb_dump_results(struct ldb_context *ldb, struct ldb_result *result, FILE *f);
 
154
 
 
155
 
 
156
/* The following definitions come from lib/ldb/common/ldb_modules.c  */
 
157
 
 
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);
 
162
 
 
163
struct ldb_val ldb_binary_decode(void *mem_ctx, const char *str);
 
164
 
 
165
#endif