[SCM] Samba Shared Repository - branch master updated

Kamen Mazdrashki kamenim at samba.org
Wed Aug 18 20:09:25 MDT 2010


The branch, master has been updated
       via  89899f5... s4-drs: ATTIDs for deleted attributes should be based on msDs-IntId value if it exists
       via  e050274... s4-test: make better error message for ATTID checks
       via  c3cf388... s4-test: Change attribute syntax and value for readability
       via  a46ead0... s4-test: Enable drs.rpc.msdsintid test case - it should be passing now
       via  6950724... s4-dsdb: No need for dsdb_syntax_one_DN_drsuapi_to_ldb() to be public
       via  6a51afc... s4-drs: GetNCChanges() to return correct (in AD-way) ATTIDs
       via  35d886d... s4-dsdb-syntax: ATTID should be msDs-IntId value for the attributeSchema object
       via  fffc98f... s4: fix few comment typos
       via  d01804d... s4-schema_syntax.c: Fix white spaces and alignment
       via  c5ec1f3... s4-dsdb: Use dsdb_syntax_ctx in *_drsuapi_to_ldb functions
       via  b5af7b9... s4-dsdb: Use dsdb_syntax_ctx in *_ldb_to_drsuapi functions
       via  ca80918... s4-dsdb: Use dsdb_syntax_ctx in *_validate_ldb functions
       via  b7d1586... s4-dsdb: Add context structure for dsdb_syntax conversion functions
       via  20a8481... s4-test-dssync: remove unused variable
      from  da25541... Fix bug 7626 - Typo in configure samba_cv__CC_NEGATIVE_ENUM_VALUES two underscores.

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


- Log -----------------------------------------------------------------
commit 89899f55dc1fb137a0adfd734c87b65039f598a4
Author: Kamen Mazdrashki <kamenim at samba.org>
Date:   Thu Aug 19 03:17:36 2010 +0300

    s4-drs: ATTIDs for deleted attributes should be based on msDs-IntId value if it exists

commit e05027401f4733e43b62148fa5c59559f49b4c1b
Author: Kamen Mazdrashki <kamenim at samba.org>
Date:   Thu Aug 19 03:08:29 2010 +0300

    s4-test: make better error message for ATTID checks

commit c3cf388eaf322b7646aa464774baa324be81a56d
Author: Kamen Mazdrashki <kamenim at samba.org>
Date:   Thu Aug 19 02:47:14 2010 +0300

    s4-test: Change attribute syntax and value for readability
    
    When it comes to read logs and dumping data received
    Octet String syntax comes in handy

commit a46ead0724f54a6034913fe5d1da077140d58133
Author: Kamen Mazdrashki <kamenim at samba.org>
Date:   Wed Aug 18 13:21:10 2010 +0300

    s4-test: Enable drs.rpc.msdsintid test case - it should be passing now

commit 695072478d5d5bd476524228fc09cde200abcf6b
Author: Kamen Mazdrashki <kamenim at samba.org>
Date:   Wed Aug 18 03:19:45 2010 +0300

    s4-dsdb: No need for dsdb_syntax_one_DN_drsuapi_to_ldb() to be public
    
    It is intended to be used in schema_syntax.c module

commit 6a51afcfdbcbce7813fb59c0655e4178268ca70e
Author: Kamen Mazdrashki <kamenim at samba.org>
Date:   Wed Aug 18 03:52:48 2010 +0300

    s4-drs: GetNCChanges() to return correct (in AD-way) ATTIDs
    
    Depending on which NC is being replicated, GetNCChanges() returns
    either ATTID based on local prefixMap or msDs-IntId value of
    the attributeSchema class for the attribute being replicated.
    
    If set, msDs-IntId value is always returned when replicating
    object form NC other than Schema NC.
    Objects in Schema NC replica always use prefixMap based ATTIDs.

