svn commit: samba r9438 - in branches/SAMBA_4_0/source/lib/ldb: . ldb_map

jelmer at samba.org jelmer at samba.org
Sat Aug 20 23:30:12 GMT 2005


Author: jelmer
Date: 2005-08-20 23:30:10 +0000 (Sat, 20 Aug 2005)
New Revision: 9438

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=9438

Log:
Add initial files for ldb_map

Added:
   branches/SAMBA_4_0/source/lib/ldb/ldb_map/
   branches/SAMBA_4_0/source/lib/ldb/ldb_map/README
   branches/SAMBA_4_0/source/lib/ldb/ldb_map/ldb_map.h


Changeset:
Added: branches/SAMBA_4_0/source/lib/ldb/ldb_map/README
===================================================================
--- branches/SAMBA_4_0/source/lib/ldb/ldb_map/README	2005-08-20 23:28:14 UTC (rev 9437)
+++ branches/SAMBA_4_0/source/lib/ldb/ldb_map/README	2005-08-20 23:30:10 UTC (rev 9438)
@@ -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

Added: branches/SAMBA_4_0/source/lib/ldb/ldb_map/ldb_map.h
===================================================================
--- branches/SAMBA_4_0/source/lib/ldb/ldb_map/ldb_map.h	2005-08-20 23:28:14 UTC (rev 9437)
+++ branches/SAMBA_4_0/source/lib/ldb/ldb_map/ldb_map.h	2005-08-20 23:30:10 UTC (rev 9438)
@@ -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);



More information about the samba-cvs mailing list