[SCM] Samba Shared Repository - branch master updated

Jelmer Vernooij jelmer at samba.org
Sun Oct 10 17:48:01 MDT 2010


The branch, master has been updated
       via  2bff55f dsdb/modules: Split up helpers a bit to prevent recursive dependencies.
       via  4280527 torture_auth: Add missing dependency on gensec_ntlmssp.
       via  ea6a3f5 wafsamba: Support setting pyembed on libraries.
       via  ffd7cee torture: Link against rpc server itself, not service module. (against which we can't link).
       via  ea8fc87 ldap_server: Add missing dependency on gensec_server_start.
       via  6c410dd kdc: Add missing dependency on samba_gensec_server.
       via  57bf052 smb_server: Split core out of service, since the service can be built as a .so against which we can't link.
       via  b0963b7 smb2: Add missing dependency on NDR_DFSBLOBS.
       via  d0c7ae5 librpc: Remove unnecessary dependency on libsamba-hostconfig.
       via  3b19993 dsdb/schema: Move some dsdb_dn functions that are schema-specific.
       via  41e55d7 ntvfs_ipc: add missing dependency on dcerpc_common.
       via  2c9ebb7 libsecurity-common: Add missing dependency on libndr.
       via  dc47e8d libcli-auth: Remove unnecessary dependency on libsamba-hostconfig.
       via  1f73f3b dsdb modules: Split ridalloc out of common helpers, because of dependency loops.
      from  7552dd8 rpc_ndr_netlogon: Add missing dependency on tevent.

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 2bff55f5deede15d09d2f685f5391e579ad36831
Author: Jelmer Vernooij <jelmer at samba.org>
Date:   Mon Oct 11 01:03:42 2010 +0200

    dsdb/modules: Split up helpers a bit to prevent recursive dependencies.
    
    Autobuild-User: Jelmer Vernooij <jelmer at samba.org>
    Autobuild-Date: Sun Oct 10 23:47:54 UTC 2010 on sn-devel-104

commit 4280527b6abb0070ad4f62338e9eea2c1ad991a7
Author: Jelmer Vernooij <jelmer at samba.org>
Date:   Mon Oct 11 00:58:28 2010 +0200

    torture_auth: Add missing dependency on gensec_ntlmssp.

commit ea6a3f5c485ebc82c6c7cfd6b2a3451a75676cfb
Author: Jelmer Vernooij <jelmer at samba.org>
Date:   Sun Oct 10 21:22:02 2010 +0200

    wafsamba: Support setting pyembed on libraries.

commit ffd7cee150527fbbfe29b5f9d30c1aec2137e392
Author: Jelmer Vernooij <jelmer at samba.org>
Date:   Mon Oct 11 00:49:13 2010 +0200

    torture: Link against rpc server itself, not service module. (against which we can't link).

commit ea8fc8727b02004b90db46d444bcefbc4c622c70
Author: Jelmer Vernooij <jelmer at samba.org>
Date:   Mon Oct 11 00:47:18 2010 +0200

    ldap_server: Add missing dependency on gensec_server_start.

commit 6c410dd6150206bf5f052bd6501f989e61a16583
Author: Jelmer Vernooij <jelmer at samba.org>
Date:   Mon Oct 11 00:46:37 2010 +0200

    kdc: Add missing dependency on samba_gensec_server.

commit 57bf052e683e6ebc99dd85e3d1a6cf62d2fb89ea
Author: Jelmer Vernooij <jelmer at samba.org>
Date:   Mon Oct 11 00:41:22 2010 +0200

    smb_server: Split core out of service, since the service can be built as a .so against which we can't link.

commit b0963b7b31fad5a057d2517b2e9f39db5efbd772
Author: Jelmer Vernooij <jelmer at samba.org>
Date:   Sun Oct 10 19:15:41 2010 +0200

    smb2: Add missing dependency on NDR_DFSBLOBS.

commit d0c7ae5cd5f4495dd7ba1de8e8cd9e09aa7f5d11
Author: Jelmer Vernooij <jelmer at samba.org>
Date:   Sun Oct 10 23:00:32 2010 +0200

    librpc: Remove unnecessary dependency on libsamba-hostconfig.

commit 3b199935615eb50ff039e89b9d3cfcebde2b4844
Author: Jelmer Vernooij <jelmer at samba.org>
Date:   Sun Oct 10 21:37:58 2010 +0200

    dsdb/schema: Move some dsdb_dn functions that are schema-specific.

commit 41e55d78944a04b0fa8b351ff4a25c78bc9499a3
Author: Jelmer Vernooij <jelmer at samba.org>
Date:   Sun Oct 10 22:57:40 2010 +0200

    ntvfs_ipc: add missing dependency on dcerpc_common.

commit 2c9ebb764657b3fea9161190cf924ff638eab9b2
Author: Jelmer Vernooij <jelmer at samba.org>
Date:   Sun Oct 10 22:56:58 2010 +0200

    libsecurity-common: Add missing dependency on libndr.

commit dc47e8dc52964447aab80fb58a42c4f33aeaef33
Author: Jelmer Vernooij <jelmer at samba.org>
Date:   Sun Oct 10 22:56:38 2010 +0200

    libcli-auth: Remove unnecessary dependency on libsamba-hostconfig.

commit 1f73f3b1ca561f8cad680459e0ef418d90b2e955
Author: Jelmer Vernooij <jelmer at samba.org>
Date:   Mon Oct 11 00:29:18 2010 +0200

    dsdb modules: Split ridalloc out of common helpers, because of dependency loops.

-----------------------------------------------------------------------

Summary of changes:
 buildtools/wafsamba/wafsamba.py                 |   12 +-
 lib/crypto/wscript_build                        |    2 +-
 libcli/auth/wscript_build                       |    4 +-
 libcli/security/wscript_build                   |    2 +-
 source4/dsdb/common/dsdb_dn.c                   |   78 ----
 source4/dsdb/samdb/ldb_modules/acl.c            |    1 +
 source4/dsdb/samdb/ldb_modules/acl_util.c       |   61 ---
 source4/dsdb/samdb/ldb_modules/descriptor.c     |    1 +
 source4/dsdb/samdb/ldb_modules/objectclass.c    |    1 +
 source4/dsdb/samdb/ldb_modules/samldb.c         |    1 +
 source4/dsdb/samdb/ldb_modules/schema.c         |  120 ++++++
 source4/dsdb/samdb/ldb_modules/subtree_delete.c |    1 +
 source4/dsdb/samdb/ldb_modules/util.c           |   27 --
 source4/dsdb/samdb/ldb_modules/wscript_build    |   27 +-
 source4/dsdb/schema/dsdb_dn.c                   |  102 +++++
 source4/dsdb/schema/schema.h                    |    1 +
 source4/dsdb/wscript_build                      |    5 +-
 source4/kdc/wscript_build                       |    2 +-
 source4/ldap_server/wscript_build               |    2 +-
 source4/librpc/wscript_build                    |    8 +-
 source4/ntvfs/wscript_build                     |    2 +-
 source4/rpc_server/dcerpc_server.c              |  450 +++++++++++++++++++++++
 source4/rpc_server/dcerpc_server.h              |    5 +
 source4/rpc_server/service_rpc.c                |  440 ----------------------
 source4/rpc_server/wscript_build                |   10 +-
 source4/smb_server/service_smb.c                |   81 ++++
 source4/smb_server/smb2/wscript_build           |    2 +-
 source4/smb_server/smb_server.c                 |   44 ---
 source4/smb_server/wscript_build                |    4 +-
 source4/smbd/service_stream.h                   |    2 +
 source4/torture/wscript_build                   |    7 +-
 31 files changed, 819 insertions(+), 686 deletions(-)
 create mode 100644 source4/dsdb/samdb/ldb_modules/schema.c
 create mode 100644 source4/dsdb/schema/dsdb_dn.c
 create mode 100644 source4/smb_server/service_smb.c


Changeset truncated at 500 lines:

diff --git a/buildtools/wafsamba/wafsamba.py b/buildtools/wafsamba/wafsamba.py
index 02bb966..414fdc6 100644
--- a/buildtools/wafsamba/wafsamba.py
+++ b/buildtools/wafsamba/wafsamba.py
@@ -322,7 +322,9 @@ def SAMBA_MODULE(bld, modname, source,
                  internal_module=True,
                  local_include=True,
                  vars=None,
-                 enabled=True):
+                 enabled=True,
+                 pyembed=True,
+                 ):
     '''define a Samba module.'''
 
     source = bld.EXPAND_VARIABLES(source, vars=vars)
@@ -378,7 +380,8 @@ def SAMBA_MODULE(bld, modname, source,
                           local_include=local_include,
                           vars=vars,
                           link_name=build_link_name,
-                          install_path="${MODULESDIR}/%s" % subsystem
+                          install_path="${MODULESDIR}/%s" % subsystem,
+                          pyembed=pyembed,
                           )
 
 Build.BuildContext.SAMBA_MODULE = SAMBA_MODULE
@@ -406,7 +409,8 @@ def SAMBA_SUBSYSTEM(bld, modname, source,
                     use_global_deps=True,
                     vars=None,
                     hide_symbols=False,
-                    pyembed=False):
+                    pyembed=False,
+                    pyext=False):
     '''define a Samba subsystem'''
 
     if not enabled:
