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

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

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. ldb_debug

   1 /*
   2    ldb database library
   3 
   4    Copyright (C) Simo Sorce         2008
   5 
   6      ** NOTE! The following LGPL license applies to the ldb
   7      ** library. This does NOT imply that all of Samba is released
   8      ** under the LGPL
   9 
  10    This library is free software; you can redistribute it and/or
  11    modify it under the terms of the GNU Lesser General Public
  12    License as published by the Free Software Foundation; either
  13    version 3 of the License, or (at your option) any later version.
  14 
  15    This library is distributed in the hope that it will be useful,
  16    but WITHOUT ANY WARRANTY; without even the implied warranty of
  17    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  18    Lesser General Public License for more details.
  19 
  20    You should have received a copy of the GNU Lesser General Public
  21    License along with this library; if not, see <http://www.gnu.org/licenses/>.
  22 */
  23 
  24 /*
  25  *  Name: ldb
  26  *
  27  *  Component: ldb module header
  28  *
  29  *  Description: defines ldb modules structures and helpers
  30  *
  31  */
  32 
  33 #ifndef _LDB_MODULE_H_
  34 #define _LDB_MODULE_H_
  35 
  36 #include "ldb.h"
  37 
  38 struct ldb_context;
  39 struct ldb_module;
  40 
  41 /*
  42    these function pointers define the operations that a ldb module can intercept
  43 */
  44 struct ldb_module_ops {
  45         const char *name;
  46         int (*init_context) (struct ldb_module *);
  47         int (*search)(struct ldb_module *, struct ldb_request *); /* search */
  48         int (*add)(struct ldb_module *, struct ldb_request *); /* add */
  49         int (*modify)(struct ldb_module *, struct ldb_request *); /* modify */
  50         int (*del)(struct ldb_module *, struct ldb_request *); /* delete */
  51         int (*rename)(struct ldb_module *, struct ldb_request *); /* rename */
  52         int (*request)(struct ldb_module *, struct ldb_request *); /* match any other operation */
  53         int (*extended)(struct ldb_module *, struct ldb_request *); /* extended operations */
  54         int (*start_transaction)(struct ldb_module *);
  55         int (*end_transaction)(struct ldb_module *);
  56         int (*del_transaction)(struct ldb_module *);
  57         int (*sequence_number)(struct ldb_module *, struct ldb_request *);
  58         void *private_data;
  59 };
  60 
  61 
  62 /* The following definitions come from lib/ldb/common/ldb_debug.c  */
  63 void ldb_debug(struct ldb_context *ldb, enum ldb_debug_level level, const char *fmt, ...) PRINTF_ATTRIBUTE(3, 4);
     /* [<][>][^][v][top][bottom][index][help] */
  64 void ldb_debug_set(struct ldb_context *ldb, enum ldb_debug_level level, 
  65                    const char *fmt, ...) PRINTF_ATTRIBUTE(3, 4);
  66 
  67 #define ldb_oom(ldb) ldb_debug_set(ldb, LDB_DEBUG_FATAL, "ldb out of memory at %s:%d\n", __FILE__, __LINE__)
  68 
  69 /* The following definitions come from lib/ldb/common/ldb.c  */
  70 
  71 void ldb_request_set_state(struct ldb_request *req, int state);
  72 int ldb_request_get_status(struct ldb_request *req);
  73 
  74 unsigned int ldb_get_create_perms(struct ldb_context *ldb);
  75 
  76 const struct ldb_schema_syntax *ldb_standard_syntax_by_name(struct ldb_context *ldb,
  77                                                             const char *syntax);
  78 
  79 /* The following definitions come from lib/ldb/common/ldb_attributes.c  */
  80 
  81 int ldb_schema_attribute_add_with_syntax(struct ldb_context *ldb,
  82                                          const char *name,
  83                                          unsigned flags,
  84                                          const struct ldb_schema_syntax *syntax);
  85 int ldb_schema_attribute_add(struct ldb_context *ldb, 
  86                              const char *name,
  87                              unsigned flags,
  88                              const char *syntax);
  89 void ldb_schema_attribute_remove(struct ldb_context *ldb, const char *name);
  90 
  91 /* The following definitions come from lib/ldb/common/ldb_controls.c  */
  92 struct ldb_control *get_control_from_list(struct ldb_control **controls, const char *oid);
  93 int save_controls(struct ldb_control *exclude, struct ldb_request *req, struct ldb_control ***saver);
  94 int check_critical_controls(struct ldb_control **controls);
  95 
  96 /* The following definitions come from lib/ldb/common/ldb_ldif.c  */
  97 int ldb_should_b64_encode(const struct ldb_val *val);
  98 
  99 /* The following definitions come from lib/ldb/common/ldb_match.c  */
 100 int ldb_match_msg(struct ldb_context *ldb,
 101                   const struct ldb_message *msg,
 102                   const struct ldb_parse_tree *tree,
 103                   struct ldb_dn *base,
 104                   enum ldb_scope scope);
 105 
 106 /* The following definitions come from lib/ldb/common/ldb_modules.c  */
 107 
 108 struct ldb_module *ldb_module_new(TALLOC_CTX *memctx,
 109                                   struct ldb_context *ldb,
 110                                   const char *module_name,
 111                                   const struct ldb_module_ops *ops);
 112 
 113 const char * ldb_module_get_name(struct ldb_module *module);
 114 struct ldb_context *ldb_module_get_ctx(struct ldb_module *module);
 115 void *ldb_module_get_private(struct ldb_module *module);
 116 void ldb_module_set_private(struct ldb_module *module, void *private_data);
 117 
 118 int ldb_next_request(struct ldb_module *module, struct ldb_request *request);
 119 int ldb_next_start_trans(struct ldb_module *module);
 120 int ldb_next_end_trans(struct ldb_module *module);
 121 int ldb_next_del_trans(struct ldb_module *module);
 122 int ldb_next_init(struct ldb_module *module);
 123 
 124 void ldb_set_errstring(struct ldb_context *ldb, const char *err_string);
 125 void ldb_asprintf_errstring(struct ldb_context *ldb, const char *format, ...) PRINTF_ATTRIBUTE(2,3);
 126 void ldb_reset_err_string(struct ldb_context *ldb);
 127 
 128 const char *ldb_default_modules_dir(void);
 129 
 130 int ldb_register_module(const struct ldb_module_ops *);
 131 
 132 typedef int (*ldb_connect_fn)(struct ldb_context *ldb, const char *url,
 133                               unsigned int flags, const char *options[],
 134                               struct ldb_module **module);
 135 
 136 struct ldb_backend_ops {
 137         const char *name;
 138         ldb_connect_fn connect_fn;
 139 };
 140 
 141 const char *ldb_default_modules_dir(void);
 142 
 143 int ldb_register_backend(const char *url_prefix, ldb_connect_fn);
 144 
 145 struct ldb_handle *ldb_handle_new(TALLOC_CTX *mem_ctx, struct ldb_context *ldb);
 146 
 147 int ldb_module_send_entry(struct ldb_request *req,
 148                           struct ldb_message *msg,
 149                           struct ldb_control **ctrls);
 150 
 151 int ldb_module_send_referral(struct ldb_request *req,
 152                                            char *ref);
 153 
 154 int ldb_module_done(struct ldb_request *req,
 155                     struct ldb_control **ctrls,
 156                     struct ldb_extended *response,
 157                     int error);
 158 
 159 int ldb_mod_register_control(struct ldb_module *module, const char *oid);
 160 
 161 #endif

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