#include "librpc/gen_ndr/ndr_epmapper_scompat.h"
#include "rpc_server/rpc_server.h"
+#include "rpc_server/rpc_service_setup.h"
#include "rpc_server/rpc_sock_helper.h"
#include "rpc_server/epmapper/srv_epmapper.h"
#include "rpc_server/epmd.h"
pid_t pid;
int rc;
const struct dcesrv_endpoint_server *ep_server = NULL;
+ struct dcesrv_endpoint *e = NULL;
DEBUG(1, ("Forking Endpoint Mapper Daemon\n"));
exit(1);
}
+ DBG_INFO("Initializing DCE/RPC connection endpoints\n");
+
+ for (e = dce_ctx->endpoint_list; e; e = e->next) {
+ enum dcerpc_transport_t transport =
+ dcerpc_binding_get_transport(e->ep_description);
+ dcerpc_ncacn_termination_fn term_fn = NULL;
+
+ if (transport == NCACN_HTTP) {
+ continue;
+ }
+
+ if (transport == NCALRPC) {
+ term_fn = srv_epmapper_delete_endpoints;
+ }
+
+ status = dcesrv_setup_endpoint_sockets(ev_ctx,
+ msg_ctx,
+ dce_ctx,
+ e,
+ NULL, /* binding vector */
+ term_fn,
+ NULL); /* termination_data */
+ if (!NT_STATUS_IS_OK(status)) {
+ char *ep_string = dcerpc_binding_string(
+ dce_ctx, e->ep_description);
+ DBG_ERR("Failed to setup endpoint '%s': %s\n",
+ ep_string, nt_errstr(status));
+ TALLOC_FREE(ep_string);
+ exit(1);
+ }
+ }
+
status = dcesrv_setup_ncacn_ip_tcp_sockets(ev_ctx,
msg_ctx,
&ndr_table_epmapper,