@@ -431,6 +435,8 @@ def SAMBA_SUBSYSTEM(bld, modname, source,
     features = 'cc'
     if pyembed:
         features += ' pyembed'
+    if pyext:
+        features += ' pyext'
 
     t = bld(
         features       = features,
diff --git a/lib/crypto/wscript_build b/lib/crypto/wscript_build
index 1b6a03d..7bc4eb7 100644
--- a/lib/crypto/wscript_build
+++ b/lib/crypto/wscript_build
@@ -2,7 +2,7 @@
 
 bld.SAMBA_SUBSYSTEM('LIBCRYPTO',
 	source='crc32.c md5.c hmacmd5.c md4.c arcfour.c sha256.c hmacsha256.c aes.c rijndael-alg-fst.c',
-        deps='talloc'
+	deps='talloc'
 	)
 
 
diff --git a/libcli/auth/wscript_build b/libcli/auth/wscript_build
index 3608231..2bfb92a 100644
--- a/libcli/auth/wscript_build
+++ b/libcli/auth/wscript_build
@@ -8,13 +8,13 @@ bld.SAMBA_SUBSYSTEM('ntlm_check',
 
 bld.SAMBA_SUBSYSTEM('MSRPC_PARSE',
 	source='msrpc_parse.c',
-        deps='talloc'
+	deps='talloc'
 	)
 
 
 bld.SAMBA_SUBSYSTEM('LIBCLI_AUTH',
 	source='credentials.c session.c smbencrypt.c smbdes.c',
-	public_deps='MSRPC_PARSE LIBSAMBA-HOSTCONFIG',
+	public_deps='MSRPC_PARSE',
 	public_headers='credentials.h:domain_credentials.h'
 	)
 
diff --git a/libcli/security/wscript_build b/libcli/security/wscript_build
index 49682e2..8efb751 100644
--- a/libcli/security/wscript_build
+++ b/libcli/security/wscript_build
@@ -3,6 +3,6 @@
 
 bld.SAMBA_SUBSYSTEM('LIBSECURITY_COMMON',
 	source='dom_sid.c display_sec.c secace.c secacl.c security_descriptor.c sddl.c privileges.c',
-	deps='talloc'
+	deps='talloc LIBNDR'
 	)
 
diff --git a/source4/dsdb/common/dsdb_dn.c b/source4/dsdb/common/dsdb_dn.c
index 85ba9b7..3e0f465 100644
--- a/source4/dsdb/common/dsdb_dn.c
+++ b/source4/dsdb/common/dsdb_dn.c
@@ -328,84 +328,6 @@ int dsdb_dn_string_comparison(struct ldb_context *ldb, void *mem_ctx,
 	return ldb_any_comparison(ldb, mem_ctx, dsdb_dn_string_canonicalise, v1, v2);
 }
 
-
-/*
-   convert a dsdb_dn to a linked attribute data blob
-*/
-WERROR dsdb_dn_la_to_blob(struct ldb_context *sam_ctx,
-			  const struct dsdb_attribute *schema_attrib,
-			  const struct dsdb_schema *schema,
-			  TALLOC_CTX *mem_ctx,
-			  struct dsdb_dn *dsdb_dn, DATA_BLOB **blob)
-{
-	struct ldb_val v;
-	WERROR werr;
-	struct ldb_message_element val_el;
-	struct drsuapi_DsReplicaAttribute drs;
-	struct dsdb_syntax_ctx syntax_ctx;
-
-	/* use default syntax conversion context */
-	dsdb_syntax_ctx_init(&syntax_ctx, sam_ctx, schema);
-
-	/* we need a message_element with just one value in it */
-	v = data_blob_string_const(dsdb_dn_get_extended_linearized(mem_ctx, dsdb_dn, 1));
-
-	val_el.name = schema_attrib->lDAPDisplayName;
-	val_el.values = &v;
-	val_el.num_values = 1;
-
-	werr = schema_attrib->syntax->ldb_to_drsuapi(&syntax_ctx, schema_attrib, &val_el, mem_ctx, &drs);
-	W_ERROR_NOT_OK_RETURN(werr);
-
-	if (drs.value_ctr.num_values != 1) {
-		DEBUG(1,(__location__ ": Failed to build DRS blob for linked attribute %s\n",
-			 schema_attrib->lDAPDisplayName));
-		return WERR_DS_DRA_INTERNAL_ERROR;
-	}
-
-	*blob = drs.value_ctr.values[0].blob;
-	return WERR_OK;
-}
-
-/*
-  convert a data blob to a dsdb_dn
- */
-WERROR dsdb_dn_la_from_blob(struct ldb_context *sam_ctx,
-			    const struct dsdb_attribute *schema_attrib,
-			    const struct dsdb_schema *schema,
-			    TALLOC_CTX *mem_ctx,
-			    DATA_BLOB *blob,
-			    struct dsdb_dn **dsdb_dn)
-{
-	WERROR werr;
-	struct ldb_message_element new_el;
-	struct drsuapi_DsReplicaAttribute drs;
-	struct drsuapi_DsAttributeValue val;
-	struct dsdb_syntax_ctx syntax_ctx;
-
-	/* use default syntax conversion context */
-	dsdb_syntax_ctx_init(&syntax_ctx, sam_ctx, schema);
-
-	drs.value_ctr.num_values = 1;
-	drs.value_ctr.values = &val;
-	val.blob = blob;
-
-	werr = schema_attrib->syntax->drsuapi_to_ldb(&syntax_ctx, schema_attrib, &drs, mem_ctx, &new_el);
-	W_ERROR_NOT_OK_RETURN(werr);
-
-	if (new_el.num_values != 1) {
-		return WERR_INTERNAL_ERROR;
-	}
-
-	*dsdb_dn = dsdb_dn_parse(mem_ctx, sam_ctx, &new_el.values[0], schema_attrib->syntax->ldap_oid);
-	if (!*dsdb_dn) {
-		return WERR_INTERNAL_ERROR;
-	}
-
-	return WERR_OK;
-}
-
-
 /*
   format a drsuapi_DsReplicaObjectIdentifier naming context as a string
  */
diff --git a/source4/dsdb/samdb/ldb_modules/acl.c b/source4/dsdb/samdb/ldb_modules/acl.c
index 149c6b1..660b4df 100644
--- a/source4/dsdb/samdb/ldb_modules/acl.c
+++ b/source4/dsdb/samdb/ldb_modules/acl.c
@@ -39,6 +39,7 @@
 #include "librpc/gen_ndr/ndr_security.h"
 #include "param/param.h"
 #include "dsdb/samdb/ldb_modules/util.h"
+#include "dsdb/samdb/ldb_modules/schema.h"
 #include "lib/util/tsort.h"
 
 struct extended_access_check_attribute {
diff --git a/source4/dsdb/samdb/ldb_modules/acl_util.c b/source4/dsdb/samdb/ldb_modules/acl_util.c
index 6c41602..1a84704 100644
--- a/source4/dsdb/samdb/ldb_modules/acl_util.c
+++ b/source4/dsdb/samdb/ldb_modules/acl_util.c
@@ -178,67 +178,6 @@ fail:
 	return ldb_operr(ldb_module_get_ctx(module));
 }
 
-int acl_check_access_on_class(struct ldb_module *module,
-			      const struct dsdb_schema *schema,
-			      TALLOC_CTX *mem_ctx,
-			      struct security_descriptor *sd,
-			      struct dom_sid *rp_sid,
-			      uint32_t access,
-			      const char *class_name)
-{
-	int ret;
-	NTSTATUS status;
-	uint32_t access_granted;
-	struct object_tree *root = NULL;
-	struct object_tree *new_node = NULL;
-	const struct GUID *guid;
-	TALLOC_CTX *tmp_ctx = talloc_new(mem_ctx);
-	struct security_token *token = acl_user_token(module);
-	if (class_name) {
-		guid = class_schemaid_guid_by_lDAPDisplayName(schema, class_name);
-		if (!guid) {
-			DEBUG(10, ("acl_search: cannot find class %s\n",
-				   class_name));
-			goto fail;
-		}
-		if (!insert_in_object_tree(tmp_ctx,
-					   guid, access,
-					   &root, &new_node)) {
-			DEBUG(10, ("acl_search: cannot add to object tree guid\n"));
-			goto fail;
-		}
-	}
-	status = sec_access_check_ds(sd, token,
-				     access,
-				     &access_granted,
-				     root,
-				     rp_sid);
-	if (!NT_STATUS_IS_OK(status)) {
-		ret = LDB_ERR_INSUFFICIENT_ACCESS_RIGHTS;
-	}
-	else {
-		ret = LDB_SUCCESS;
-	}
-	return ret;
-fail:
-	return ldb_operr(ldb_module_get_ctx(module));
-}
-
-const struct GUID *get_oc_guid_from_message(struct ldb_module *module,
-						   const struct dsdb_schema *schema,
-						   struct ldb_message *msg)
-{
-	struct ldb_message_element *oc_el;
-
-	oc_el = ldb_msg_find_element(msg, "objectClass");
-	if (!oc_el) {
-		return NULL;
-	}
-
-	return class_schemaid_guid_by_lDAPDisplayName(schema,
-						      (char *)oc_el->values[oc_el->num_values-1].data);
-}
-
 
 /* checks for validated writes */
 int acl_check_extended_right(TALLOC_CTX *mem_ctx,
diff --git a/source4/dsdb/samdb/ldb_modules/descriptor.c b/source4/dsdb/samdb/ldb_modules/descriptor.c
index 959a7d8..c94d6bd 100644
--- a/source4/dsdb/samdb/ldb_modules/descriptor.c
+++ b/source4/dsdb/samdb/ldb_modules/descriptor.c
@@ -39,6 +39,7 @@
 #include "librpc/ndr/libndr.h"
 #include "librpc/gen_ndr/ndr_security.h"
 #include "libcli/security/security.h"
+#include "dsdb/samdb/ldb_modules/schema.h"
 #include "auth/auth.h"
 #include "param/param.h"
 #include "util.h"
diff --git a/source4/dsdb/samdb/ldb_modules/objectclass.c b/source4/dsdb/samdb/ldb_modules/objectclass.c
index fa95626..940290b 100644
--- a/source4/dsdb/samdb/ldb_modules/objectclass.c
+++ b/source4/dsdb/samdb/ldb_modules/objectclass.c
@@ -45,6 +45,7 @@
 #include "auth/auth.h"
 #include "param/param.h"
 #include "../libds/common/flags.h"
+#include "dsdb/samdb/ldb_modules/schema.h"
 #include "util.h"
 
 struct oc_context {
diff --git a/source4/dsdb/samdb/ldb_modules/samldb.c b/source4/dsdb/samdb/ldb_modules/samldb.c
index c67f2d0..bf804fd 100644
--- a/source4/dsdb/samdb/ldb_modules/samldb.c
+++ b/source4/dsdb/samdb/ldb_modules/samldb.c
@@ -34,6 +34,7 @@
 #include "ldb_module.h"
 #include "dsdb/samdb/samdb.h"
 #include "dsdb/samdb/ldb_modules/util.h"
+#include "dsdb/samdb/ldb_modules/ridalloc.h"
 #include "libcli/security/security.h"
 #include "librpc/gen_ndr/ndr_security.h"
 #include "../lib/util/util_ldb.h"
diff --git a/source4/dsdb/samdb/ldb_modules/schema.c b/source4/dsdb/samdb/ldb_modules/schema.c
new file mode 100644
index 0000000..77bf9dc
--- /dev/null
+++ b/source4/dsdb/samdb/ldb_modules/schema.c
@@ -0,0 +1,120 @@
+/* 
+   Unix SMB/CIFS implementation.
+   Samba utility functions
+
+   Copyright (C) Andrew Tridgell 2009
+   Copyright (C) Andrew Bartlett <abartlet at samba.org> 2009
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "includes.h"
+#include "ldb.h"
+#include "ldb_module.h"
+#include "librpc/ndr/libndr.h"
+#include "dsdb/samdb/ldb_modules/util.h"
+#include "dsdb/samdb/samdb.h"
+#include "util.h"
+#include "libcli/security/security.h"
+#include "lib/ldb/include/ldb_private.h"
+
+const struct dsdb_class * get_last_structural_class(const struct dsdb_schema *schema,const struct ldb_message_element *element)
+{
+	const struct dsdb_class *last_class = NULL;
+	unsigned int i;
+
+	for (i = 0; i < element->num_values; i++){
+		const struct dsdb_class *tmp_class = dsdb_class_by_lDAPDisplayName_ldb_val(schema, &element->values[i]);
+
+		if(tmp_class == NULL) {
+			continue;
+		}
+
+		if(tmp_class->objectClassCategory > 1) {
+			continue;
+		}
+
+		if (!last_class) {
+			last_class = tmp_class;
+		} else {
+			if (tmp_class->subClass_order > last_class->subClass_order)
+				last_class = tmp_class;
+		}
+	}
+
+	return last_class;
+}
+
+int acl_check_access_on_class(struct ldb_module *module,
+			      const struct dsdb_schema *schema,
+			      TALLOC_CTX *mem_ctx,
+			      struct security_descriptor *sd,
+			      struct dom_sid *rp_sid,
+			      uint32_t access,
+			      const char *class_name)
+{
+	int ret;
+	NTSTATUS status;
+	uint32_t access_granted;
+	struct object_tree *root = NULL;
+	struct object_tree *new_node = NULL;
+	const struct GUID *guid;
+	TALLOC_CTX *tmp_ctx = talloc_new(mem_ctx);
+	struct security_token *token = acl_user_token(module);
+	if (class_name) {
+		guid = class_schemaid_guid_by_lDAPDisplayName(schema, class_name);
+		if (!guid) {
+			DEBUG(10, ("acl_search: cannot find class %s\n",
+				   class_name));
+			goto fail;
+		}
+		if (!insert_in_object_tree(tmp_ctx,
+					   guid, access,
+					   &root, &new_node)) {
+			DEBUG(10, ("acl_search: cannot add to object tree guid\n"));
+			goto fail;
+		}
+	}
+	status = sec_access_check_ds(sd, token,
+				     access,
+				     &access_granted,
+				     root,
+				     rp_sid);
+	if (!NT_STATUS_IS_OK(status)) {
+		ret = LDB_ERR_INSUFFICIENT_ACCESS_RIGHTS;
+	}
+	else {
+		ret = LDB_SUCCESS;
+	}
+	return ret;
+fail:
+	return ldb_operr(ldb_module_get_ctx(module));
+}
+
+const struct GUID *get_oc_guid_from_message(struct ldb_module *module,
+						   const struct dsdb_schema *schema,
+						   struct ldb_message *msg)
+{
+	struct ldb_message_element *oc_el;
+
+	oc_el = ldb_msg_find_element(msg, "objectClass");
+	if (!oc_el) {
+		return NULL;
+	}
+
+	return class_schemaid_guid_by_lDAPDisplayName(schema,
+						      (char *)oc_el->values[oc_el->num_values-1].data);
+}
+
+
diff --git a/source4/dsdb/samdb/ldb_modules/subtree_delete.c b/source4/dsdb/samdb/ldb_modules/subtree_delete.c
index 3817d22..91d22c9 100644
--- a/source4/dsdb/samdb/ldb_modules/subtree_delete.c
+++ b/source4/dsdb/samdb/ldb_modules/subtree_delete.c
@@ -35,6 +35,7 @@
 #include <ldb.h>
 #include <ldb_module.h>
 #include "dsdb/samdb/ldb_modules/util.h"
+#include "dsdb/common/util.h"
 
 
 static int subtree_delete(struct ldb_module *module, struct ldb_request *req)
diff --git a/source4/dsdb/samdb/ldb_modules/util.c b/source4/dsdb/samdb/ldb_modules/util.c
index 569c967..d7bf807 100644
--- a/source4/dsdb/samdb/ldb_modules/util.c
+++ b/source4/dsdb/samdb/ldb_modules/util.c
@@ -484,33 +484,6 @@ int dsdb_module_del(struct ldb_module *module,
 	return ret;
 }
 
-const struct dsdb_class * get_last_structural_class(const struct dsdb_schema *schema,const struct ldb_message_element *element)
-{
-	const struct dsdb_class *last_class = NULL;
-	unsigned int i;
-
-	for (i = 0; i < element->num_values; i++){
-		const struct dsdb_class *tmp_class = dsdb_class_by_lDAPDisplayName_ldb_val(schema, &element->values[i]);
-
-		if(tmp_class == NULL) {
-			continue;
-		}
-
-		if(tmp_class->objectClassCategory > 1) {
-			continue;
-		}
-
-		if (!last_class) {
-			last_class = tmp_class;
-		} else {
-			if (tmp_class->subClass_order > last_class->subClass_order)
-				last_class = tmp_class;
-		}
-	}
-
-	return last_class;
-}
-
 /*
   check if a single valued link has multiple non-deleted values
 
diff --git a/source4/dsdb/samdb/ldb_modules/wscript_build b/source4/dsdb/samdb/ldb_modules/wscript_build
index b59fce3..03b138b 100644
--- a/source4/dsdb/samdb/ldb_modules/wscript_build
+++ b/source4/dsdb/samdb/ldb_modules/wscript_build
@@ -1,11 +1,22 @@
 #!/usr/bin/env python
 
 bld.SAMBA_SUBSYSTEM('DSDB_MODULE_HELPERS',
-	source='util.c ridalloc.c acl_util.c',
+	source='util.c acl_util.c',
 	autoproto='util_proto.h',
-	deps='ldb LIBNDR SAMDB_SCHEMA MESSAGING'
+	deps='ldb LIBNDR SAMDB_COMMON'
 	)
 
+bld.SAMBA_SUBSYSTEM('DSDB_MODULE_HELPER_RIDALLOC',
+	source='ridalloc.c',
+	autoproto='ridalloc.h',
+	deps='MESSAGING',
+	)
+
+bld.SAMBA_SUBSYSTEM('DSDB_MODULE_HELPER_SCHEMA',
+	source='schema.c',
+	autoproto='schema.h',
+	deps='SAMDB_SCHEMA'
+	)


-- 
Samba Shared Repository


More information about the samba-cvs mailing list