Author: brad
Date: 2005-08-04 16:17:36 +0000 (Thu, 04 Aug 2005)
New Revision: 9061

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

Log:
 [EMAIL PROTECTED]:  j0j0 | 2005-08-03 21:01:02 -0600
 Start using libnet_Join() for DC join.

Modified:
   branches/SOC/SAMBA_4_0/
   branches/SOC/SAMBA_4_0/source/torture/rpc/dssync.c


Changeset:

Property changes on: branches/SOC/SAMBA_4_0
___________________________________________________________________
Name: svk:merge
   - 0c0555d6-39d7-0310-84fc-f1cc0bd64818:/branches/SAMBA_4_0:9033
d349723c-e9fc-0310-b8a8-fdedf1c27407:/local/SAMBA_4_0:5246
d349723c-e9fc-0310-b8a8-fdedf1c27407:/local/samba-SAMBA_4_0:5244
   + 0c0555d6-39d7-0310-84fc-f1cc0bd64818:/branches/SAMBA_4_0:9033
d349723c-e9fc-0310-b8a8-fdedf1c27407:/local/SAMBA_4_0:5249
d349723c-e9fc-0310-b8a8-fdedf1c27407:/local/samba-SAMBA_4_0:5244

Modified: branches/SOC/SAMBA_4_0/source/torture/rpc/dssync.c
===================================================================
--- branches/SOC/SAMBA_4_0/source/torture/rpc/dssync.c  2005-08-04 16:11:26 UTC 
(rev 9060)
+++ branches/SOC/SAMBA_4_0/source/torture/rpc/dssync.c  2005-08-04 16:17:36 UTC 
(rev 9061)
@@ -22,6 +22,7 @@
 
 #include "includes.h"
 #include "lib/cmdline/popt_common.h"
+#include "libnet/libnet.h"
 #include "librpc/gen_ndr/ndr_drsuapi.h"
 #include "librpc/gen_ndr/ndr_samr.h"
 #include "libcli/ldap/ldap.h"
@@ -43,6 +44,7 @@
        struct dcerpc_binding *drsuapi_binding;
        struct ldb_context *ldb_ctx;
        struct ldb_message *ldb_msg;
+       struct libnet_context *libnet_ctx;
        const char *ldap_url;
 
        const char *domain_dn;
@@ -141,32 +143,23 @@
                        "dn: %s\n"
                        "changetype: delete\n",
                        ctx->new_dc.dc_info2.ntds_dn);
-
-               ldb_req = ldb_ldif_read_string(ldb_ctx,&ldif); 
                */
        
-       /* 
-I'm pretty sure this delete fails because dcerpc_drsuapi_DsAddEntry Fails 
DCERPC_FAULT_NDR 
-in test_CompleteJoin().
-
+               /* 
+               This delete fails because dcerpc_drsuapi_DsAddEntry Fails 
DCERPC_FAULT_NDR 
+               in test_CompleteJoin().
+               */
                printf("test_destroy_context(): deleting ntds_dn 
%s.\n",ctx->new_dc.dc_info2.ntds_dn);
                rtn = ldb_delete(ctx->ldb_ctx,ctx->new_dc.dc_info2.ntds_dn);
                if (rtn != 0) {
                        printf("test_destroy_context(): ldb_delete(ntds_dn) 
failed: %s.\n",
                                ldb_errstring(ctx->ldb_ctx));
+                       /* I want ldb_delete(server_dn) to get called.
+                          I should just change the ordering or
+                          not have this return at all perhaps.
                        return;
+                       */
                }
-       */
-       
-
-               /* req = ldap_ldif2msg(ctx, ldif);
-                req.messageid = ;
-                req->type = LDAP_TAG_DelRequest;
-                req->r.DelRequest.dn = ctx->new_dc.dc_info2.ntds_dn;
-                req.num_controls = ;
-                req.controls = ;
-               rtn = ldap_transaction(ctx->admin.ldap.conn, req);
-               */
        }
 
        {
@@ -177,7 +170,6 @@
                        "dn: %s\n"
                        "changetype: delete\n",
                        ctx->new_dc.dc_info2.server_dn);
