Rev 11751: Some more work on making the ncacn_np handling in smbd be less special. in file:///home/jelmer/bzr.samba/SAMBA_4_0/

Jelmer Vernooij jelmer at samba.org
Wed Mar 21 17:03:46 GMT 2007


At file:///home/jelmer/bzr.samba/SAMBA_4_0/

------------------------------------------------------------
revno: 11751
revision-id: jelmer at samba.org-20070321170334-uerjkl6cfevlxtgq
parent: svn-v2:21910 at 0c0555d6-39d7-0310-84fc-f1cc0bd64818-branches%2fSAMBA_4_0
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: SAMBA_4_0
timestamp: Wed 2007-03-21 18:03:34 +0100
message:
  Some more work on making the ncacn_np handling in smbd be less special.
modified:
  source/rpc_server/dcerpc_server.c svn-v2:6 at 0c0555d6-39d7-0310-84fc-f1cc0bd64818-branches%2fSAMBA_4_0-source%2frpc_server%2fdcerpc_server.c
  source/rpc_server/dcerpc_sock.c svn-v2:3163 at 0c0555d6-39d7-0310-84fc-f1cc0bd64818-branches%2fSAMBA_4_0-source%2frpc_server%2fdcerpc_sock.c
=== modified file 'source/rpc_server/dcerpc_server.c'
--- a/source/rpc_server/dcerpc_server.c	2007-03-13 22:58:23 +0000
+++ b/source/rpc_server/dcerpc_server.c	2007-03-21 17:03:34 +0000
@@ -1409,9 +1409,9 @@
 			break;
 			
 		case NCACN_NP:
-/*			FIXME: status = dcesrv_add_ep_np(dce_ctx, e, task->event_ctx, task->model_ops);
+			status = dcesrv_add_ep_np(dce_ctx, e, task->event_ctx, task->model_ops);
 			if (!NT_STATUS_IS_OK(status)) goto failed;
-*/			break;
+			break;
 
 		default:
 			status = NT_STATUS_NOT_SUPPORTED;

=== modified file 'source/rpc_server/dcerpc_sock.c'
--- a/source/rpc_server/dcerpc_sock.c	2006-08-17 13:37:04 +0000
+++ b/source/rpc_server/dcerpc_sock.c	2007-03-21 17:03:34 +0000
@@ -267,6 +267,52 @@
 	return status;
 }
 
+
+/*
+  add a socket address to the list of events, one event per dcerpc endpoint
+*/
+static NTSTATUS add_socket_rpc_pipe_iface(struct dcesrv_context *dce_ctx, struct dcesrv_endpoint *e,
+					 struct event_context *event_ctx, const struct model_ops *model_ops)
+{
+	struct dcesrv_socket_context *dcesrv_sock;
+	NTSTATUS status;
+			
+	if (e->ep_description->endpoint == NULL) {
+		DEBUG(0, ("Endpoint mandatory for named pipes\n"));
+		return NT_STATUS_INVALID_PARAMETER;
+	}
+
+	dcesrv_sock = talloc(event_ctx, struct dcesrv_socket_context);
+	NT_STATUS_HAVE_NO_MEMORY(dcesrv_sock);
+
+	/* remember the endpoint of this socket */
+	dcesrv_sock->endpoint		= e;
+	dcesrv_sock->dcesrv_ctx		= talloc_reference(dcesrv_sock, dce_ctx);
+
+	status = NT_STATUS_OK;
+#if 0
+
+	status = stream_setup_smb_pipe(event_ctx, model_ops, &dcesrv_stream_ops, 
+				     e->ep_description->endpoint, dcesrv_sock);
+	if (!NT_STATUS_IS_OK(status)) {
+		DEBUG(0,("service_setup_stream_socket(path=%s) failed - %s\n", 
+			 e->ep_description->endpoint, nt_errstr(status)));
+	}
+#endif
+	return status;
+}
+
+NTSTATUS dcesrv_add_ep_np(struct dcesrv_context *dce_ctx, struct dcesrv_endpoint *e,
+				   struct event_context *event_ctx, const struct model_ops *model_ops)
+{
+	NTSTATUS status;
+
+	status = add_socket_rpc_pipe_iface(dce_ctx, e, event_ctx, model_ops);
+	NT_STATUS_NOT_OK_RETURN(status);
+
+	return status;
+}
+
 /*
   add a socket address to the list of events, one event per dcerpc endpoint
 */
@@ -324,5 +370,3 @@
 
 	return NT_STATUS_OK;
 }
-
-



More information about the samba-cvs mailing list