]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
s3:rpc_server: Initialize the embedded services endpoints
authorSamuel Cabrero <scabrero@suse.de>
Wed, 27 Feb 2019 13:36:30 +0000 (14:36 +0100)
committerSamuel Cabrero <scabrero@sn-devel-184>
Fri, 20 Mar 2020 15:36:33 +0000 (15:36 +0000)
Signed-off-by: Samuel Cabrero <scabrero@samba.org>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
source3/rpc_server/rpc_service_setup.c

index 529ba952870c62130faadeab1c339c92a0c1cf6b..4eebb280eb21a319917053c824919ba97afbeedd 100644 (file)
@@ -257,6 +257,41 @@ NTSTATUS dcesrv_setup_endpoint_sockets(struct tevent_context *ev_ctx,
        return status;
 }
 
+static NTSTATUS dcesrv_init_endpoints(struct tevent_context *ev_ctx,
+                                     struct messaging_context *msg_ctx,
+                                     struct dcesrv_context *dce_ctx)
+{
+       struct dcesrv_endpoint *e = NULL;
+       NTSTATUS status;
+
+       for (e = dce_ctx->endpoint_list; e; e = e->next) {
+               enum dcerpc_transport_t transport =
+                       dcerpc_binding_get_transport(e->ep_description);
+
+               if (transport == NCACN_HTTP) {
+                       /*
+                        * We don't support ncacn_http yet
+                        */
+                       continue;
+               }
+
+               status = dcesrv_setup_endpoint_sockets(ev_ctx,
+                                                      msg_ctx,
+                                                      dce_ctx,
+                                                      e,
+                                                      NULL,
+                                                      NULL,
+                                                      NULL);
+               if (!NT_STATUS_IS_OK(status)) {
+                       return status;
+               }
+
+               /* TODO If NCACN_NP register in endpoint mapper */
+       }
+
+       return NT_STATUS_OK;
+}
+
 static NTSTATUS rpc_setup_winreg(struct tevent_context *ev_ctx,
                                 struct messaging_context *msg_ctx)
 {
@@ -903,6 +938,15 @@ NTSTATUS dcesrv_init(TALLOC_CTX *mem_ctx,
                goto done;
        }
 
+       DBG_INFO("Initializing DCE/RPC connection endpoints\n");
+
+       status = dcesrv_init_endpoints(ev_ctx, msg_ctx, dce_ctx);
+       if (!NT_STATUS_IS_OK(status)) {
+               DBG_ERR("Failed to init DCE/RPC endpoints: %s\n",
+                       nt_errstr(status));
+               goto done;
+       }
+
        status = NT_STATUS_OK;
 done:
        talloc_free(tmp_ctx);