#include "idl_types.h"

import "server_id.idl";

/*
   IDL structures for messaging code
*/

[
  pointer_default(unique)
]
interface messaging
{
	const int MSG_TYPE_MASK = 0xFFFF;

	typedef [v1_enum,public] enum {

		/* general messages */
		MSG_DEBUG			= 0x0001,
		MSG_PING			= 0x0002,
		MSG_PONG			= 0x0003,
		MSG_PROFILE			= 0x0004,
		MSG_REQ_DEBUGLEVEL		= 0x0005,
		MSG_DEBUGLEVEL			= 0x0006,
		MSG_REQ_PROFILELEVEL		= 0x0007,
		MSG_PROFILELEVEL		= 0x0008,
		MSG_REQ_POOL_USAGE		= 0x0009,
		MSG_POOL_USAGE			= 0x000A,

		/* If dmalloc is included, set a steady-state mark */
		MSG_REQ_DMALLOC_MARK		= 0x000B,

		/* If dmalloc is included, dump to the dmalloc log a description of
		 * what has changed since the last MARK */
		MSG_REQ_DMALLOC_LOG_CHANGED	= 0x000C,
		MSG_SHUTDOWN			= 0x000D,

		/* ID_CACHE_FLUSH		= 0x000E, obsoleted */
		ID_CACHE_DELETE			= 0x000F,
		ID_CACHE_KILL			= 0x0010,

		/* Changes to smb.conf are really of general interest */
		MSG_SMB_CONF_UPDATED		= 0x0021,

		MSG_PREFORK_CHILD_EVENT		= 0x0031,
		MSG_PREFORK_PARENT_EVENT	= 0x0032,

		/* nmbd messages */
		MSG_FORCE_ELECTION		= 0x0101,
		MSG_WINS_NEW_ENTRY		= 0x0102,
		MSG_SEND_PACKET			= 0x0103,

		/* printing messages */
		/* MSG_PRINTER_NOTIFY		= 0x2001,  Obsoleted */
		MSG_PRINTER_NOTIFY2		= 0x0202,
		MSG_PRINTER_DRVUPGRADE		= 0x0203,
		MSG_PRINTERDATA_INIT_RESET	= 0x0204,
		MSG_PRINTER_UPDATE		= 0x0205,
		MSG_PRINTER_MOD			= 0x0206,
		MSG_PRINTER_PCAP		= 0x0207,

		/* smbd messages */
		/* MSG_SMB_CONF_UPDATED		= 0x0301,  Obsoleted */
		MSG_SMB_FORCE_TDIS		= 0x0302,
		/* MSG_SMB_SAM_SYNC		= 0x0303,  Obsoleted */
		/* MSG_SMB_SAM_REPL		= 0x0304,  Obsoleted */
		MSG_SMB_UNLOCK			= 0x0305,
		MSG_SMB_BREAK_REQUEST		= 0x0306,
		/* MSG_SMB_BREAK_RESPONSE	= 0x0307,  Obsoleted */
		MSG_SMB_ASYNC_LEVEL2_BREAK	= 0x0308,
		/* MSG_SMB_OPEN_RETRY		= 0x0309,  Obsoleted */
		MSG_SMB_KERNEL_BREAK		= 0x030A,
		MSG_SMB_FILE_RENAME		= 0x030B,
		MSG_SMB_INJECT_FAULT		= 0x030C,
		MSG_SMB_BLOCKING_LOCK_CANCEL	= 0x030D,
		MSG_SMB_NOTIFY			= 0x030E,
		MSG_SMB_STAT_CACHE_DELETE	= 0x030F,

		/* Samba4 compatibility */
		MSG_PVFS_NOTIFY			= 0x0310,

		/* cluster reconfigure events */
		MSG_SMB_BRL_VALIDATE		= 0x0311,

		/*Close a specific file given a share entry. */
		MSG_SMB_CLOSE_FILE		= 0x0313,

		/* Trigger a notify cleanup run */
		MSG_SMB_NOTIFY_CLEANUP		= 0x0314,
		MSG_SMB_SCAVENGER		= 0x0315,

		/* winbind messages */
		MSG_WINBIND_FINISHED		= 0x0401,
		MSG_WINBIND_FORGET_STATE	= 0x0402,
		MSG_WINBIND_ONLINE		= 0x0403,
		MSG_WINBIND_OFFLINE		= 0x0404,
		MSG_WINBIND_ONLINESTATUS	= 0x0405,
		MSG_WINBIND_TRY_TO_GO_ONLINE	= 0x0406,
		MSG_WINBIND_FAILED_TO_GO_ONLINE = 0x0407,
		MSG_WINBIND_VALIDATE_CACHE	= 0x0408,
		MSG_WINBIND_DUMP_DOMAIN_LIST	= 0x0409,
		MSG_WINBIND_IP_DROPPED		= 0x040A,
		MSG_WINBIND_DOMAIN_ONLINE	= 0x040B,
		MSG_WINBIND_DOMAIN_OFFLINE	= 0x040C,

		/* event messages */
		MSG_DUMP_EVENT_LIST		= 0x0500,

		/* smbXsrv messages */
		MSG_SMBXSRV_SESSION_CLOSE	= 0x0600,

		/* dbwrap messages 4001-4999 (0x0FA0 - 0x1387) */
		/* MSG_DBWRAP_TDB2_CHANGES		= 4001, */
		MSG_DBWRAP_G_LOCK_RETRY		= 4002,
		MSG_DBWRAP_MODIFIED		= 4003
	} messaging_type;

	/* messaging struct sent across the sockets and stored in the tdb */

	typedef [public] struct {
		uint32 msg_version;
		messaging_type msg_type;
		server_id dest;
		server_id src;
		DATA_BLOB buf;
	} messaging_rec;

	typedef [public] struct {
		uint32 num_messages;
		messaging_rec messages[num_messages];
	} messaging_array;
}
