summaryrefslogtreecommitdiff
path: root/source4/librpc/idl/irpc.idl
blob: 34998d57a750e626247e6385078aec49301a4b87 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
#include "idl_types.h"

/*
  definitions for irpc primitives
*/
[ uuid("e770c620-0b06-4b5e-8d87-a26e20f28340"),
  version(1.0),
  pointer_default(unique),
  pointer_default_top(unique),
  depends(security)
] interface irpc
{
	typedef bitmap {
		IRPC_FLAG_REPLY    = 0x0001
	} irpc_flags;

	typedef [public,noejs] struct {
		GUID uuid;
		uint32 if_version;
		uint32 callnum;
		uint32 callid;
		irpc_flags flags;
		NTSTATUS status;
	} irpc_header;

	/******************************************************
         uptime call - supported by all messaging servers
	*******************************************************/
	void irpc_uptime([out,ref] NTTIME *start_time);

	/******************************************************
         management calls for the nbt server
	******************************************************/
	typedef [v1_enum] enum {
		NBTD_INFO_STATISTICS
	} nbtd_info_level;

	typedef struct {
		hyper total_received;
		hyper total_sent;
		hyper query_count;
		hyper register_count;
		hyper release_count;
	} nbtd_statistics;

	typedef union {
		[case(NBTD_INFO_STATISTICS)] nbtd_statistics *stats;
	} nbtd_info;

	void nbtd_information(
		[in]  nbtd_info_level level,
		[out,switch_is(level)] nbtd_info info
		);

	void nbtd_getdcname(
		[in] astring domainname,
		[in] astring ip_address,
		[in] astring my_computername,
		[in] astring my_accountname,
		[in] uint32 account_control,
		[in,ref] dom_sid *domain_sid,
		[out] astring *dcname
		);

	/******************************************************
         management calls for the smb server
	******************************************************/
	typedef [v1_enum] enum {
		SMBSRV_INFO_SESSIONS,
		SMBSRV_INFO_TREES
	} smbsrv_info_level;

	typedef struct {
		uint16 vuid;
		astring account_name;
		astring domain_name;
		astring client_ip;
		NTTIME  connect_time;
	} smbsrv_session_info;

	typedef struct {
		uint32 num_sessions;
		[size_is(num_sessions)] smbsrv_session_info *sessions;
	} smbsrv_sessions;

	typedef struct {
		uint16 tid;
		astring share_name;
		astring client_ip;
		NTTIME  connect_time;
	} smbsrv_tree_info;

	typedef struct {
		uint32 num_trees;
		[size_is(num_trees)] smbsrv_tree_info *trees;
	} smbsrv_trees;

	typedef union {
		[case(SMBSRV_INFO_SESSIONS)] smbsrv_sessions sessions;
		[case(SMBSRV_INFO_TREES)]    smbsrv_trees    trees;
	} smbsrv_info;

	void smbsrv_information(
		[in]  smbsrv_info_level level,
		[out,switch_is(level)] smbsrv_info info
		);

}