]> git.sur5r.net Git - openldap/blobdiff - include/rewrite.h
Return to release engineering
[openldap] / include / rewrite.h
index 6e6bc86e062d866f055b8ea6ea12c9230e72ceff..2084023ec7f3fc9f2021e8537a92ef640a7d9b73 100644 (file)
@@ -1,26 +1,23 @@
-/******************************************************************************
+/* $OpenLDAP$
+ */
+/* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *
- * Copyright (C) 2000 Pierangelo Masarati, <ando@sys-net.it>
+ * Copyright 2000-2013 The OpenLDAP Foundation.
+ * Portions Copyright 2000-2003 Pierangelo Masarati.
  * All rights reserved.
  *
- * Permission is granted to anyone to use this software for any purpose
- * on any computer system, and to alter it and redistribute it, subject
- * to the following restrictions:
- *
- * 1. The author is not responsible for the consequences of use of this
- * software, no matter how awful, even if they arise from flaws in it.
- *
- * 2. The origin of this software must not be misrepresented, either by
- * explicit claim or by omission.  Since few users ever read sources,
- * credits should appear in the documentation.
- *
- * 3. Altered versions must be plainly marked as such, and must not be
- * misrepresented as being the original software.  Since few users
- * ever read sources, credits should appear in the documentation.
- *
- * 4. This notice may not be removed or altered.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted only as authorized by the OpenLDAP
+ * Public License.
  *
- ******************************************************************************/
+ * A copy of this license is available in file LICENSE in the
+ * top-level directory of the distribution or, alternatively, at
+ * <http://www.OpenLDAP.org/license.html>.
+ */
+/* ACKNOWLEDGEMENT:
+ * This work was initially developed by Pierangelo Masarati for
+ * inclusion in OpenLDAP Software.
+ */
 
 #ifndef REWRITE_H
 #define REWRITE_H
@@ -41,8 +38,7 @@
  * Rewrite internal status returns
  */
 #define REWRITE_SUCCESS                        LDAP_SUCCESS
-#define REWRITE_ERR                    LDAP_OPERATIONS_ERROR
-#define REWRITE_NO_SUCH_OBJECT         LDAP_NO_SUCH_OBJECT
+#define REWRITE_ERR                    LDAP_OTHER
 
 /*
  * Rewrite modes (input values for rewrite_info_init); determine the
  *     REWRITE_REGEXEC_UNWILLING       the server should issue an 'unwilling
  *                                     to perform' error
  */
-#define REWRITE_REGEXEC_OK              0x0000
-#define REWRITE_REGEXEC_ERR             0x0001
-#define REWRITE_REGEXEC_STOP            0x0002
-#define REWRITE_REGEXEC_UNWILLING       0x0004
+#define REWRITE_REGEXEC_OK              (0)
+#define REWRITE_REGEXEC_ERR             (-1)
+#define REWRITE_REGEXEC_STOP            (-2)
+#define REWRITE_REGEXEC_UNWILLING       (-3)
+#define REWRITE_REGEXEC_USER           (1)     /* and above: LDAP errors */
 
 /*
  * Rewrite variable flags
@@ -93,6 +90,7 @@
  *                                     referenced string is available for
  *                                     the entire life scope of the variable.
  */
+#define REWRITE_VAR_NONE               0x0000
 #define REWRITE_VAR_INSERT             0x0001
 #define REWRITE_VAR_UPDATE             0x0002
 #define REWRITE_VAR_COPY_NAME          0x0004
@@ -255,6 +253,46 @@ rewrite_param_destroy(
                 struct rewrite_info *info
 );
 
+/*
+ * Mapping implementations
+ */
+
+struct rewrite_mapper;
+
+typedef void * (rewrite_mapper_config)(
+       const char *fname,
+       int lineno,
+       int argc,
+       char **argv );
+
+typedef int (rewrite_mapper_apply)(
+       void *ctx,
+       const char *arg,
+       struct berval *retval );
+
+typedef int (rewrite_mapper_destroy)(
+       void *ctx );
+
+typedef struct rewrite_mapper {
+       char *rm_name;
+       rewrite_mapper_config *rm_config;
+       rewrite_mapper_apply *rm_apply;
+       rewrite_mapper_destroy *rm_destroy;
+} rewrite_mapper;
+
+/* For dynamic loading and unloading of mappers */
+LDAP_REWRITE_F (int)
+rewrite_mapper_register(
+       const rewrite_mapper *map );
+
+LDAP_REWRITE_F (int)
+rewrite_mapper_unregister(
+       const rewrite_mapper *map );
+
+LDAP_REWRITE_F (const rewrite_mapper *)
+rewrite_mapper_find(
+       const char *name );
+
 LDAP_END_DECL
 
 #endif /* REWRITE_H */