commit 35d886db176123b3ef3a0436463f59edcaed1322
Author: Kamen Mazdrashki <kamenim at samba.org>
Date:   Wed Aug 18 03:06:53 2010 +0300

    s4-dsdb-syntax: ATTID should be msDs-IntId value for the attributeSchema object
    
    in case object replicated is not in Schema NC and attributeSchema
    object has msDs-IntId attribute value set

commit fffc98f33e333b8711da053e5cd5ddcc601cd275
Author: Kamen Mazdrashki <kamenim at samba.org>
Date:   Tue Aug 17 04:48:24 2010 +0300

    s4: fix few comment typos

commit d01804dda9d1e1793f3e1d2f863c4444ed7e900c
Author: Kamen Mazdrashki <kamenim at samba.org>
Date:   Tue Aug 17 04:44:52 2010 +0300

    s4-schema_syntax.c: Fix white spaces and alignment

commit c5ec1f3d9246f5737279340bf1755baf542d982b
Author: Kamen Mazdrashki <kamenim at samba.org>
Date:   Tue Aug 17 04:20:46 2010 +0300

    s4-dsdb: Use dsdb_syntax_ctx in *_drsuapi_to_ldb functions

commit b5af7b9a1eb70db949c83fe6b55e402b82a2a9a4
Author: Kamen Mazdrashki <kamenim at samba.org>
Date:   Tue Aug 17 04:12:54 2010 +0300

    s4-dsdb: Use dsdb_syntax_ctx in *_ldb_to_drsuapi functions

commit ca809186137e259060032ef61d9d3e93cddad298
Author: Kamen Mazdrashki <kamenim at samba.org>
Date:   Tue Aug 17 03:58:26 2010 +0300

    s4-dsdb: Use dsdb_syntax_ctx in *_validate_ldb functions

commit b7d1586ccd05a78a4fae512c54fa39dda408e08b
Author: Kamen Mazdrashki <kamenim at samba.org>
Date:   Tue Aug 17 03:21:46 2010 +0300

    s4-dsdb: Add context structure for dsdb_syntax conversion functions
    
    This structure is intended to hold context-dependent data.
    
    Syntax-conversion and object-conversion functions need
    that data to convert objects and attributes from drs-to-ldb
    and ldb-to-drs correctly.
    
    For instance: ATTID value depends on whether we are converting
    object from partition different that Schema partition.

commit 20a8481d3ff149e3cece6f2d8d2cf6ae8462d11a
Author: Kamen Mazdrashki <kamenim at samba.org>
Date:   Mon Aug 16 18:57:02 2010 +0300

    s4-test-dssync: remove unused variable

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

Summary of changes:
 source4/dsdb/common/dsdb_dn.c                      |   12 +-
 source4/dsdb/samdb/ldb_modules/objectclass_attrs.c |   10 +-
 source4/dsdb/schema/schema.h                       |   18 +-
 source4/dsdb/schema/schema_syntax.c                |  456 ++++++++++----------
 source4/dsdb/schema/tests/schema_syntax.c          |    8 +-
 source4/rpc_server/drsuapi/getncchanges.c          |   22 +-
 source4/selftest/knownfail                         |    1 -
 source4/torture/drs/rpc/dssync.c                   |    1 -
 source4/torture/drs/rpc/msds_intid.c               |   30 +-
 9 files changed, 303 insertions(+), 255 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source4/dsdb/common/dsdb_dn.c b/source4/dsdb/common/dsdb_dn.c
index 9023b03..cb9cb29 100644
--- a/source4/dsdb/common/dsdb_dn.c
+++ b/source4/dsdb/common/dsdb_dn.c
@@ -340,6 +340,10 @@ WERROR dsdb_dn_la_to_blob(struct ldb_context *sam_ctx,
 	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));
