#include "srv_epmapper.h"
#include "auth.h"
+#include "librpc/rpc/dcesrv_core.h"
+#include "librpc/gen_ndr/ndr_epmapper_scompat.h"
+
typedef uint32_t error_status_t;
/* An endpoint combined with an interface description */
return EPMAPPER_STATUS_CANT_PERFORM_OP;
}
+static NTSTATUS epmapper__op_shutdown_server(struct dcesrv_context *dce_ctx,
+ const struct dcesrv_endpoint_server *ep_server);
+
+#define DCESRV_INTERFACE_EPMAPPER_SHUTDOWN_SERVER \
+ epmapper_shutdown_server
+
+static NTSTATUS epmapper_shutdown_server(struct dcesrv_context *dce_ctx,
+ const struct dcesrv_endpoint_server *ep_server)
+{
+ srv_epmapper_cleanup();
+
+ return epmapper__op_shutdown_server(dce_ctx, ep_server);
+}
+
/* include the generated boilerplate */
#include "librpc/gen_ndr/ndr_epmapper_scompat.c"
}
}
-static bool epmapper_shutdown_cb(void *ptr) {
- srv_epmapper_cleanup();
-
- return true;
-}
-
void start_epmd(struct tevent_context *ev_ctx,
struct messaging_context *msg_ctx,
struct dcesrv_context *dce_ctx)
{
- struct rpc_srv_callbacks epmapper_cb;
NTSTATUS status;
pid_t pid;
int rc;
const struct dcesrv_endpoint_server *ep_server = NULL;
- epmapper_cb.init = NULL;
- epmapper_cb.shutdown = epmapper_shutdown_cb;
- epmapper_cb.private_data = NULL;
-
DEBUG(1, ("Forking Endpoint Mapper Daemon\n"));
pid = fork();
exit(1);
}
- status = rpc_epmapper_init(&epmapper_cb);
+ DBG_INFO("Initializing DCE/RPC registered endpoint servers\n");
+
+ status = dcesrv_init_ep_server(dce_ctx, "epmapper");
if (!NT_STATUS_IS_OK(status)) {
- DEBUG(0, ("Failed to register epmd rpc interface! (%s)\n",
- nt_errstr(status)));
+ DBG_ERR("Failed to init DCE/RPC endpoint server: %s\n",
+ nt_errstr(status));
exit(1);
}