r9438: Add initial files for ldb_map
authorJelmer Vernooij <jelmer@samba.org>
Sat, 20 Aug 2005 23:30:10 +0000 (23:30 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 18:34:14 +0000 (13:34 -0500)
(This used to be commit a66eeadecdcc5f67dd34c4ae82f5ae9191163499)

source4/lib/ldb/ldb_map/README [new file with mode: 0644]
source4/lib/ldb/ldb_map/ldb_map.h [new file with mode: 0644]

diff --git a/source4/lib/ldb/ldb_map/README b/source4/lib/ldb/ldb_map/README
new file mode 100644 (file)
index 0000000..3c7e30a
--- /dev/null
@@ -0,0 +1,29 @@
+This directory contains a skeleton backend for ldb backends that allow 
+using an LDAP server while mapping the attributes in that schema to 
+another schema. This backend will never be used itself but instead have 
+other backends based on it (e.g. ldb_samba3 for a Samba3-LDAP-to-samdb 
+backend)
+
+Each backend that uses this skeleton has to specify an array of 
+struct objectclass_mapping's (see ldb_map.h).
+
+If no mappings are defined for an objectclass, it will be kept as is.
+
+Special mapping routine for dn's (calls rdn mapping routine)
+Special mapping routine for rdn's
+
+Keep cache of mapped dn's so we don't have to traverse the tree each time
+
+search
+       Simply uses search_bytree
+       
+search_bytree
+       Map all attributes in parse_tree        
+
+add
+modify
+       Map ldb_message to LDAPMod
+       
+rename
+delete
+       Simply map dn
diff --git a/source4/lib/ldb/ldb_map/ldb_map.h b/source4/lib/ldb/ldb_map/ldb_map.h
new file mode 100644 (file)
index 0000000..6d6e478
--- /dev/null
@@ -0,0 +1,29 @@
+struct objectclass_mapping {
+       char *local_name;
+       char *remote_name;
+
+       char *key; /* Name of attribute used in rdn */
+
+       /* For mapping attributes used in searches */
+       struct local_attribute_mapping {
+               char *local_name;
+
+               /* Attributes to request from the server for this attribute, 
+                * needed by generate */
+               char *required_attributes[]; 
+
+               /* If not set, the value for the first element of 
+                * required_attributes will simply be used here */
+               struct ldb_message_element *(*generate) (LDAPMessage *msg); 
+       } *local_attribute_mappings;
+
+       /* Generate LDAPMod for adds and modifies */
+       LDAPMod *(*generate_mod)(struct ldb_message *);
+}
+
+struct ldb_map_backend {
+       struct objectclass_mapping *objectclass_mappings;
+};
+
+const char *ldb_map_dn(const char *old);
+const char *ldb_map_rdn(const char *old);