@@ -348,7 +352,7 @@ WERROR dsdb_dn_la_to_blob(struct ldb_context *sam_ctx,
 	val_el.values = &v;
 	val_el.num_values = 1;
 
-	werr = schema_attrib->syntax->ldb_to_drsuapi(sam_ctx, schema, schema_attrib, &val_el, mem_ctx, &drs);
+	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) {
@@ -375,12 +379,16 @@ WERROR dsdb_dn_la_from_blob(struct ldb_context *sam_ctx,
 	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(sam_ctx, schema, schema_attrib, &drs, mem_ctx, &new_el);
+	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) {
diff --git a/source4/dsdb/samdb/ldb_modules/objectclass_attrs.c b/source4/dsdb/samdb/ldb_modules/objectclass_attrs.c
index 070d858..555295a 100644
--- a/source4/dsdb/samdb/ldb_modules/objectclass_attrs.c
+++ b/source4/dsdb/samdb/ldb_modules/objectclass_attrs.c
@@ -79,6 +79,7 @@ static int attr_handler(struct oc_context *ac)
 	unsigned int i;
 	int ret;
 	WERROR werr;
+	struct dsdb_syntax_ctx syntax_ctx;
 
 	ldb = ldb_module_get_ctx(ac->module);
 
@@ -91,6 +92,9 @@ static int attr_handler(struct oc_context *ac)
 		return ldb_oom(ldb);
 	}
 
+	/* initialize syntax checking context */
+	dsdb_syntax_ctx_init(&syntax_ctx, ldb, ac->schema);
+
 	/* Check if attributes exist in the schema, if the values match,
 	 * if they're not operational and fix the names to the match the schema
 	 * case */
@@ -114,7 +118,7 @@ static int attr_handler(struct oc_context *ac)
 		}
 		
 		if (!(msg->elements[i].flags & LDB_FLAG_INTERNAL_DISABLE_VALIDATION)) {
-			werr = attr->syntax->validate_ldb(ldb, ac->schema, attr,
+			werr = attr->syntax->validate_ldb(&syntax_ctx, attr,
 							  &msg->elements[i]);
 			if (!W_ERROR_IS_OK(werr)) {
 				ldb_asprintf_errstring(ldb, "objectclass_attrs: attribute '%s' on entry '%s' contains at least one invalid value!",
@@ -135,7 +139,7 @@ static int attr_handler(struct oc_context *ac)
 			}
 		}
 
-		/* subsitute the attribute name to match in case */
+		/* Substitute the attribute name to match in case */
 		msg->elements[i].name = attr->lDAPDisplayName;
 	}
 
@@ -177,7 +181,7 @@ static int attr_handler2(struct oc_context *ac)
 		return ldb_operr(ldb);
 	}
 
-	/* We rely here on the preceeding "objectclass" LDB module which did
+	/* We rely here on the preceding "objectclass" LDB module which did
 	 * already fix up the objectclass list (inheritance, order...). */
 	oc_element = ldb_msg_find_element(ac->search_res->message,
 					  "objectClass");
diff --git a/source4/dsdb/schema/schema.h b/source4/dsdb/schema/schema.h
index 34423be..8c73fd5 100644
--- a/source4/dsdb/schema/schema.h
+++ b/source4/dsdb/schema/schema.h
@@ -28,6 +28,15 @@ struct dsdb_attribute;
 struct dsdb_class;
 struct dsdb_schema;
 
