From d27132ca44d28fe77fb5599039fa0bceba154e61 Mon Sep 17 00:00:00 2001 From: midipix Date: Jun 17 2020 23:03:24 +0000 Subject: daemon: toks_daemon_cidquery(): initial implementation and integration. --- diff --git a/project/common.mk b/project/common.mk index 61ce6f6..5375b81 100644 --- a/project/common.mk +++ b/project/common.mk @@ -8,6 +8,7 @@ INTERNAL_SRCS = \ src/daemon/toks_daemon_abort.c \ src/daemon/toks_daemon_acquire.c \ src/daemon/toks_daemon_cancel.c \ + src/daemon/toks_daemon_cidquery.c \ src/daemon/toks_daemon_connect.c \ src/daemon/toks_daemon_init.c \ src/daemon/toks_daemon_loop.c \ diff --git a/src/daemon/toks_daemon_cidquery.c b/src/daemon/toks_daemon_cidquery.c new file mode 100644 index 0000000..3f42272 --- /dev/null +++ b/src/daemon/toks_daemon_cidquery.c @@ -0,0 +1,22 @@ +/*********************************************************/ +/* toksvc: a framework-native token broker service */ +/* Copyright (C) 2020 Z. Gilboa */ +/* Released under GPLv2 and GPLv3; see COPYING.TOKSVC. */ +/*********************************************************/ + +#include +#include +#include + +#include "toksvc_daemon_impl.h" +#include "toksvc_driver_impl.h" + +int32_t __stdcall toks_daemon_cidquery(struct toks_daemon_ctx * dctx) +{ + nt_tty_port_msg * msg = &dctx->reply; + + msg->syncinfo.cid.process_id = pe_get_current_process_id(); + msg->syncinfo.cid.thread_id = pe_get_current_thread_id(); + + return NT_STATUS_SUCCESS; +} diff --git a/src/daemon/toks_daemon_loop.c b/src/daemon/toks_daemon_loop.c index 4d250dc..862f615 100644 --- a/src/daemon/toks_daemon_loop.c +++ b/src/daemon/toks_daemon_loop.c @@ -20,6 +20,7 @@ static toks_daemon_routine * toks_daemon_vtbl[TOKS_VTBL_ELEMENTS] = { TOKS_HANDLER(CONNECT, toks_daemon_connect), + TOKS_HANDLER(CIDQUERY, toks_daemon_cidquery), TOKS_HANDLER(TTYSIGNAL, toks_daemon_signal), TOKS_HANDLER(ACQUIRE, toks_daemon_acquire), TOKS_HANDLER(RELEASE, toks_daemon_release), @@ -29,6 +30,7 @@ static toks_daemon_routine * toks_daemon_vtbl[TOKS_VTBL_ELEMENTS] = { static toks_daemon_routine * toks_client_vtbl[TOKS_VTBL_ELEMENTS] = { TOKS_HANDLER(CONNECT, toks_daemon_connect), + TOKS_HANDLER(CIDQUERY, toks_daemon_cidquery), TOKS_HANDLER(TTYSIGNAL, toks_daemon_signal), }; diff --git a/src/internal/toksvc_daemon_impl.h b/src/internal/toksvc_daemon_impl.h index 22b166b..fea6f4d 100644 --- a/src/internal/toksvc_daemon_impl.h +++ b/src/internal/toksvc_daemon_impl.h @@ -12,6 +12,7 @@ enum toks_daemon_opcodes { TOKS_DAEMON_IPCSIGNAL, TOKS_DAEMON_SIGCHLD, TOKS_DAEMON_THREADEXIT, + TOKS_DAEMON_CIDQUERY, TOKS_DAEMON_ACQUIRE, TOKS_DAEMON_RELEASE, TOKS_DAEMON_CANCEL, @@ -78,6 +79,7 @@ int32_t __stdcall toks_daemon_init(struct toks_daemon_ctx *, const nt_guid *); int32_t __stdcall toks_daemon_loop(void *); int32_t __stdcall toks_daemon_connect(struct toks_daemon_ctx *); +int32_t __stdcall toks_daemon_cidquery(struct toks_daemon_ctx *); int32_t __stdcall toks_daemon_signal(struct toks_daemon_ctx *); int32_t __stdcall toks_daemon_acquire(struct toks_daemon_ctx *); int32_t __stdcall toks_daemon_pidopen(struct toks_daemon_ctx *); diff --git a/src/log/toks_log_lpc_message.c b/src/log/toks_log_lpc_message.c index 9d38ace..0e2a69b 100644 --- a/src/log/toks_log_lpc_message.c +++ b/src/log/toks_log_lpc_message.c @@ -27,6 +27,7 @@ static const char * toks_opcode_str[] = { TOKS_OPCODE_STR(IPCSIGNAL) = "TOKS_DAEMON_IPCSIGNAL", TOKS_OPCODE_STR(SIGCHLD) = "TOKS_DAEMON_SIGCHLD", TOKS_OPCODE_STR(THREADEXIT) = "TOKS_DAEMON_THREADEXIT", + TOKS_OPCODE_STR(CIDQUERY) = "TOKS_DAEMON_CIDQUERY", TOKS_OPCODE_STR(ACQUIRE) = "TOKS_DAEMON_ACQUIRE", TOKS_OPCODE_STR(RELEASE) = "TOKS_DAEMON_RELEASE", TOKS_OPCODE_STR(CANCEL) = "TOKS_DAEMON_CANCEL",