-               ldb_req = ldb_ldif_read_string(ldb_ctx,&ldif);
                */
 
                printf("test_destroy_context(): deleting server_dn 
%s.\n",ctx->new_dc.dc_info2.server_dn);
@@ -312,7 +304,7 @@
        ctx->schema_dn = talloc_asprintf(ctx, "CN=Schema,%s", ctx->config_dn);
 
        ctx->new_dc.dc_info2.server_dn = talloc_asprintf(ctx,
-/*             
"CN=%s,CN=Servers,CN=Standardname-des-ersten-Standorts,CN=Sites,CN=Configuration,%s",
 */
+               
/*"CN=%s,CN=Servers,CN=Standardname-des-ersten-Standorts,CN=Sites,CN=Configuration,%s",*/
                
"CN=%s,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,%s",
                TEST_MACHINE_NAME, ctx->domain_dn);
 
@@ -330,6 +322,8 @@
        BOOL ret = True;
        int rtn;
        char *old_dn;   
+       struct libnet_Join libnet_r;
+
        rtn = ldb_connect(ctx->ldb_ctx,ctx->ldap_url,0,NULL);
        if (rtn != 0) {
                printf("test_CompleteJoin(): ldb_connect() failed: %s.\n",
@@ -340,6 +334,8 @@
        
        /* userAccountControl: 532480 0x82000 
         * UF_SERVER_TRUST_ACCOUNT|UF_TRUSTED_FOR_DELEGATION     
+       */
+       /* 
        ldif = talloc_asprintf(ctx,
                "dn: %s\n"
                "changetype: modify\n"
@@ -348,8 +344,6 @@
                ctx->new_dc.dc_info2.computer_dn,
                UF_SERVER_TRUST_ACCOUNT|UF_TRUSTED_FOR_DELEGATION);
        */
-/* = UF_SERVER_TRUST_ACCOUNT|UF_TRUSTED_FOR_DELEGATION;        */
-
        ctx->ldb_msg = ldb_msg_new(ctx);
        
ldb_msg_add_fmt(ctx->ldb_ctx,ctx->ldb_msg,"userAccountControl","%u",UF_SERVER_TRUST_ACCOUNT|UF_TRUSTED_FOR_DELEGATION);
 
        ctx->ldb_msg->dn = ctx->new_dc.dc_info2.computer_dn;
@@ -364,8 +358,6 @@
        printf("ldb_modify() succeeded.\n");
        ldb_msg_free(ctx->ldb_ctx,ctx->ldb_msg);
 
-       /* rtn = ldap_transaction(ctx->admin.ldap.conn, req); */
-
        /* add entry CN=<NETBIOSNAME>,CN=Servers
         * objectClass: server
         * systemFlags: 50000000 0x2FAF080
@@ -381,7 +373,6 @@
                ctx->new_dc.dc_info2.server_dn,
                50000000,
                ctx->new_dc.dc_info2.computer_dn);      
-       ldb_req = ldb_ldif_read_string(ldb_ctx,&ldif);  
        */
 
        printf("dn: %s\nserverReference: 
%s.\n",ctx->new_dc.dc_info2.server_dn,ctx->new_dc.dc_info2.computer_dn);
@@ -401,12 +392,11 @@
        }
        printf("ldb_add() succeeded.\n");
        ldb_msg_free(ctx->ldb_ctx,ctx->ldb_msg);
-       /* rtn = ldap_transaction(ctx->admin.ldap.conn, req); */
 
        /* add entry CN=NTDS Settings
         * 
         */
-/*
+       /*
        typedef [noprint] struct {
                drsuapi_DsReplicaObjectListItem *next_object;
                drsuapi_DsReplicaObject object;
@@ -469,7 +459,8 @@
                uint32 unknown1;
                drsuapi_DsReplicaAttributeCtr attribute_ctr;
        } drsuapi_DsReplicaObject;
-*/     {
+       */      
+       {
                struct drsuapi_DsAddEntry r;
                struct drsuapi_DsReplicaObject *object;
                struct drsuapi_DsReplicaObjectIdentifier _identifier;
@@ -716,7 +707,32 @@
                i++;
 
                attribute_ctr->num_attributes           = i;
-
+               
+               
+               
+               printf("The libnet_Join struct has a domain_name element. I am 
going to assume it is my ldap base dn.\n");
+               printf("That said, my ldap base dn is: %s.\n",ctx->domain_dn);
+               /* ctx->domain_dn is the ldap dn.*/ 
+               libnet_r.in.domain_name = 
talloc_asprintf(ctx,"%s",ctx->domain_dn);
+               libnet_r.in.secure_channel_type = SEC_CHAN_BDC;
+ 
+               printf("attempting a DC join with libnet_Join()\n");
+               /*
+               we get the following error when libnet_Join gets reached,
+               probably because we haven't provisioned these ldb's!
+               Unable to open tdb '/usr/local/samba/private/secrets.ldb'
+               Failed to connect to '/usr/local/samba/private/secrets.ldb'
+               */
+               status = libnet_Join(ctx->libnet_ctx,ctx,&libnet_r);
+               if (!NT_STATUS_IS_OK(status)) {
+                       const char *errstr = nt_errstr(status);
+                       if (NT_STATUS_EQUAL(status, NT_STATUS_NET_WRITE_FAULT)) 
{
+                               errstr = dcerpc_errstr(ctx, 
ctx->admin.drsuapi.pipe->last_fault_code);
+                       }
+                       printf("libnet_Join() failed - %s\n", errstr);
+                       ret = False;
+               }
+               /*
                status = dcerpc_drsuapi_DsAddEntry(ctx->admin.drsuapi.pipe, 
ctx, &r);
                if (!NT_STATUS_IS_OK(status)) {
                        const char *errstr = nt_errstr(status);
@@ -729,11 +745,12 @@
                        printf("DsAddEntry failed - %s\n", 
win_errstr(r.out.result));
                        ret = False;
                }
+               */
        }
 
 {
 #include <unistd.h>
-/*     int sec = 5000;*/
+       /*int sec = 5000;*/
        int sec = 10;
        printf("Sleep for %d secs\n", sec);
        sleep(sec);
@@ -742,7 +759,7 @@
        /* modrdn to OU=Domain Controllers,...
        */
 
-/*     ldif = talloc_asprintf(ctx,
+       /*ldif = talloc_asprintf(ctx,
                "dn: %s\n"
                "changetype: modrdn\n"
                "newrdn: CN=%s\n"
@@ -751,22 +768,8 @@
                ctx->new_dc.dc_info2.computer_dn,
                TEST_MACHINE_NAME,
                ctx->domain_dn);
-       req = ldap_ldif2msg(ctx, ldif);
-       ldb_req = ldb_ldif_read_string(ldb_ctx,&ldif);
-       rtn = ldb_modify(ldb_ctx,ldb_req->msg);
-       if (rtn != 0) {
-               printf("test_CompleteJoin(): ldb_modify() failed: %s.\n",
-                ldb_errstring(ldb_ctx));
-               return False;
-       }
-*/
-/*     rtn = ldap_transaction(ctx->admin.ldap.conn, req);      */
+       */
 
-/*
-               ctx->new_dc.dc_info2.computer_dn,
-               TEST_MACHINE_NAME,
-               ctx->domain_dn);
-*/     
        old_dn = talloc_asprintf(ctx,
                        "%s",
                        ctx->new_dc.dc_info2.computer_dn);
@@ -802,7 +805,7 @@
        mem_ctx = talloc_init("torture_rpc_dssync");
        ctx = test_create_context(mem_ctx);
        ctx->ldb_ctx = ldb_init(mem_ctx);
-       
+       ctx->libnet_ctx = libnet_context_init(mem_ctx);
        rtn = ldb_connect(ctx->ldb_ctx,ctx->ldap_url,0,NULL);
        printf("Connected to %s.\n",ctx->ldap_url);
        

Reply via email to