The branch, master has been updated via dcd346c s4-tests: Make repl_schema.py test part of Samba4 test suite via 0868a15 s4-repl: Propagate remote prefixMap in DRSUAPI data conversion functions via 2d0cb54 s4-dsdb_syntax: Warning message that we can't find requested ATTID in Schema Cache via 3ab7552 s4-prefixMap: dsdb_schema_pfm_oid_from_attid() to use const prefixMap via e772518 s4-dsdb_syntax: Use remote prefixMap to handle generic cases in drsuapi_to_ldb conversions via f65c840 s4-dsdb_syntax: Add remote prefixMap member for dsdb_syntax conversions via a8495d3 s4-repl: dsdb_extended_replicated_objects_convert -> dsdb_replicated_objects_convert/ via 227e8dc s4-repl: dsdb_extended_replicated_objects_commit -> dsdb_replicated_objects_commit via 28f41c1 s4-repl: dsdb_convert_object -> dsdb_origin_object_convert via 7ada90e s4-test: repl_schema - Make sure LdbError and ERR_NO_SUCH_OBJECT are visible from beaf14e s3: Well... Fix a stupid error
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit dcd346c0e541246260507c96283eefaef23edebb Author: Kamen Mazdrashki <kame...@samba.org> Date: Wed Nov 10 06:14:20 2010 +0200 s4-tests: Make repl_schema.py test part of Samba4 test suite Autobuild-User: Kamen Mazdrashki <kame...@samba.org> Autobuild-Date: Thu Nov 11 19:38:18 UTC 2010 on sn-devel-104 commit 0868a1598220e2ed73aefcd9ec3517a38704ac9e Author: Kamen Mazdrashki <kame...@samba.org> Date: Wed Nov 10 03:45:22 2010 +0200 s4-repl: Propagate remote prefixMap in DRSUAPI data conversion functions commit 2d0cb54ceb8f568f233533ada007822ffb40ee3d Author: Kamen Mazdrashki <kame...@samba.org> Date: Wed Nov 10 02:32:29 2010 +0200 s4-dsdb_syntax: Warning message that we can't find requested ATTID in Schema Cache commit 3ab75524ee11f9121f41b3d4dd452ecdf9847e67 Author: Kamen Mazdrashki <kame...@samba.org> Date: Tue Nov 9 04:36:24 2010 +0200 s4-prefixMap: dsdb_schema_pfm_oid_from_attid() to use const prefixMap It is not supposed to change supplied prefixMap commit e772518a64f1f616ba6c00a8ee45cffd228bd8b3 Author: Kamen Mazdrashki <kame...@samba.org> Date: Tue Nov 9 04:12:57 2010 +0200 s4-dsdb_syntax: Use remote prefixMap to handle generic cases in drsuapi_to_ldb conversions commit f65c8402998c0759aac1ff27234a5e841a3bba37 Author: Kamen Mazdrashki <kame...@samba.org> Date: Tue Nov 9 04:12:16 2010 +0200 s4-dsdb_syntax: Add remote prefixMap member for dsdb_syntax conversions commit a8495d380ef93f8d236d521c8b1b8bf76f689acf Author: Kamen Mazdrashki <kame...@samba.org> Date: Sun Nov 7 23:04:33 2010 +0200 s4-repl: dsdb_extended_replicated_objects_convert -> dsdb_replicated_objects_convert/ It is part of dsdb_replicated_* family of functions commit 227e8dcfcfeeb5721e4f23c2bc183fd63c5bbe30 Author: Kamen Mazdrashki <kame...@samba.org> Date: Sun Nov 7 22:51:11 2010 +0200 s4-repl: dsdb_extended_replicated_objects_commit -> dsdb_replicated_objects_commit It is part of dsdb_replicated_* family of functions commit 28f41c166a77c0d69f0b1eb3e0d811fb66e696a4 Author: Kamen Mazdrashki <kame...@samba.org> Date: Sun Nov 7 21:47:39 2010 +0200 s4-repl: dsdb_convert_object -> dsdb_origin_object_convert It is used in dsdb_origin_objects_commit() func, hence the dsdb_origin_ prefix commit 7ada90ec2956fc8fc744676496e847f1a4d2f163 Author: Kamen Mazdrashki <kame...@samba.org> Date: Thu Nov 11 20:19:47 2010 +0200 s4-test: repl_schema - Make sure LdbError and ERR_NO_SUCH_OBJECT are visible ----------------------------------------------------------------------- Summary of changes: source4/dsdb/repl/drepl_out_helpers.c | 28 ++++++------ source4/dsdb/repl/replicated_objects.c | 66 ++++++++++++++++++----------- source4/dsdb/schema/schema.h | 3 + source4/dsdb/schema/schema_prefixmap.c | 3 +- source4/dsdb/schema/schema_syntax.c | 14 +++++- source4/libnet/libnet_vampire.c | 60 +++++++++++++++----------- source4/selftest/tests.py | 1 + source4/torture/drs/python/repl_schema.py | 1 + source4/torture/drs/rpc/dssync.c | 18 ++++---- 9 files changed, 117 insertions(+), 77 deletions(-) Changeset truncated at 500 lines: diff --git a/source4/dsdb/repl/drepl_out_helpers.c b/source4/dsdb/repl/drepl_out_helpers.c index f83cdda..b99f126 100644 --- a/source4/dsdb/repl/drepl_out_helpers.c +++ b/source4/dsdb/repl/drepl_out_helpers.c @@ -580,17 +580,17 @@ static void dreplsrv_op_pull_source_apply_changes_trigger(struct tevent_req *req return; } - status = dsdb_extended_replicated_objects_convert(service->samdb, - partition->nc.dn, - mapping_ctr, - object_count, - first_object, - linked_attributes_count, - linked_attributes, - &rf1, - uptodateness_vector, - &drsuapi->gensec_skey, - state, &objects); + status = dsdb_replicated_objects_convert(service->samdb, + partition->nc.dn, + mapping_ctr, + object_count, + first_object, + linked_attributes_count, + linked_attributes, + &rf1, + uptodateness_vector, + &drsuapi->gensec_skey, + state, &objects); if (!W_ERROR_IS_OK(status)) { nt_status = werror_to_ntstatus(WERR_BAD_NET_RESP); DEBUG(0,("Failed to convert objects: %s/%s\n", @@ -599,9 +599,9 @@ static void dreplsrv_op_pull_source_apply_changes_trigger(struct tevent_req *req return; } - status = dsdb_extended_replicated_objects_commit(service->samdb, - objects, - &state->op->source_dsa->notify_uSN); + status = dsdb_replicated_objects_commit(service->samdb, + objects, + &state->op->source_dsa->notify_uSN); talloc_free(objects); if (!W_ERROR_IS_OK(status)) { nt_status = werror_to_ntstatus(WERR_BAD_NET_RESP); diff --git a/source4/dsdb/repl/replicated_objects.c b/source4/dsdb/repl/replicated_objects.c index 5c3cf48..5824334 100644 --- a/source4/dsdb/repl/replicated_objects.c +++ b/source4/dsdb/repl/replicated_objects.c @@ -33,6 +33,7 @@ WERROR dsdb_convert_object_ex(struct ldb_context *ldb, const struct dsdb_schema *schema, + const struct dsdb_schema_prefixmap *pfm_remote, const struct drsuapi_DsReplicaObjectListItemEx *in, const DATA_BLOB *gensec_skey, TALLOC_CTX *mem_ctx, @@ -127,7 +128,8 @@ WERROR dsdb_convert_object_ex(struct ldb_context *ldb, W_ERROR_NOT_OK_RETURN(status); } - status = dsdb_attribute_drsuapi_to_ldb(ldb, schema, a, msg->elements, e); + status = dsdb_attribute_drsuapi_to_ldb(ldb, schema, pfm_remote, + a, msg->elements, e); W_ERROR_NOT_OK_RETURN(status); m->attid = a->attid; @@ -196,22 +198,23 @@ WERROR dsdb_convert_object_ex(struct ldb_context *ldb, return WERR_OK; } -WERROR dsdb_extended_replicated_objects_convert(struct ldb_context *ldb, - const char *partition_dn_str, - const struct drsuapi_DsReplicaOIDMapping_Ctr *mapping_ctr, - uint32_t object_count, - const struct drsuapi_DsReplicaObjectListItemEx *first_object, - uint32_t linked_attributes_count, - const struct drsuapi_DsReplicaLinkedAttribute *linked_attributes, - const struct repsFromTo1 *source_dsa, - const struct drsuapi_DsReplicaCursor2CtrEx *uptodateness_vector, - const DATA_BLOB *gensec_skey, - TALLOC_CTX *mem_ctx, - struct dsdb_extended_replicated_objects **objects) +WERROR dsdb_replicated_objects_convert(struct ldb_context *ldb, + const char *partition_dn_str, + const struct drsuapi_DsReplicaOIDMapping_Ctr *mapping_ctr, + uint32_t object_count, + const struct drsuapi_DsReplicaObjectListItemEx *first_object, + uint32_t linked_attributes_count, + const struct drsuapi_DsReplicaLinkedAttribute *linked_attributes, + const struct repsFromTo1 *source_dsa, + const struct drsuapi_DsReplicaCursor2CtrEx *uptodateness_vector, + const DATA_BLOB *gensec_skey, + TALLOC_CTX *mem_ctx, + struct dsdb_extended_replicated_objects **objects) { WERROR status; struct ldb_dn *partition_dn; const struct dsdb_schema *schema; + struct dsdb_schema_prefixmap *pfm_remote; struct dsdb_extended_replicated_objects *out; const struct drsuapi_DsReplicaObjectListItemEx *cur; uint32_t i; @@ -230,6 +233,15 @@ WERROR dsdb_extended_replicated_objects_convert(struct ldb_context *ldb, partition_dn = ldb_dn_new(out, ldb, partition_dn_str); W_ERROR_HAVE_NO_MEMORY_AND_FREE(partition_dn, out); + status = dsdb_schema_pfm_from_drsuapi_pfm(mapping_ctr, true, + out, &pfm_remote, NULL); + if (!W_ERROR_IS_OK(status)) { + DEBUG(0,(__location__ ": Failed to decode remote prefixMap: %s", + win_errstr(status))); + talloc_free(out); + return status; + } + if (ldb_dn_compare(partition_dn, ldb_get_schema_basedn(ldb)) != 0) { /* * check for schema changes in case @@ -266,7 +278,7 @@ WERROR dsdb_extended_replicated_objects_convert(struct ldb_context *ldb, return WERR_FOOBAR; } - status = dsdb_convert_object_ex(ldb, schema, + status = dsdb_convert_object_ex(ldb, schema, pfm_remote, cur, gensec_skey, out->objects, &out->objects[i]); if (!W_ERROR_IS_OK(status)) { @@ -282,13 +294,16 @@ WERROR dsdb_extended_replicated_objects_convert(struct ldb_context *ldb, return WERR_FOOBAR; } + /* free pfm_remote, we won't need it anymore */ + talloc_free(pfm_remote); + *objects = out; return WERR_OK; } -WERROR dsdb_extended_replicated_objects_commit(struct ldb_context *ldb, - struct dsdb_extended_replicated_objects *objects, - uint64_t *notify_uSN) +WERROR dsdb_replicated_objects_commit(struct ldb_context *ldb, + struct dsdb_extended_replicated_objects *objects, + uint64_t *notify_uSN) { struct ldb_result *ext_res; int ret; @@ -356,11 +371,11 @@ WERROR dsdb_extended_replicated_objects_commit(struct ldb_context *ldb, return WERR_OK; } -static WERROR dsdb_convert_object(struct ldb_context *ldb, - const struct dsdb_schema *schema, - const struct drsuapi_DsReplicaObjectListItem *in, - TALLOC_CTX *mem_ctx, - struct ldb_message **_msg) +static WERROR dsdb_origin_object_convert(struct ldb_context *ldb, + const struct dsdb_schema *schema, + const struct drsuapi_DsReplicaObjectListItem *in, + TALLOC_CTX *mem_ctx, + struct ldb_message **_msg) { WERROR status; unsigned int i; @@ -392,7 +407,8 @@ static WERROR dsdb_convert_object(struct ldb_context *ldb, a = &in->object.attribute_ctr.attributes[i]; e = &msg->elements[i]; - status = dsdb_attribute_drsuapi_to_ldb(ldb, schema, a, msg->elements, e); + status = dsdb_attribute_drsuapi_to_ldb(ldb, schema, schema->prefixmap, + a, msg->elements, e); W_ERROR_NOT_OK_RETURN(status); } @@ -449,8 +465,8 @@ WERROR dsdb_origin_objects_commit(struct ldb_context *ldb, } for (i=0, cur = first_object; cur; cur = cur->next_object, i++) { - status = dsdb_convert_object(ldb, schema, - cur, objects, &objects[i]); + status = dsdb_origin_object_convert(ldb, schema, cur, + objects, &objects[i]); if (!W_ERROR_IS_OK(status)) { goto cancel; } diff --git a/source4/dsdb/schema/schema.h b/source4/dsdb/schema/schema.h index fd1e090..5ba2254 100644 --- a/source4/dsdb/schema/schema.h +++ b/source4/dsdb/schema/schema.h @@ -35,6 +35,9 @@ struct dsdb_syntax_ctx { /* set when converting objects under Schema NC */ bool is_schema_nc; + + /* remote prefixMap to be used for drsuapi_to_ldb conversions */ + const struct dsdb_schema_prefixmap *pfm_remote; }; diff --git a/source4/dsdb/schema/schema_prefixmap.c b/source4/dsdb/schema/schema_prefixmap.c index 371ec88..18b22ff 100644 --- a/source4/dsdb/schema/schema_prefixmap.c +++ b/source4/dsdb/schema/schema_prefixmap.c @@ -351,7 +351,8 @@ WERROR dsdb_schema_pfm_attid_from_oid(struct dsdb_schema_prefixmap *pfm, * Make OID for given ATTID. * Reference: [MS-DRSR] section 5.12.2 */ -WERROR dsdb_schema_pfm_oid_from_attid(struct dsdb_schema_prefixmap *pfm, uint32_t attid, +WERROR dsdb_schema_pfm_oid_from_attid(const struct dsdb_schema_prefixmap *pfm, + uint32_t attid, TALLOC_CTX *mem_ctx, const char **_oid) { uint32_t i; diff --git a/source4/dsdb/schema/schema_syntax.c b/source4/dsdb/schema/schema_syntax.c index 9cd3105..0d1d274 100644 --- a/source4/dsdb/schema/schema_syntax.c +++ b/source4/dsdb/schema/schema_syntax.c @@ -48,6 +48,8 @@ void dsdb_syntax_ctx_init(struct dsdb_syntax_ctx *ctx, * i.e. attributeID_id will be returned by default */ ctx->is_schema_nc = true; + + ctx->pfm_remote = NULL; } @@ -902,7 +904,9 @@ static WERROR _dsdb_syntax_auto_OID_drsuapi_to_ldb(const struct dsdb_syntax_ctx str = talloc_strdup(out->values, a->lDAPDisplayName); } else { WERROR werr; - werr = dsdb_schema_pfm_oid_from_attid(ctx->schema->prefixmap, v, out->values, &str); + SMB_ASSERT(ctx->pfm_remote); + werr = dsdb_schema_pfm_oid_from_attid(ctx->pfm_remote, v, + out->values, &str); W_ERROR_NOT_OK_RETURN(werr); } W_ERROR_HAVE_NO_MEMORY(str); @@ -1014,6 +1018,8 @@ static WERROR _dsdb_syntax_OID_oid_drsuapi_to_ldb(const struct dsdb_syntax_ctx * { unsigned int i; + SMB_ASSERT(ctx->pfm_remote); + out->flags = 0; out->name = talloc_strdup(mem_ctx, attr->lDAPDisplayName); W_ERROR_HAVE_NO_MEMORY(out->name); @@ -1037,7 +1043,8 @@ static WERROR _dsdb_syntax_OID_oid_drsuapi_to_ldb(const struct dsdb_syntax_ctx * attid = IVAL(in->value_ctr.values[i].blob->data, 0); - status = dsdb_schema_pfm_oid_from_attid(ctx->schema->prefixmap, attid, out->values, &oid); + status = dsdb_schema_pfm_oid_from_attid(ctx->pfm_remote, attid, + out->values, &oid); W_ERROR_NOT_OK_RETURN(status); out->values[i] = data_blob_string_const(oid); @@ -2579,6 +2586,7 @@ const struct dsdb_syntax *dsdb_syntax_for_attribute(const struct dsdb_attribute WERROR dsdb_attribute_drsuapi_to_ldb(struct ldb_context *ldb, const struct dsdb_schema *schema, + const struct dsdb_schema_prefixmap *pfm_remote, const struct drsuapi_DsReplicaAttribute *in, TALLOC_CTX *mem_ctx, struct ldb_message_element *out) @@ -2588,11 +2596,13 @@ WERROR dsdb_attribute_drsuapi_to_ldb(struct ldb_context *ldb, sa = dsdb_attribute_by_attributeID_id(schema, in->attid); if (!sa) { + DEBUG(1,(__location__ ": Unknown attributeID_id 0x%08X\n", in->attid)); return WERR_FOOBAR; } /* use default syntax conversion context */ dsdb_syntax_ctx_init(&syntax_ctx, ldb, schema); + syntax_ctx.pfm_remote = pfm_remote; return sa->syntax->drsuapi_to_ldb(&syntax_ctx, sa, in, mem_ctx, out); } diff --git a/source4/libnet/libnet_vampire.c b/source4/libnet/libnet_vampire.c index f349a5d..164dcde 100644 --- a/source4/libnet/libnet_vampire.c +++ b/source4/libnet/libnet_vampire.c @@ -225,6 +225,7 @@ static NTSTATUS libnet_vampire_cb_apply_schema(struct libnet_vampire_cb_state *s }; WERROR status; + struct dsdb_schema_prefixmap *pfm_remote; const struct drsuapi_DsReplicaOIDMapping_Ctr *mapping_ctr; struct schema_list *schema_list = NULL, *schema_list_item, *schema_list_next_item; struct dsdb_schema *working_schema; @@ -280,6 +281,14 @@ static NTSTATUS libnet_vampire_cb_apply_schema(struct libnet_vampire_cb_state *s return NT_STATUS_INVALID_PARAMETER; } + status = dsdb_schema_pfm_from_drsuapi_pfm(mapping_ctr, true, + s, &pfm_remote, NULL); + if (!W_ERROR_IS_OK(status)) { + DEBUG(0,(__location__ ": Failed to decode remote prefixMap: %s", + win_errstr(status))); + return werror_to_ntstatus(status); + } + s_dsa->replica_flags = DRSUAPI_DRS_WRIT_REP | DRSUAPI_DRS_INIT_SYNC | DRSUAPI_DRS_PER_SYNC; @@ -338,7 +347,7 @@ static NTSTATUS libnet_vampire_cb_apply_schema(struct libnet_vampire_cb_state *s * schema we have so far. It's ok if we fail to convert * an object. We should convert more objects on next pass. */ - status = dsdb_convert_object_ex(s->ldb, working_schema, + status = dsdb_convert_object_ex(s->ldb, working_schema, pfm_remote, cur, c->gensec_skey, tmp_ctx, &object); if (!W_ERROR_IS_OK(status)) { @@ -409,17 +418,17 @@ static NTSTATUS libnet_vampire_cb_apply_schema(struct libnet_vampire_cb_state *s s->self_made_schema = NULL; /* Now convert the schema elements again, using the schema we finalised, ready to actually import */ - status = dsdb_extended_replicated_objects_convert(s->ldb, - c->partition->nc.dn, - mapping_ctr, - object_count, - first_object, - linked_attributes_count, - linked_attributes, - s_dsa, - uptodateness_vector, - c->gensec_skey, - s, &schema_objs); + status = dsdb_replicated_objects_convert(s->ldb, + c->partition->nc.dn, + mapping_ctr, + object_count, + first_object, + linked_attributes_count, + linked_attributes, + s_dsa, + uptodateness_vector, + c->gensec_skey, + s, &schema_objs); if (!W_ERROR_IS_OK(status)) { DEBUG(0,("Failed to convert objects when trying to import over DRS (2nd pass, to store remote schema): %s\n", win_errstr(status))); return werror_to_ntstatus(status); @@ -436,7 +445,7 @@ static NTSTATUS libnet_vampire_cb_apply_schema(struct libnet_vampire_cb_state *s } } - status = dsdb_extended_replicated_objects_commit(s->ldb, schema_objs, &seq_num); + status = dsdb_replicated_objects_commit(s->ldb, schema_objs, &seq_num); if (!W_ERROR_IS_OK(status)) { DEBUG(0,("Failed to commit objects: %s\n", win_errstr(status))); return werror_to_ntstatus(status); @@ -676,17 +685,17 @@ NTSTATUS libnet_vampire_cb_store_chunk(void *private_data, } - status = dsdb_extended_replicated_objects_convert(s->ldb, - c->partition->nc.dn, - mapping_ctr, - object_count, - first_object, - linked_attributes_count, - linked_attributes, - s_dsa, - uptodateness_vector, - c->gensec_skey, - s, &objs); + status = dsdb_replicated_objects_convert(s->ldb, + c->partition->nc.dn, + mapping_ctr, + object_count, + first_object, + linked_attributes_count, + linked_attributes, + s_dsa, + uptodateness_vector, + c->gensec_skey, + s, &objs); if (!W_ERROR_IS_OK(status)) { DEBUG(0,("Failed to convert objects: %s\n", win_errstr(status))); return werror_to_ntstatus(status); @@ -702,8 +711,7 @@ NTSTATUS libnet_vampire_cb_store_chunk(void *private_data, NDR_PRINT_DEBUG(replPropertyMetaDataBlob, objs->objects[i].meta_data); } } - status = dsdb_extended_replicated_objects_commit(s->ldb, - objs, &seq_num); + status = dsdb_replicated_objects_commit(s->ldb, objs, &seq_num); if (!W_ERROR_IS_OK(status)) { DEBUG(0,("Failed to commit objects: %s\n", win_errstr(status))); return werror_to_ntstatus(status); diff --git a/source4/selftest/tests.py b/source4/selftest/tests.py index 0c7c7c2..7a2dd44 100755 --- a/source4/selftest/tests.py +++ b/source4/selftest/tests.py @@ -509,6 +509,7 @@ plantestsuite("samba4.ldap.bind(dc)", "dc", [python, os.path.join(samba4srcdir, # DRS python tests plantestsuite("samba4.drs_delete_object.python(vampire_dc)", "vampire_dc", ['PYTHONPATH="$PYTHONPATH:%s"' % os.path.join(samba4srcdir, 'torture/drs/python'), 'DC1=$DC_SERVER', 'DC2=$VAMPIRE_DC_SERVER', subunitrun, 'delete_object', '-U$DOMAIN/$DC_USERNAME%$DC_PASSWORD']) plantestsuite("samba4.drs_fsmo.python(vampire_dc)", "vampire_dc", ['PYTHONPATH="$PYTHONPATH:%s"' % os.path.join(samba4srcdir, 'torture/drs/python'), 'DC1=$DC_SERVER', 'DC2=$VAMPIRE_DC_SERVER', subunitrun, 'fsmo', '-U$DOMAIN/$DC_USERNAME%$DC_PASSWORD']) +plantestsuite("samba4.drs_repl_schema.python(vampire_dc)", "vampire_dc", ['PYTHONPATH="$PYTHONPATH:%s"' % os.path.join(samba4srcdir, 'torture/drs/python'), 'DC1=$DC_SERVER', 'DC2=$VAMPIRE_DC_SERVER', subunitrun, 'repl_schema', '-U$DOMAIN/$DC_USERNAME%$DC_PASSWORD']) # This makes sure we test the rid allocation code t = "RPC-SAMR-LARGE-DC" diff --git a/source4/torture/drs/python/repl_schema.py b/source4/torture/drs/python/repl_schema.py index b407dfb..78759e1 100644 --- a/source4/torture/drs/python/repl_schema.py +++ b/source4/torture/drs/python/repl_schema.py @@ -35,6 +35,7 @@ import os sys.path.append("bin/python") from samba.auth import system_session +from ldb import LdbError, ERR_NO_SUCH_OBJECT from ldb import SCOPE_BASE, SCOPE_SUBTREE from samba.samdb import SamDB diff --git a/source4/torture/drs/rpc/dssync.c b/source4/torture/drs/rpc/dssync.c index db1703d..9c65b91 100644 --- a/source4/torture/drs/rpc/dssync.c +++ b/source4/torture/drs/rpc/dssync.c @@ -340,15 +340,15 @@ static bool test_analyse_objects(struct torture_context *tctx, "drs_util_dsdb_schema_load_ldb() failed"); ldap_schema = dsdb_get_schema(ldb, NULL); - status = dsdb_extended_replicated_objects_convert(ldb, - partition, - mapping_ctr, - object_count, - first_object, - 0, NULL, - NULL, NULL, - gensec_skey, - ctx, &objs); + status = dsdb_replicated_objects_convert(ldb, + partition, + mapping_ctr, + object_count, + first_object, + 0, NULL, + NULL, NULL, + gensec_skey, + ctx, &objs); torture_assert_werr_ok(tctx, status, "dsdb_extended_replicated_objects_convert() failed!"); extended_dn_ctrl = talloc(objs, struct ldb_extended_dn_control); -- Samba Shared Repository