svn commit: samba r20109 - in branches/SAMBA_4_0/source/libnet: .

metze at samba.org metze at samba.org
Mon Dec 11 17:04:43 GMT 2006


Author: metze
Date: 2006-12-11 17:04:43 +0000 (Mon, 11 Dec 2006)
New Revision: 20109

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=20109

Log:
let libnet_BecomeDC() work against w2k servers

metze
Modified:
   branches/SAMBA_4_0/source/libnet/libnet_become_dc.c


Changeset:
Modified: branches/SAMBA_4_0/source/libnet/libnet_become_dc.c
===================================================================
--- branches/SAMBA_4_0/source/libnet/libnet_become_dc.c	2006-12-11 16:45:31 UTC (rev 20108)
+++ branches/SAMBA_4_0/source/libnet/libnet_become_dc.c	2006-12-11 17:04:43 UTC (rev 20109)
@@ -355,7 +355,11 @@
 	ret = ldb_search(s->ldap1.ldb, basedn, LDB_SCOPE_BASE,
 			 "(objectClass=*)", attrs, &r);
 	talloc_free(basedn);
-	if (ret != LDB_SUCCESS) {
+	if (ret == LDB_ERR_NO_SUCH_OBJECT) {
+		/* w2k doesn't have this object */
+		s->ads_options.w2k3_update_revision = 0;
+		return NT_STATUS_OK;
+	} else if (ret != LDB_SUCCESS) {
 		return NT_STATUS_LDAP(ret);
 	} else if (r->count != 1) {
 		talloc_free(r);
@@ -1053,10 +1057,21 @@
 	struct drsuapi_DsReplicaObjectIdentifier *identifier;
 	uint32_t num_attrs, i = 0;
 	struct drsuapi_DsReplicaAttribute *attrs;
+	bool w2k3;
 
 	/* choose a random invocationId */
 	s->dest_dsa.invocation_id = GUID_random();
 
+	/*
+	 * if the schema version indicates w2k3, then
+	 * also send some w2k3 specific attributes
+	 */
+	if (s->ads_options.schema_object_version >= 30) {
+		w2k3 = true;
+	} else {
+		w2k3 = false;
+	}
+
 	r = talloc_zero(s, struct drsuapi_DsAddEntry);
 	if (composite_nomem(r, c)) return;
 
@@ -1249,7 +1264,7 @@
 	}
 
 	/* msDS-hasMasterNCs: ... */
-	{
+	if (w2k3) {
 		struct drsuapi_DsAttributeValueDNString *vs;
 		struct drsuapi_DsReplicaObjectIdentifier3 *v;
 
@@ -1307,7 +1322,7 @@
 	}
 
 	/* msDS-HasDomainNCs: <domain_partition> */
-	{
+	if (w2k3) {
 		struct drsuapi_DsAttributeValueDNString *vs;
 		struct drsuapi_DsReplicaObjectIdentifier3 *v;
 
@@ -1331,7 +1346,7 @@
 	}
 
 	/* msDS-Behavior-Version */
-	{
+	if (w2k3) {
 		struct drsuapi_DsAttributeValueUINT32 *vs;
 		uint32_t *v;
 



More information about the samba-cvs mailing list