[SCM] Samba Shared Repository - branch master updated

Matthieu Patou mat at samba.org
Tue Nov 1 12:03:02 MDT 2011


The branch, master has been updated
       via  f5fde21 s4-socket: do not segfault if the socket is NULL
       via  d95826c s4-join: Send ReplicaUpdateRefs at the end of the join
       via  3cdfcb9 s4-domain-join: do not add DFSR entries when joining, this should be done in the code handling DFSR replication
       via  dba46ca s4-vampire: Fix the output of fetched object for the schema-dn
      from  4b67a10 Simplify handling of user add command.

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


- Log -----------------------------------------------------------------
commit f5fde21ec15c7086311ed297601471b75f03c917
Author: Matthieu Patou <mat at matws.net>
Date:   Wed Oct 26 23:58:15 2011 +0200

    s4-socket: do not segfault if the socket is NULL
    
    Autobuild-User: Matthieu Patou <mat at samba.org>
    Autobuild-Date: Tue Nov  1 19:02:52 CET 2011 on sn-devel-104

commit d95826c218413e4add17c70184bfee7e38de97ff
Author: Matthieu Patou <mat at matws.net>
Date:   Tue Oct 25 20:16:38 2011 +0200

    s4-join: Send ReplicaUpdateRefs at the end of the join

commit 3cdfcb93949bcee15b489e089156eeca84f39483
Author: Matthieu Patou <mat at matws.net>
Date:   Sun Oct 23 22:27:08 2011 +0200

    s4-domain-join: do not add DFSR entries when joining, this should be done in the code handling DFSR replication

commit dba46ca771fcf1ba77db68f6436c6564e5a7e1b6
Author: Matthieu Patou <mat at matws.net>
Date:   Sun Oct 23 15:01:29 2011 +0200

    s4-vampire: Fix the output of fetched object for the schema-dn

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

Summary of changes:
 source4/lib/socket/socket.c            |    3 +++
 source4/libnet/libnet_vampire.c        |   10 ++++++++--
 source4/scripting/python/samba/join.py |   29 +++++++++++++++++++----------
 3 files changed, 30 insertions(+), 12 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source4/lib/socket/socket.c b/source4/lib/socket/socket.c
index 2dbdaad..42eb53a 100644
--- a/source4/lib/socket/socket.c
+++ b/source4/lib/socket/socket.c
@@ -352,6 +352,9 @@ _PUBLIC_ struct tsocket_address *socket_address_to_tsocket_address(TALLOC_CTX *m
 	struct tsocket_address *r;
 	int ret;
 
+	if (!a) {
+		return NULL;
+	}
 	if (a->sockaddr) {
 		ret = tsocket_address_bsd_from_sockaddr(mem_ctx,
 							a->sockaddr,
diff --git a/source4/libnet/libnet_vampire.c b/source4/libnet/libnet_vampire.c
index ef531a4..a11c9cb 100644
--- a/source4/libnet/libnet_vampire.c
+++ b/source4/libnet/libnet_vampire.c
@@ -519,6 +519,7 @@ NTSTATUS libnet_vampire_cb_schema_chunk(void *private_data,
 	WERROR status;
 	const struct drsuapi_DsReplicaOIDMapping_Ctr *mapping_ctr;
 	uint32_t nc_object_count;
+	uint32_t nc_total_received = 0;
 	uint32_t object_count;
 	struct drsuapi_DsReplicaObjectListItemEx *first_object;
 	struct drsuapi_DsReplicaObjectListItemEx *cur;
@@ -549,13 +550,18 @@ NTSTATUS libnet_vampire_cb_schema_chunk(void *private_data,
 		return NT_STATUS_INVALID_PARAMETER;
 	}
 
+	if (!s->schema_part.first_object) {
+		nc_total_received = object_count;
+	} else {
+		nc_total_received = s->schema_part.object_count + object_count;
+	}
 	if (nc_object_count) {
 		DEBUG(0,("Schema-DN[%s] objects[%u/%u] linked_values[%u/%u]\n",
-			c->partition->nc.dn, object_count, nc_object_count,
+			c->partition->nc.dn, nc_total_received, nc_object_count,
 			linked_attributes_count, nc_linked_attributes_count));
 	} else {
 		DEBUG(0,("Schema-DN[%s] objects[%u] linked_values[%u]\n",
-		c->partition->nc.dn, object_count, linked_attributes_count));
+		c->partition->nc.dn, nc_total_received, linked_attributes_count));
 	}
 
 	if (!s->self_made_schema) {
diff --git a/source4/scripting/python/samba/join.py b/source4/scripting/python/samba/join.py
index 6a8ac97..b01ac0c 100644
--- a/source4/scripting/python/samba/join.py
+++ b/source4/scripting/python/samba/join.py
@@ -30,7 +30,6 @@ from samba.credentials import Credentials, DONT_USE_KERBEROS
 from samba.provision import secretsdb_self_join, provision, provision_fill, FILL_DRS, FILL_SUBDOMAIN
 from samba.schema import Schema
 from samba.net import Net
-from samba.dcerpc import security
 import logging
 import talloc
 import random
@@ -471,15 +470,6 @@ class dc_join(object):
                 "fromServer" : ctx.dc_ntds_dn}
             ctx.samdb.add(rec)
 
-        if ctx.topology_dn and ctx.acct_dn:
-            print "Adding %s" % ctx.topology_dn
-            rec = {
-                "dn" : ctx.topology_dn,
-                "objectclass" : "msDFSR-Member",
-                "msDFSR-ComputerReference" : ctx.acct_dn,
-                "serverReference" : ctx.ntds_dn}
-            ctx.samdb.add(rec)
-
         if ctx.acct_dn:
             print "Adding SPNs to %s" % ctx.acct_dn
             m = ldb.Message()
@@ -685,10 +675,29 @@ class dc_join(object):
         else:
             ctx.local_samdb.transaction_commit()
 
+    def send_DsReplicaUpdateRefs(ctx, dn):
+        r = drsuapi.DsReplicaUpdateRefsRequest1()
+        r.naming_context = drsuapi.DsReplicaObjectIdentifier()
+        r.naming_context.dn = str(dn)
+        r.naming_context.guid = misc.GUID("00000000-0000-0000-0000-000000000000")
+        r.naming_context.sid = security.dom_sid("S-0-0")
+        r.dest_dsa_guid = ctx.ntds_guid
+        r.dest_dsa_dns_name = "%s._msdcs.%s" % (str(ctx.ntds_guid), ctx.dnsforest)
+        r.options = drsuapi.DRSUAPI_DRS_ADD_REF | drsuapi.DRSUAPI_DRS_DEL_REF
+        if not ctx.RODC:
+            r.options |= drsuapi.DRSUAPI_DRS_WRIT_REP
+
+        if ctx.drsuapi:
+            ctx.drsuapi.DsReplicaUpdateRefs(ctx.drsuapi_handle, 1, r)
 
     def join_finalise(ctx):
         '''finalise the join, mark us synchronised and setup secrets db'''
 
+        print "Sending DsReplicateUpdateRefs for all the partitions"
+        ctx.send_DsReplicaUpdateRefs(ctx.schema_dn)
+        ctx.send_DsReplicaUpdateRefs(ctx.config_dn)
+        ctx.send_DsReplicaUpdateRefs(ctx.base_dn)
+
         print "Setting isSynchronized and dsServiceName"
         m = ldb.Message()
         m.dn = ldb.Dn(ctx.local_samdb, '@ROOTDSE')


-- 
Samba Shared Repository


More information about the samba-cvs mailing list