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

metze at samba.org metze at samba.org
Thu Dec 7 20:11:00 GMT 2006


Author: metze
Date: 2006-12-07 20:11:00 +0000 (Thu, 07 Dec 2006)
New Revision: 20071

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

Log:
move common code into a function

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-07 19:50:46 UTC (rev 20070)
+++ branches/SAMBA_4_0/source/libnet/libnet_become_dc.c	2006-12-07 20:11:00 UTC (rev 20071)
@@ -981,6 +981,34 @@
 	composite_continue_rpc(c, req, recv_fn, s);
 }
 
+static WERROR becomeDC_drsuapi_bind_recv(struct libnet_BecomeDC_state *s,
+					 struct becomeDC_drsuapi *drsuapi)
+{
+	if (!W_ERROR_IS_OK(drsuapi->bind_r.out.result)) {
+		return drsuapi->bind_r.out.result;
+	}
+
+	ZERO_STRUCT(drsuapi->remote_info28);
+	if (drsuapi->bind_r.out.bind_info) {
+		switch (drsuapi->bind_r.out.bind_info->length) {
+		case 24: {
+			struct drsuapi_DsBindInfo24 *info24;
+			info24 = &drsuapi->bind_r.out.bind_info->info.info24;
+			drsuapi->remote_info28.supported_extensions	= info24->supported_extensions;
+			drsuapi->remote_info28.site_guid		= info24->site_guid;
+			drsuapi->remote_info28.u1			= info24->u1;
+			drsuapi->remote_info28.repl_epoch		= 0;
+			break;
+		}
+		case 28:
+			drsuapi->remote_info28 = drsuapi->bind_r.out.bind_info->info.info28;
+			break;
+		}
+	}
+
+	return WERR_OK;
+}
+
 static void becomeDC_drsuapi1_add_entry_send(struct libnet_BecomeDC_state *s);
 
 static void becomeDC_drsuapi1_bind_recv(struct rpc_request *req)
@@ -988,33 +1016,17 @@
 	struct libnet_BecomeDC_state *s = talloc_get_type(req->async.private,
 					  struct libnet_BecomeDC_state);
 	struct composite_context *c = s->creq;
+	WERROR status;
 
 	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));
+	status = becomeDC_drsuapi_bind_recv(s, &s->drsuapi1);
+	if (!W_ERROR_IS_OK(status)) {
+		composite_error(c, werror_to_ntstatus(status));
 		return;
 	}
 
-	ZERO_STRUCT(s->drsuapi1.remote_info28);
-	if (s->drsuapi1.bind_r.out.bind_info) {
-		switch (s->drsuapi1.bind_r.out.bind_info->length) {
-		case 24: {
-			struct drsuapi_DsBindInfo24 *info24;
-			info24 = &s->drsuapi1.bind_r.out.bind_info->info.info24;
-			s->drsuapi1.remote_info28.supported_extensions	= info24->supported_extensions;
-			s->drsuapi1.remote_info28.site_guid		= info24->site_guid;
-			s->drsuapi1.remote_info28.u1			= info24->u1;
-			s->drsuapi1.remote_info28.repl_epoch		= 0;
-			break;
-		}
-		case 28:
-			s->drsuapi1.remote_info28 = s->drsuapi1.bind_r.out.bind_info->info.info28;
-			break;
-		}
-	}
-
 	becomeDC_drsuapi1_add_entry_send(s);
 }
 
@@ -1484,34 +1496,17 @@
 	struct libnet_BecomeDC_state *s = talloc_get_type(req->async.private,
 					  struct libnet_BecomeDC_state);
 	struct composite_context *c = s->creq;
-	struct composite_context *creq;
+	WERROR status;
 
 	c->status = dcerpc_ndr_request_recv(req);
 	if (!composite_is_ok(c)) return;
 
-	if (!W_ERROR_IS_OK(s->drsuapi2.bind_r.out.result)) {
-		composite_error(c, werror_to_ntstatus(s->drsuapi2.bind_r.out.result));
+	status = becomeDC_drsuapi_bind_recv(s, &s->drsuapi2);
+	if (!W_ERROR_IS_OK(status)) {
+		composite_error(c, werror_to_ntstatus(status));
 		return;
 	}
 
-	ZERO_STRUCT(s->drsuapi2.remote_info28);
-	if (s->drsuapi2.bind_r.out.bind_info) {
-		switch (s->drsuapi2.bind_r.out.bind_info->length) {
-		case 24: {
-			struct drsuapi_DsBindInfo24 *info24;
-			info24 = &s->drsuapi2.bind_r.out.bind_info->info.info24;
-			s->drsuapi2.remote_info28.supported_extensions	= info24->supported_extensions;
-			s->drsuapi2.remote_info28.site_guid		= info24->site_guid;
-			s->drsuapi2.remote_info28.u1			= info24->u1;
-			s->drsuapi2.remote_info28.repl_epoch		= 0;
-			break;
-		}
-		case 28:
-			s->drsuapi2.remote_info28 = s->drsuapi2.bind_r.out.bind_info->info.info28;
-			break;
-		}
-	}
-
 	/* this avoids the epmapper lookup on the 2nd connection */
 	s->drsuapi3.binding = s->drsuapi2.binding;
 



More information about the samba-cvs mailing list