+struct dsdb_syntax_ctx {
+	struct ldb_context *ldb;
+	const struct dsdb_schema *schema;
+
+	/* set when converting objects under Schema NC */
+	bool is_schema_nc;
+};
+
+
 struct dsdb_syntax {
 	const char *name;
 	const char *ldap_oid;
@@ -39,20 +48,17 @@ struct dsdb_syntax {
 	const char *comment;
 	const char *ldb_syntax;
 
-	WERROR (*drsuapi_to_ldb)(struct ldb_context *ldb, 
-				 const struct dsdb_schema *schema,
+	WERROR (*drsuapi_to_ldb)(const struct dsdb_syntax_ctx *ctx,
 				 const struct dsdb_attribute *attr,
 				 const struct drsuapi_DsReplicaAttribute *in,
 				 TALLOC_CTX *mem_ctx,
 				 struct ldb_message_element *out);
-	WERROR (*ldb_to_drsuapi)(struct ldb_context *ldb, 
-				 const struct dsdb_schema *schema,
+	WERROR (*ldb_to_drsuapi)(const struct dsdb_syntax_ctx *ctx,
 				 const struct dsdb_attribute *attr,
 				 const struct ldb_message_element *in,
 				 TALLOC_CTX *mem_ctx,
 				 struct drsuapi_DsReplicaAttribute *out);
-	WERROR (*validate_ldb)(struct ldb_context *ldb,
-			       const struct dsdb_schema *schema,
+	WERROR (*validate_ldb)(const struct dsdb_syntax_ctx *ctx,
 			       const struct dsdb_attribute *attr,
 			       const struct ldb_message_element *in);
 };
diff --git a/source4/dsdb/schema/schema_syntax.c b/source4/dsdb/schema/schema_syntax.c
index 193d62d..db53aea 100644
--- a/source4/dsdb/schema/schema_syntax.c
+++ b/source4/dsdb/schema/schema_syntax.c
@@ -1,7 +1,7 @@
-/* 
+/*
    Unix SMB/CIFS mplementation.
    DSDB schema syntaxes
-   
+
    Copyright (C) Stefan Metzmacher <metze at samba.org> 2006
    Copyright (C) Simo Sorce 2005
    Copyright (C) Andrew Bartlett <abartlet at samba.org> 2008
@@ -10,15 +10,15 @@
    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 "dsdb/samdb/samdb.h"
@@ -31,8 +31,44 @@
 #include "../lib/util/charset/charset.h"
 #include "librpc/ndr/libndr.h"
 
-static WERROR dsdb_syntax_FOOBAR_drsuapi_to_ldb(struct ldb_context *ldb, 
-						const struct dsdb_schema *schema,
+/**
+ * Initialize dsdb_syntax_ctx with default values
+ * for common cases.
+ */
+void dsdb_syntax_ctx_init(struct dsdb_syntax_ctx *ctx,
+			  struct ldb_context *ldb,
+			  const struct dsdb_schema *schema)
+{
+	ctx->ldb 	= ldb;
+	ctx->schema 	= schema;
+
+	/*
+	 * 'true' will keep current behavior,
+	 * i.e. attributeID_id will be returned by default
+	 */
+	ctx->is_schema_nc = true;
+}
+
+
+/**
+ * Returns ATTID for DRS attribute.
+ *
+ * ATTID depends on whether we are replicating
+ * Schema NC or msDs-IntId is set for schemaAttribute
+ * for the attribute.
+ */
+uint32_t dsdb_attribute_get_attid(const struct dsdb_attribute *attr,
+				  bool for_schema_nc)
+{
+	if (!for_schema_nc && attr->msDS_IntId) {
+		return attr->msDS_IntId;
+	}
+
+	return attr->attributeID_id;
+}
+
+
+static WERROR dsdb_syntax_FOOBAR_drsuapi_to_ldb(const struct dsdb_syntax_ctx *ctx,
 						const struct dsdb_attribute *attr,
 						const struct drsuapi_DsReplicaAttribute *in,
 						TALLOC_CTX *mem_ctx,
@@ -65,8 +101,7 @@ static WERROR dsdb_syntax_FOOBAR_drsuapi_to_ldb(struct ldb_context *ldb,
 	return WERR_OK;
 }
 
-static WERROR dsdb_syntax_FOOBAR_ldb_to_drsuapi(struct ldb_context *ldb, 
-						const struct dsdb_schema *schema,
+static WERROR dsdb_syntax_FOOBAR_ldb_to_drsuapi(const struct dsdb_syntax_ctx *ctx,
 						const struct dsdb_attribute *attr,
 						const struct ldb_message_element *in,
 						TALLOC_CTX *mem_ctx,
@@ -75,16 +110,14 @@ static WERROR dsdb_syntax_FOOBAR_ldb_to_drsuapi(struct ldb_context *ldb,
 	return WERR_FOOBAR;
 }
 
-static WERROR dsdb_syntax_FOOBAR_validate_ldb(struct ldb_context *ldb,
-					      const struct dsdb_schema *schema,
+static WERROR dsdb_syntax_FOOBAR_validate_ldb(const struct dsdb_syntax_ctx *ctx,
 					      const struct dsdb_attribute *attr,
 					      const struct ldb_message_element *in)
 {
 	return WERR_FOOBAR;
 }
 
-static WERROR dsdb_syntax_BOOL_drsuapi_to_ldb(struct ldb_context *ldb, 
-					      const struct dsdb_schema *schema,
+static WERROR dsdb_syntax_BOOL_drsuapi_to_ldb(const struct dsdb_syntax_ctx *ctx,
 					      const struct dsdb_attribute *attr,
 					      const struct drsuapi_DsReplicaAttribute *in,
 					      TALLOC_CTX *mem_ctx,
@@ -128,8 +161,7 @@ static WERROR dsdb_syntax_BOOL_drsuapi_to_ldb(struct ldb_context *ldb,
 	return WERR_OK;
 }
 
-static WERROR dsdb_syntax_BOOL_ldb_to_drsuapi(struct ldb_context *ldb, 
-					      const struct dsdb_schema *schema,
+static WERROR dsdb_syntax_BOOL_ldb_to_drsuapi(const struct dsdb_syntax_ctx *ctx,
 					      const struct dsdb_attribute *attr,
 					      const struct ldb_message_element *in,
 					      TALLOC_CTX *mem_ctx,
@@ -142,7 +174,8 @@ static WERROR dsdb_syntax_BOOL_ldb_to_drsuapi(struct ldb_context *ldb,
 		return WERR_FOOBAR;
 	}
 
-	out->attid			= attr->attributeID_id;
+	out->attid			= dsdb_attribute_get_attid(attr,
+								   ctx->is_schema_nc);
 	out->value_ctr.num_values	= in->num_values;
 	out->value_ctr.values		= talloc_array(mem_ctx,
 						       struct drsuapi_DsAttributeValue,
@@ -170,8 +203,7 @@ static WERROR dsdb_syntax_BOOL_ldb_to_drsuapi(struct ldb_context *ldb,
 	return WERR_OK;
 }
 
-static WERROR dsdb_syntax_BOOL_validate_ldb(struct ldb_context *ldb,
-					    const struct dsdb_schema *schema,
+static WERROR dsdb_syntax_BOOL_validate_ldb(const struct dsdb_syntax_ctx *ctx,
 					    const struct dsdb_attribute *attr,
 					    const struct ldb_message_element *in)
 {
@@ -199,8 +231,7 @@ static WERROR dsdb_syntax_BOOL_validate_ldb(struct ldb_context *ldb,
 	return WERR_OK;
 }
 
-static WERROR dsdb_syntax_INT32_drsuapi_to_ldb(struct ldb_context *ldb, 
-					       const struct dsdb_schema *schema,
+static WERROR dsdb_syntax_INT32_drsuapi_to_ldb(const struct dsdb_syntax_ctx *ctx,
 					       const struct dsdb_attribute *attr,
 					       const struct drsuapi_DsReplicaAttribute *in,
 					       TALLOC_CTX *mem_ctx,
@@ -239,8 +270,7 @@ static WERROR dsdb_syntax_INT32_drsuapi_to_ldb(struct ldb_context *ldb,
 	return WERR_OK;
 }
 
-static WERROR dsdb_syntax_INT32_ldb_to_drsuapi(struct ldb_context *ldb, 
-					       const struct dsdb_schema *schema,
+static WERROR dsdb_syntax_INT32_ldb_to_drsuapi(const struct dsdb_syntax_ctx *ctx,
 					       const struct dsdb_attribute *attr,
 					       const struct ldb_message_element *in,
 					       TALLOC_CTX *mem_ctx,
@@ -253,7 +283,8 @@ static WERROR dsdb_syntax_INT32_ldb_to_drsuapi(struct ldb_context *ldb,
 		return WERR_FOOBAR;
 	}
 
-	out->attid			= attr->attributeID_id;
+	out->attid			= dsdb_attribute_get_attid(attr,
+								   ctx->is_schema_nc);
 	out->value_ctr.num_values	= in->num_values;
 	out->value_ctr.values		= talloc_array(mem_ctx,
 						       struct drsuapi_DsAttributeValue,
@@ -281,8 +312,7 @@ static WERROR dsdb_syntax_INT32_ldb_to_drsuapi(struct ldb_context *ldb,
 	return WERR_OK;
 }
 
-static WERROR dsdb_syntax_INT32_validate_ldb(struct ldb_context *ldb,
-					     const struct dsdb_schema *schema,
+static WERROR dsdb_syntax_INT32_validate_ldb(const struct dsdb_syntax_ctx *ctx,
 					     const struct dsdb_attribute *attr,
 					     const struct ldb_message_element *in)
 {
@@ -328,8 +358,7 @@ static WERROR dsdb_syntax_INT32_validate_ldb(struct ldb_context *ldb,
 	return WERR_OK;
 }
 
-static WERROR dsdb_syntax_INT64_drsuapi_to_ldb(struct ldb_context *ldb, 
-					       const struct dsdb_schema *schema,
+static WERROR dsdb_syntax_INT64_drsuapi_to_ldb(const struct dsdb_syntax_ctx *ctx,
 					       const struct dsdb_attribute *attr,
 					       const struct drsuapi_DsReplicaAttribute *in,
 					       TALLOC_CTX *mem_ctx,
@@ -368,8 +397,7 @@ static WERROR dsdb_syntax_INT64_drsuapi_to_ldb(struct ldb_context *ldb,
 	return WERR_OK;
 }
 
-static WERROR dsdb_syntax_INT64_ldb_to_drsuapi(struct ldb_context *ldb, 
-					       const struct dsdb_schema *schema,
+static WERROR dsdb_syntax_INT64_ldb_to_drsuapi(const struct dsdb_syntax_ctx *ctx,
 					       const struct dsdb_attribute *attr,
 					       const struct ldb_message_element *in,
 					       TALLOC_CTX *mem_ctx,
@@ -382,7 +410,8 @@ static WERROR dsdb_syntax_INT64_ldb_to_drsuapi(struct ldb_context *ldb,
 		return WERR_FOOBAR;
 	}
 
-	out->attid			= attr->attributeID_id;
+	out->attid			= dsdb_attribute_get_attid(attr,
+								   ctx->is_schema_nc);
 	out->value_ctr.num_values	= in->num_values;
 	out->value_ctr.values		= talloc_array(mem_ctx,
 						       struct drsuapi_DsAttributeValue,
@@ -408,8 +437,7 @@ static WERROR dsdb_syntax_INT64_ldb_to_drsuapi(struct ldb_context *ldb,
 	return WERR_OK;
 }
 
-static WERROR dsdb_syntax_INT64_validate_ldb(struct ldb_context *ldb,
-					     const struct dsdb_schema *schema,
+static WERROR dsdb_syntax_INT64_validate_ldb(const struct dsdb_syntax_ctx *ctx,
 					     const struct dsdb_attribute *attr,
 					     const struct ldb_message_element *in)
 {
@@ -454,8 +482,7 @@ static WERROR dsdb_syntax_INT64_validate_ldb(struct ldb_context *ldb,
 
 	return WERR_OK;
 }
-static WERROR dsdb_syntax_NTTIME_UTC_drsuapi_to_ldb(struct ldb_context *ldb, 
-						    const struct dsdb_schema *schema,
+static WERROR dsdb_syntax_NTTIME_UTC_drsuapi_to_ldb(const struct dsdb_syntax_ctx *ctx,
 						    const struct dsdb_attribute *attr,
 						    const struct drsuapi_DsReplicaAttribute *in,
 						    TALLOC_CTX *mem_ctx,
@@ -488,7 +515,7 @@ static WERROR dsdb_syntax_NTTIME_UTC_drsuapi_to_ldb(struct ldb_context *ldb,
 		v *= 10000000;
 		t = nt_time_to_unix(v);
 
-		/* 
+		/*
 		 * NOTE: On a w2k3 server you can set a GeneralizedTime string
 		 *       via LDAP, but you get back an UTCTime string,
 		 *       but via DRSUAPI you get back the NTTIME_1sec value
@@ -497,7 +524,7 @@ static WERROR dsdb_syntax_NTTIME_UTC_drsuapi_to_ldb(struct ldb_context *ldb,
 		 *       So if we store the UTCTime string in our ldb
 		 *       we'll loose information!
 		 */
-		str = ldb_timestring_utc(out->values, t); 
+		str = ldb_timestring_utc(out->values, t);
 		W_ERROR_HAVE_NO_MEMORY(str);
 		out->values[i] = data_blob_string_const(str);
 	}
@@ -505,8 +532,7 @@ static WERROR dsdb_syntax_NTTIME_UTC_drsuapi_to_ldb(struct ldb_context *ldb,
 	return WERR_OK;
 }
 
-static WERROR dsdb_syntax_NTTIME_UTC_ldb_to_drsuapi(struct ldb_context *ldb, 
-						    const struct dsdb_schema *schema,
+static WERROR dsdb_syntax_NTTIME_UTC_ldb_to_drsuapi(const struct dsdb_syntax_ctx *ctx,
 						    const struct dsdb_attribute *attr,
 						    const struct ldb_message_element *in,
 						    TALLOC_CTX *mem_ctx,
@@ -519,7 +545,8 @@ static WERROR dsdb_syntax_NTTIME_UTC_ldb_to_drsuapi(struct ldb_context *ldb,
 		return WERR_FOOBAR;
 	}
 
-	out->attid			= attr->attributeID_id;
+	out->attid			= dsdb_attribute_get_attid(attr,
+								   ctx->is_schema_nc);
 	out->value_ctr.num_values	= in->num_values;
 	out->value_ctr.values		= talloc_array(mem_ctx,
 						       struct drsuapi_DsAttributeValue,
@@ -548,8 +575,7 @@ static WERROR dsdb_syntax_NTTIME_UTC_ldb_to_drsuapi(struct ldb_context *ldb,
 	return WERR_OK;
 }
 
-static WERROR dsdb_syntax_NTTIME_UTC_validate_ldb(struct ldb_context *ldb,
-						  const struct dsdb_schema *schema,
+static WERROR dsdb_syntax_NTTIME_UTC_validate_ldb(const struct dsdb_syntax_ctx *ctx,
 						  const struct dsdb_attribute *attr,
 						  const struct ldb_message_element *in)
 {
@@ -596,8 +622,7 @@ static WERROR dsdb_syntax_NTTIME_UTC_validate_ldb(struct ldb_context *ldb,
 	return WERR_OK;
 }
 
-static WERROR dsdb_syntax_NTTIME_drsuapi_to_ldb(struct ldb_context *ldb, 
-						const struct dsdb_schema *schema,
+static WERROR dsdb_syntax_NTTIME_drsuapi_to_ldb(const struct dsdb_syntax_ctx *ctx,
 						const struct dsdb_attribute *attr,
 						const struct drsuapi_DsReplicaAttribute *in,
 						TALLOC_CTX *mem_ctx,
@@ -630,7 +655,7 @@ static WERROR dsdb_syntax_NTTIME_drsuapi_to_ldb(struct ldb_context *ldb,
 		v *= 10000000;
 		t = nt_time_to_unix(v);
 
-		str = ldb_timestring(out->values, t); 
+		str = ldb_timestring(out->values, t);
 		W_ERROR_HAVE_NO_MEMORY(str);
 
 		out->values[i] = data_blob_string_const(str);
@@ -639,8 +664,7 @@ static WERROR dsdb_syntax_NTTIME_drsuapi_to_ldb(struct ldb_context *ldb,
 	return WERR_OK;
 }
 
-static WERROR dsdb_syntax_NTTIME_ldb_to_drsuapi(struct ldb_context *ldb, 
-						const struct dsdb_schema *schema,
+static WERROR dsdb_syntax_NTTIME_ldb_to_drsuapi(const struct dsdb_syntax_ctx *ctx,
 						const struct dsdb_attribute *attr,
 						const struct ldb_message_element *in,
 						TALLOC_CTX *mem_ctx,
@@ -653,7 +677,8 @@ static WERROR dsdb_syntax_NTTIME_ldb_to_drsuapi(struct ldb_context *ldb,
 		return WERR_FOOBAR;
 	}
 
-	out->attid			= attr->attributeID_id;
+	out->attid			= dsdb_attribute_get_attid(attr,
+								   ctx->is_schema_nc);
 	out->value_ctr.num_values	= in->num_values;
 	out->value_ctr.values		= talloc_array(mem_ctx,
 						       struct drsuapi_DsAttributeValue,
@@ -686,8 +711,7 @@ static WERROR dsdb_syntax_NTTIME_ldb_to_drsuapi(struct ldb_context *ldb,
 	return WERR_OK;
 }
 
-static WERROR dsdb_syntax_NTTIME_validate_ldb(struct ldb_context *ldb,
-					      const struct dsdb_schema *schema,
+static WERROR dsdb_syntax_NTTIME_validate_ldb(const struct dsdb_syntax_ctx *ctx,
 					      const struct dsdb_attribute *attr,
 					      const struct ldb_message_element *in)
 {
@@ -722,8 +746,7 @@ static WERROR dsdb_syntax_NTTIME_validate_ldb(struct ldb_context *ldb,
 	return WERR_OK;
 }
 
-static WERROR dsdb_syntax_DATA_BLOB_drsuapi_to_ldb(struct ldb_context *ldb, 
-						   const struct dsdb_schema *schema,
+static WERROR dsdb_syntax_DATA_BLOB_drsuapi_to_ldb(const struct dsdb_syntax_ctx *ctx,
 						   const struct dsdb_attribute *attr,
 						   const struct drsuapi_DsReplicaAttribute *in,
 						   TALLOC_CTX *mem_ctx,
@@ -756,8 +779,7 @@ static WERROR dsdb_syntax_DATA_BLOB_drsuapi_to_ldb(struct ldb_context *ldb,
 	return WERR_OK;
 }
 
-static WERROR dsdb_syntax_DATA_BLOB_ldb_to_drsuapi(struct ldb_context *ldb, 
-						   const struct dsdb_schema *schema,
+static WERROR dsdb_syntax_DATA_BLOB_ldb_to_drsuapi(const struct dsdb_syntax_ctx *ctx,
 						   const struct dsdb_attribute *attr,
 						   const struct ldb_message_element *in,
 						   TALLOC_CTX *mem_ctx,
@@ -770,7 +792,8 @@ static WERROR dsdb_syntax_DATA_BLOB_ldb_to_drsuapi(struct ldb_context *ldb,
 		return WERR_FOOBAR;
 	}
 
-	out->attid			= attr->attributeID_id;
+	out->attid			= dsdb_attribute_get_attid(attr,
+								   ctx->is_schema_nc);
 	out->value_ctr.num_values	= in->num_values;
 	out->value_ctr.values		= talloc_array(mem_ctx,
 						       struct drsuapi_DsAttributeValue,
@@ -790,8 +813,7 @@ static WERROR dsdb_syntax_DATA_BLOB_ldb_to_drsuapi(struct ldb_context *ldb,
 	return WERR_OK;
 }
 
-static WERROR dsdb_syntax_DATA_BLOB_validate_one_val(struct ldb_context *ldb,
-						     const struct dsdb_schema *schema,
+static WERROR dsdb_syntax_DATA_BLOB_validate_one_val(const struct dsdb_syntax_ctx *ctx,
 						     const struct dsdb_attribute *attr,
 						     const struct ldb_val *val)


-- 
Samba Shared Repository


More information about the samba-cvs mailing list