[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