svn commit: samba r9061 - in branches/SOC/SAMBA_4_0: .
source/torture/rpc
brad at samba.org
brad at samba.org
Thu Aug 4 16:17:37 GMT 2005
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:
r5249 at buttercup: 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);
More information about the samba-cvs
mailing list