/** * @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; }