svn commit: samba r17309 - in branches/SOC/mkhl/ldb-map/modules: .

mkhl at samba.org mkhl at samba.org
Sat Jul 29 14:01:35 GMT 2006


Author: mkhl
Date: 2006-07-29 14:01:34 +0000 (Sat, 29 Jul 2006)
New Revision: 17309

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

Log:
Get rid of the macro changing a DNs base, replace it with functions.
Provide a function to remap and rebase a remote DN.

Martin
Modified:
   branches/SOC/mkhl/ldb-map/modules/ldb_map.c


Changeset:
Modified: branches/SOC/mkhl/ldb-map/modules/ldb_map.c
===================================================================
--- branches/SOC/mkhl/ldb-map/modules/ldb_map.c	2006-07-29 12:23:26 UTC (rev 17308)
+++ branches/SOC/mkhl/ldb-map/modules/ldb_map.c	2006-07-29 14:01:34 UTC (rev 17309)
@@ -229,8 +229,28 @@
         return new;
 }
 
-#define MAP_DN_REBASE(dn) dn = ldb_dn_rebase(request, dn, data->local_base_dn, data->remote_base_dn)
+/* copy DN with the baseDN of the local partition */
+static
+struct ldb_dn *
+ldb_dn_rebase_local(void *mem_ctx,
+		    const struct ldb_map_context *data,
+		    const struct ldb_dn *dn)
+{
+	return ldb_dn_rebase(mem_ctx, dn,
+			     data->remote_base_dn, data->local_base_dn);
+}
 
+/* copy DN with the baseDN of the remote partition */
+static
+struct ldb_dn *
+ldb_dn_rebase_remote(void *mem_ctx,
+		     const struct ldb_map_context *data,
+		     const struct ldb_dn *dn)
+{
+	return ldb_dn_rebase(mem_ctx, dn,
+			     data->local_base_dn, data->remote_base_dn);
+}
+
 /* run request in the remote partition */
 static
 int
@@ -244,33 +264,39 @@
 	case LDB_SEARCH:
 		/* make sure the request targets the remote partition */
 		if (request->op.search.base) {
-			MAP_DN_REBASE(request->op.search.base);
+			request->op.search.base
+				= ldb_dn_rebase_remote(request, data,
+						       request->op.search.base);
 		} else {
 			request->op.search.base = data->remote_base_dn;
-			/* TODO: reference/steal? */
 			/* TODO: adjust scope? */
 		}
                 break;
 
 	case LDB_ADD:
                 msg = ldb_msg_copy_shallow(request, request->op.add.message);
-                MAP_DN_REBASE(msg->dn);
+                msg->dn = ldb_dn_rebase_remote(msg, data, msg->dn);
                 request->op.add.message = msg;
                 break;
 
 	case LDB_MODIFY:
                 msg = ldb_msg_copy_shallow(request, request->op.mod.message);
-                MAP_DN_REBASE(msg->dn);
+                msg->dn = ldb_dn_rebase_remote(msg, data, msg->dn);
                 request->op.mod.message = msg;
                 break;
 
 	case LDB_DELETE:
-                MAP_DN_REBASE(request->op.del.dn);
+		request->op.del.dn = ldb_dn_rebase_remote(request, data,
+							  request->op.del.dn);
                 break;
 
 	case LDB_RENAME:
-                MAP_DN_REBASE(request->op.rename.olddn);
-                MAP_DN_REBASE(request->op.rename.newdn);
+		request->op.rename.olddn
+			= ldb_dn_rebase_remote(request, data,
+					       request->op.rename.olddn);
+		request->op.rename.newdn
+			= ldb_dn_rebase_remote(request, data,
+					       request->op.rename.newdn);
                 break;
 
         default:
@@ -962,19 +988,6 @@
 /* TODO: these functions move a DN from the remote into the local partition.
    The first one keeps the remote schema, the second one uses the local one.
    Neither should be necessary with GUIDs. */
-/* rebased DN -> DN */
-static
-struct ldb_dn *
-map_unrebase_dn(struct ldb_module *module,
-		      void *mem_ctx,
-		      const struct ldb_dn *dn)
-{
-	const struct ldb_map_context *data = map_get_context(module);
-
-	return ldb_dn_rebase(mem_ctx, dn,
-			     data->remote_base_dn, data->local_base_dn);
-}
-
 /* remote rebased DN -> local DN */
 static
 struct ldb_dn *
@@ -982,9 +995,10 @@
 		       void *mem_ctx,
 		       const struct ldb_dn *dn)
 {
+	const struct ldb_map_context *data = map_get_context(module);
 	struct ldb_dn *dn1, *dn2;
 
-	dn1 = map_unrebase_dn(module, mem_ctx, dn);
+	dn1 = ldb_dn_rebase_local(mem_ctx, data, dn);
 	dn2 = map_remote_dn(module, mem_ctx, dn1);
 
 	talloc_free(dn1);



More information about the samba-cvs mailing list