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

metze at samba.org metze at samba.org
Wed Dec 6 12:25:42 GMT 2006


Author: metze
Date: 2006-12-06 12:25:41 +0000 (Wed, 06 Dec 2006)
New Revision: 20053

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

Log:
implement the DsBind on the 1st drsuapi connection

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-06 12:15:07 UTC (rev 20052)
+++ branches/SAMBA_4_0/source/libnet/libnet_become_dc.c	2006-12-06 12:25:41 UTC (rev 20053)
@@ -887,6 +887,11 @@
 	composite_continue(c, creq, recv_fn, s);
 }
 
+static void becomeDC_drsuapi_bind_send(struct libnet_BecomeDC_state *s,
+				       struct becomeDC_drsuapi *drsuapi,
+				       void (*recv_fn)(struct rpc_request *req));
+static void becomeDC_drsuapi1_bind_recv(struct rpc_request *req);
+
 static void becomeDC_drsuapi1_connect_recv(struct composite_context *req)
 {
 	struct libnet_BecomeDC_state *s = talloc_get_type(req->async.private_data,
@@ -896,6 +901,40 @@
 	c->status = dcerpc_pipe_connect_b_recv(req, s, &s->drsuapi1.pipe);
 	if (!composite_is_ok(c)) return;
 
+	becomeDC_drsuapi_bind_send(s, &s->drsuapi1, becomeDC_drsuapi1_bind_recv);
+}
+
+static void becomeDC_drsuapi_bind_send(struct libnet_BecomeDC_state *s,
+				       struct becomeDC_drsuapi *drsuapi,
+				       void (*recv_fn)(struct rpc_request *req))
+{
+	struct composite_context *c = s->creq;
+	struct rpc_request *req;
+
+	GUID_from_string(DRSUAPI_DS_BIND_GUID_W2K3, &drsuapi->bind_guid);
+
+	drsuapi->bind_r.in.bind_guid = &drsuapi->bind_guid;
+	drsuapi->bind_r.in.bind_info = NULL;
+	drsuapi->bind_r.out.bind_handle = &drsuapi->bind_handle;
+
+	req = dcerpc_drsuapi_DsBind_send(drsuapi->pipe, s, &drsuapi->bind_r);
+	composite_continue_rpc(c, req, recv_fn, s);
+}
+
+static void becomeDC_drsuapi1_bind_recv(struct rpc_request *req)
+{
+	struct libnet_BecomeDC_state *s = talloc_get_type(req->async.private,
+					  struct libnet_BecomeDC_state);
+	struct composite_context *c = s->creq;
+
+	c->status = dcerpc_ndr_request_recv(req);
+	if (!composite_is_ok(c)) return;
+
+	if (!W_ERROR_IS_OK(s->drsuapi1.bind_r.out.result)) {
+		composite_error(c, werror_to_ntstatus(s->drsuapi1.bind_r.out.result));
+		return;
+	}
+
 	becomeDC_connect_ldap2(s);
 }
 



More information about the samba-cvs mailing list