summaryrefslogtreecommitdiffstats
path: root/source3/librpc/idl/rpc_host.idl
diff options
context:
space:
mode:
Diffstat (limited to 'source3/librpc/idl/rpc_host.idl')
-rw-r--r--source3/librpc/idl/rpc_host.idl93
1 files changed, 93 insertions, 0 deletions
diff --git a/source3/librpc/idl/rpc_host.idl b/source3/librpc/idl/rpc_host.idl
new file mode 100644
index 0000000..9eb48d3
--- /dev/null
+++ b/source3/librpc/idl/rpc_host.idl
@@ -0,0 +1,93 @@
+/**
+ * @file rpc_host.idl
+ *
+ * Definitions for communication between samba-dcerpcd and rpc helper
+ * daemons
+ */
+#include "idl_types.h"
+
+import "named_pipe_auth.idl";
+import "dcerpc.idl";
+
+[
+ pointer_default(unique)
+]
+
+interface rpc_host_msg
+{
+ /**
+ * @brief MSG_RPC_HOST_NEW_CLIENT: samba-dcerpcd->rpcd
+ *
+ * samba-dcerpcd to rpcd msg announcing a new client. This
+ * will carry a file descriptor representing the new
+ * connection
+ */
+ typedef [public] struct {
+ /**
+ * @brief The binding the client wants to connect to
+ */
+ [string,charset(UTF8)] char *binding;
+
+ /**
+ * @brief Auth info inherited from SMB
+ */
+ named_pipe_auth_req_info8 *npa_info8;
+
+ /**
+ * @brief Raw bind PDU
+ *
+ * Already read from the socket by samba-dcerpcd
+ */
+ DATA_BLOB bind_packet;
+ } rpc_host_client;
+
+ /**
+ * @brief MSG_RPC_WORKER_STATUS: rpcd->samba-dcerpcd
+ *
+ * Once a client has been handed over from samba-dcerpcd to an
+ * rpcd, samba-dcerpc has no control over this socket
+ * anymore. So it can't know when the client exits and the
+ * rpcd helper process has a slot free. Thus whenever a client
+ * exits, rpcd sends this message up to samba-dcerpc for a
+ * status update.
+ */
+ typedef [flag(NDR_NOALIGN),public] struct {
+ /**
+ * @brief Which rpc service is this message from
+ *
+ * samba-dcerpcd will only have the source pid of this
+ * message. To avoid a walk through all arrays with
+ * all rpcd helpers, give samba-dcerpcd a hint where
+ * in its arrays to find the rpcd that sent this
+ * message.
+ */
+ uint32 server_index;
+
+ /**
+ * @brief Which of the processes of a helper prog is this from
+ *
+ * @note while this is uint32, we currently only support 16-bit
+ * values, as we use it in the high 16-bits of the 32-bit
+ * association group id.
+ */
+ uint32 worker_index;
+
+
+ /**
+ * @brief How many association groups this process serves right now
+ *
+ * @note while this is uint32, we currently only support 16-bit
+ * values, as we use the worker_index in the high 16-bits of
+ * so we only have 16-bit per worker in order to form the 32-bit
+ * association group id.
+ */
+ uint32 num_association_groups;
+
+ /**
+ * @brief How many client connections this process serves right now
+ *
+ * @note might be greater or equal to num_association_groups.
+ */
+ uint32 num_connections;
+ } rpc_worker_status;
+}