svn commit: samba r20709 - in branches/SAMBA_4_0/source: dsdb/repl
dsdb/samdb dsdb/samdb/ldb_modules torture/libnet
metze at samba.org
metze at samba.org
Fri Jan 12 16:02:12 GMT 2007
Author: metze
Date: 2007-01-12 16:02:10 +0000 (Fri, 12 Jan 2007)
New Revision: 20709
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=20709
Log:
pass a repsFromTo1 struct down as it contains all needed info for the source dsa
and the highwater mark vector
metze
Modified:
branches/SAMBA_4_0/source/dsdb/repl/replicated_objects.c
branches/SAMBA_4_0/source/dsdb/samdb/ldb_modules/repl_meta_data.c
branches/SAMBA_4_0/source/dsdb/samdb/samdb.h
branches/SAMBA_4_0/source/torture/libnet/libnet_BecomeDC.c
Changeset:
Modified: branches/SAMBA_4_0/source/dsdb/repl/replicated_objects.c
===================================================================
--- branches/SAMBA_4_0/source/dsdb/repl/replicated_objects.c 2007-01-12 14:26:08 UTC (rev 20708)
+++ branches/SAMBA_4_0/source/dsdb/repl/replicated_objects.c 2007-01-12 16:02:10 UTC (rev 20709)
@@ -183,8 +183,7 @@
const struct drsuapi_DsReplicaObjectListItemEx *first_object,
uint32_t linked_attributes_count,
const struct drsuapi_DsReplicaLinkedAttribute *linked_attributes,
- const struct GUID *source_dsa_invocation_id,
- const struct drsuapi_DsReplicaHighWaterMark *new_highwatermark,
+ const struct repsFromTo1 *source_dsa,
const struct drsuapi_DsReplicaCursor2CtrEx *uptodateness_vector,
TALLOC_CTX *mem_ctx,
struct dsdb_extended_replicated_objects **_out)
@@ -205,9 +204,8 @@
out->partition_dn = ldb_dn_new(out, ldb, partition_dn);
W_ERROR_HAVE_NO_MEMORY(out->partition_dn);
- out->source_dsa_invocation_id = source_dsa_invocation_id;
- out->new_highwatermark = new_highwatermark;
- out->uptodateness_vector = uptodateness_vector;
+ out->source_dsa = source_dsa;
+ out->uptodateness_vector= uptodateness_vector;
out->num_objects = object_count;
out->objects = talloc_array(out,
Modified: branches/SAMBA_4_0/source/dsdb/samdb/ldb_modules/repl_meta_data.c
===================================================================
--- branches/SAMBA_4_0/source/dsdb/samdb/ldb_modules/repl_meta_data.c 2007-01-12 14:26:08 UTC (rev 20708)
+++ branches/SAMBA_4_0/source/dsdb/samdb/ldb_modules/repl_meta_data.c 2007-01-12 16:02:10 UTC (rev 20709)
@@ -677,6 +677,9 @@
return replmd_replicated_request_error(ar, ret);
}
+ /*
+ * first create the new replUpToDateVector
+ */
ouv_value = ldb_msg_find_ldb_val(ar->sub.search_msg, "replUpToDateVector");
if (ouv_value) {
nt_status = ndr_pull_struct_blob(ouv_value, ar->sub.mem_ctx, &ouv,
@@ -743,7 +746,7 @@
*/
found = false;
for (j=0; j < ni; j++) {
- if (!GUID_equal(ar->objs->source_dsa_invocation_id,
+ if (!GUID_equal(&ar->objs->source_dsa->source_dsa_invocation_id,
&nuv.ctr.ctr2.cursors[j].source_dsa_invocation_id)) {
continue;
}
@@ -757,7 +760,7 @@
* and use the tmp_highest_usn because this is what we have just applied
* to our ldb
*/
- nuv.ctr.ctr2.cursors[j].highest_usn = ar->objs->new_highwatermark->tmp_highest_usn;
+ nuv.ctr.ctr2.cursors[j].highest_usn = ar->objs->source_dsa->highwatermark.tmp_highest_usn;
nuv.ctr.ctr2.cursors[j].last_sync_success = now;
break;
}
@@ -769,8 +772,8 @@
* and use the tmp_highest_usn because this is what we have just applied
* to our ldb
*/
- nuv.ctr.ctr2.cursors[ni].source_dsa_invocation_id= *ar->objs->source_dsa_invocation_id;
- nuv.ctr.ctr2.cursors[ni].highest_usn = ar->objs->new_highwatermark->tmp_highest_usn;
+ nuv.ctr.ctr2.cursors[ni].source_dsa_invocation_id= ar->objs->source_dsa->source_dsa_invocation_id;
+ nuv.ctr.ctr2.cursors[ni].highest_usn = ar->objs->source_dsa->highwatermark.tmp_highest_usn;
nuv.ctr.ctr2.cursors[ni].last_sync_success = now;
ni++;
}
Modified: branches/SAMBA_4_0/source/dsdb/samdb/samdb.h
===================================================================
--- branches/SAMBA_4_0/source/dsdb/samdb/samdb.h 2007-01-12 14:26:08 UTC (rev 20708)
+++ branches/SAMBA_4_0/source/dsdb/samdb/samdb.h 2007-01-12 16:02:10 UTC (rev 20709)
@@ -50,8 +50,7 @@
struct dsdb_extended_replicated_objects {
struct ldb_dn *partition_dn;
- const struct GUID *source_dsa_invocation_id;
- const struct drsuapi_DsReplicaHighWaterMark *new_highwatermark;
+ const struct repsFromTo1 *source_dsa;
const struct drsuapi_DsReplicaCursor2CtrEx *uptodateness_vector;
uint32_t num_objects;
Modified: branches/SAMBA_4_0/source/torture/libnet/libnet_BecomeDC.c
===================================================================
--- branches/SAMBA_4_0/source/torture/libnet/libnet_BecomeDC.c 2007-01-12 14:26:08 UTC (rev 20708)
+++ branches/SAMBA_4_0/source/torture/libnet/libnet_BecomeDC.c 2007-01-12 16:02:10 UTC (rev 20709)
@@ -259,39 +259,57 @@
struct drsuapi_DsReplicaObjectListItemEx *cur;
uint32_t linked_attributes_count;
struct drsuapi_DsReplicaLinkedAttribute *linked_attributes;
- const struct GUID *source_dsa_invocation_id;
- const struct drsuapi_DsReplicaHighWaterMark *new_highwatermark;
const struct drsuapi_DsReplicaCursor2CtrEx *uptodateness_vector;
struct dsdb_extended_replicated_objects *objs;
+ struct repsFromTo1 *s_dsa;
+ char *tmp_dns_name;
uint32_t i;
+ s_dsa = talloc_zero(s, struct repsFromTo1);
+ NT_STATUS_HAVE_NO_MEMORY(s_dsa);
+ s_dsa->other_info = talloc(s_dsa, struct repsFromTo1OtherInfo);
+ NT_STATUS_HAVE_NO_MEMORY(s_dsa->other_info);
+
switch (c->ctr_level) {
case 1:
- mapping_ctr = &c->ctr1->mapping_ctr;
- total_object_count = c->ctr1->total_object_count;
- object_count = s->schema_part.object_count;
- first_object = s->schema_part.first_object;
- linked_attributes_count = 0;
- linked_attributes = NULL;
- source_dsa_invocation_id= &c->ctr1->source_dsa_invocation_id;
- new_highwatermark = &c->ctr1->new_highwatermark;
- uptodateness_vector = NULL; /* TODO: map it */
+ mapping_ctr = &c->ctr1->mapping_ctr;
+ total_object_count = c->ctr1->total_object_count;
+ object_count = s->schema_part.object_count;
+ first_object = s->schema_part.first_object;
+ linked_attributes_count = 0;
+ linked_attributes = NULL;
+ s_dsa->highwatermark = c->ctr1->new_highwatermark;
+ s_dsa->source_dsa_obj_guid = c->ctr1->source_dsa_guid;
+ s_dsa->source_dsa_invocation_id = c->ctr1->source_dsa_invocation_id;
+ uptodateness_vector = NULL; /* TODO: map it */
break;
case 6:
- mapping_ctr = &c->ctr6->mapping_ctr;
- total_object_count = c->ctr6->total_object_count;
- object_count = s->schema_part.object_count;
- first_object = s->schema_part.first_object;
- linked_attributes_count = 0; /* TODO: ! */
- linked_attributes = NULL; /* TODO: ! */;
- source_dsa_invocation_id= &c->ctr6->source_dsa_invocation_id;
- new_highwatermark = &c->ctr6->new_highwatermark;
- uptodateness_vector = c->ctr6->uptodateness_vector;
+ mapping_ctr = &c->ctr6->mapping_ctr;
+ total_object_count = c->ctr6->total_object_count;
+ object_count = s->schema_part.object_count;
+ first_object = s->schema_part.first_object;
+ linked_attributes_count = 0; /* TODO: ! */
+ linked_attributes = NULL; /* TODO: ! */;
+ s_dsa->highwatermark = c->ctr6->new_highwatermark;
+ s_dsa->source_dsa_obj_guid = c->ctr6->source_dsa_guid;
+ s_dsa->source_dsa_invocation_id = c->ctr6->source_dsa_invocation_id;
+ uptodateness_vector = c->ctr6->uptodateness_vector;
break;
default:
return NT_STATUS_INVALID_PARAMETER;
}
+ s_dsa->replica_flags = DRSUAPI_DS_REPLICA_NEIGHBOUR_WRITEABLE
+ | DRSUAPI_DS_REPLICA_NEIGHBOUR_SYNC_ON_STARTUP
+ | DRSUAPI_DS_REPLICA_NEIGHBOUR_DO_SCHEDULED_SYNCS;
+ memset(s_dsa->schedule, 0x11, sizeof(s_dsa->schedule));
+
+ tmp_dns_name = GUID_string(s_dsa->other_info, &s_dsa->source_dsa_obj_guid);
+ NT_STATUS_HAVE_NO_MEMORY(tmp_dns_name);
+ tmp_dns_name = talloc_asprintf_append(tmp_dns_name, "._msdcs.%s", c->forest->dns_name);
+ NT_STATUS_HAVE_NO_MEMORY(tmp_dns_name);
+ s_dsa->other_info->dns_name = tmp_dns_name;
+
for (cur = first_object; cur; cur = cur->next_object) {
bool is_attr = false;
bool is_class = false;
@@ -368,8 +386,7 @@
first_object,
linked_attributes_count,
linked_attributes,
- source_dsa_invocation_id,
- new_highwatermark,
+ s_dsa,
uptodateness_vector,
s, &objs);
if (!W_ERROR_IS_OK(status)) {
@@ -388,6 +405,7 @@
}
}
+ talloc_free(s_dsa);
talloc_free(objs);
return NT_STATUS_OK;
}
@@ -472,39 +490,57 @@
struct drsuapi_DsReplicaObjectListItemEx *first_object;
uint32_t linked_attributes_count;
struct drsuapi_DsReplicaLinkedAttribute *linked_attributes;
- const struct GUID *source_dsa_invocation_id;
- const struct drsuapi_DsReplicaHighWaterMark *new_highwatermark;
const struct drsuapi_DsReplicaCursor2CtrEx *uptodateness_vector;
struct dsdb_extended_replicated_objects *objs;
+ struct repsFromTo1 *s_dsa;
+ char *tmp_dns_name;
uint32_t i;
+ s_dsa = talloc_zero(s, struct repsFromTo1);
+ NT_STATUS_HAVE_NO_MEMORY(s_dsa);
+ s_dsa->other_info = talloc(s_dsa, struct repsFromTo1OtherInfo);
+ NT_STATUS_HAVE_NO_MEMORY(s_dsa->other_info);
+
switch (c->ctr_level) {
case 1:
- mapping_ctr = &c->ctr1->mapping_ctr;
- total_object_count = c->ctr1->total_object_count;
- object_count = c->ctr1->object_count;
- first_object = c->ctr1->first_object;
- linked_attributes_count = 0;
- linked_attributes = NULL;
- source_dsa_invocation_id= &c->ctr1->source_dsa_invocation_id;
- new_highwatermark = &c->ctr1->new_highwatermark;
- uptodateness_vector = NULL; /* TODO: map it */
+ mapping_ctr = &c->ctr1->mapping_ctr;
+ total_object_count = c->ctr1->total_object_count;
+ object_count = c->ctr1->object_count;
+ first_object = c->ctr1->first_object;
+ linked_attributes_count = 0;
+ linked_attributes = NULL;
+ s_dsa->highwatermark = c->ctr1->new_highwatermark;
+ s_dsa->source_dsa_obj_guid = c->ctr1->source_dsa_guid;
+ s_dsa->source_dsa_invocation_id = c->ctr1->source_dsa_invocation_id;
+ uptodateness_vector = NULL; /* TODO: map it */
break;
case 6:
- mapping_ctr = &c->ctr6->mapping_ctr;
- total_object_count = c->ctr6->total_object_count;
- object_count = c->ctr6->object_count;
- first_object = c->ctr6->first_object;
- linked_attributes_count = c->ctr6->linked_attributes_count;
- linked_attributes = c->ctr6->linked_attributes;
- source_dsa_invocation_id= &c->ctr6->source_dsa_invocation_id;
- new_highwatermark = &c->ctr6->new_highwatermark;
- uptodateness_vector = c->ctr6->uptodateness_vector;
+ mapping_ctr = &c->ctr6->mapping_ctr;
+ total_object_count = c->ctr6->total_object_count;
+ object_count = c->ctr6->object_count;
+ first_object = c->ctr6->first_object;
+ linked_attributes_count = c->ctr6->linked_attributes_count;
+ linked_attributes = c->ctr6->linked_attributes;
+ s_dsa->highwatermark = c->ctr6->new_highwatermark;
+ s_dsa->source_dsa_obj_guid = c->ctr6->source_dsa_guid;
+ s_dsa->source_dsa_invocation_id = c->ctr6->source_dsa_invocation_id;
+ uptodateness_vector = c->ctr6->uptodateness_vector;
break;
default:
return NT_STATUS_INVALID_PARAMETER;
}
+ s_dsa->replica_flags = DRSUAPI_DS_REPLICA_NEIGHBOUR_WRITEABLE
+ | DRSUAPI_DS_REPLICA_NEIGHBOUR_SYNC_ON_STARTUP
+ | DRSUAPI_DS_REPLICA_NEIGHBOUR_DO_SCHEDULED_SYNCS;
+ memset(s_dsa->schedule, 0x11, sizeof(s_dsa->schedule));
+
+ tmp_dns_name = GUID_string(s_dsa->other_info, &s_dsa->source_dsa_obj_guid);
+ NT_STATUS_HAVE_NO_MEMORY(tmp_dns_name);
+ tmp_dns_name = talloc_asprintf_append(tmp_dns_name, "._msdcs.%s", c->forest->dns_name);
+ NT_STATUS_HAVE_NO_MEMORY(tmp_dns_name);
+ s_dsa->other_info->dns_name = tmp_dns_name;
+
if (total_object_count) {
DEBUG(0,("Partition[%s] objects[%u/%u]\n",
c->partition->nc.dn, object_count, total_object_count));
@@ -521,8 +557,7 @@
first_object,
linked_attributes_count,
linked_attributes,
- source_dsa_invocation_id,
- new_highwatermark,
+ s_dsa,
uptodateness_vector,
s, &objs);
if (!W_ERROR_IS_OK(status)) {
@@ -540,6 +575,7 @@
NDR_PRINT_DEBUG(replPropertyMetaDataBlob, objs->objects[i].meta_data);
}
}
+ talloc_free(s_dsa);
talloc_free(objs);
for (i=0; i < linked_attributes_count; i++) {
More information about the samba-cvs
mailing list