root/source4/lib/ldb/include/ldb_private.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   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

/* [<][>][^][v][top][bottom][index][help] */