334c1028043cd90a6fdb8adb9b9008930a54b710
[obnox/samba/samba-obnox.git] / source4 / librpc / idl / irpc.idl
1 #include "idl_types.h"
2
3 import "misc.idl", "security.idl", "nbt.idl", "netlogon.idl";
4
5 /*
6   definitions for irpc primitives
7 */
8 [ uuid("e770c620-0b06-4b5e-8d87-a26e20f28340"),
9   version(1.0),
10   pointer_default(unique)
11 ] interface irpc
12 {
13         typedef bitmap {
14                 IRPC_FLAG_REPLY    = 0x0001
15         } irpc_flags;
16
17         typedef struct {
18                 security_token *token;
19         } irpc_creds;
20
21         typedef [public] struct {
22                 GUID uuid;
23                 uint32 if_version;
24                 uint32 callnum;
25                 uint32 callid;
26                 irpc_flags flags;
27                 NTSTATUS status;
28                 [subcontext(4)] irpc_creds creds;
29                 [flag(NDR_ALIGN8)] DATA_BLOB _pad;
30         } irpc_header;
31
32         /******************************************************
33          uptime call - supported by all messaging servers
34         *******************************************************/
35         void irpc_uptime([out,ref] NTTIME *start_time);
36
37         /******************************************************
38          management calls for the nbt server
39         ******************************************************/
40         typedef [v1_enum] enum {
41                 NBTD_INFO_STATISTICS
42         } nbtd_info_level;
43
44         typedef struct {
45                 hyper total_received;
46                 hyper total_sent;
47                 hyper query_count;
48                 hyper register_count;
49                 hyper release_count;
50         } nbtd_statistics;
51
52         typedef [switch_type(nbtd_info_level)] union {
53                 [case(NBTD_INFO_STATISTICS)] nbtd_statistics *stats;
54         } nbtd_info;
55
56         void nbtd_information(
57                 [in]  nbtd_info_level level,
58                 [out,switch_is(level)] nbtd_info info
59                 );
60
61         /* Send a GetDCName from the privileged port (owned by nbtd),
62          * and await a reply */
63
64         void nbtd_getdcname(
65                 [in] astring domainname,
66                 [in] astring ip_address,
67                 [in] astring my_computername,
68                 [in] astring my_accountname,
69                 [in] uint32 account_control,
70                 [in] dom_sid *domain_sid,
71                 [out,unique] astring *dcname
72                 );
73
74         typedef struct {
75                 ipv4address addr;
76         } nbtd_proxy_wins_addr;
77
78         void nbtd_proxy_wins_challenge(
79                 [in] nbt_name name,
80                 [in,out] uint32 num_addrs,
81                 [in,out] nbtd_proxy_wins_addr addrs[num_addrs]
82                 );
83
84         void nbtd_proxy_wins_release_demand(
85                 [in] nbt_name name,
86                 [in] uint32 num_addrs,
87                 [in] nbtd_proxy_wins_addr addrs[num_addrs]
88                 );
89
90         /*
91           Generic Kerberos package call (on the NETLOGON pipe, as a SamLogon)
92
93           The normal use for this call is to check the PAC signature in the KDC
94           
95           The KDC has the routines to check this, so it is easier to
96           proxy the request over by IRPC than set up the environment
97          */
98
99         void kdc_check_generic_kerberos(
100                 [in] DATA_BLOB generic_request,
101                 [out] DATA_BLOB generic_reply
102                 );
103
104         /******************************************************
105          management calls for the smb server
106         ******************************************************/
107         typedef [v1_enum] enum {
108                 SMBSRV_INFO_SESSIONS,
109                 SMBSRV_INFO_TCONS
110         } smbsrv_info_level;
111
112         typedef struct {
113                 hyper vuid;
114                 astring account_name;
115                 astring domain_name;
116                 astring client_ip;
117                 NTTIME  connect_time;
118                 NTTIME  auth_time;
119                 NTTIME  last_use_time;
120         } smbsrv_session_info;
121
122         typedef struct {
123                 uint32 num_sessions;
124                 [size_is(num_sessions)] smbsrv_session_info *sessions;
125         } smbsrv_sessions;
126
127         typedef struct {
128                 uint32 tid;
129                 astring share_name;
130                 astring client_ip;
131                 NTTIME  connect_time;
132                 NTTIME  last_use_time;
133         } smbsrv_tcon_info;
134
135         typedef struct {
136                 uint32 num_tcons;
137                 [size_is(num_tcons)] smbsrv_tcon_info *tcons;
138         } smbsrv_tcons;
139
140         typedef [switch_type(smbsrv_info_level)] union {
141                 [case(SMBSRV_INFO_SESSIONS)] smbsrv_sessions sessions;
142                 [case(SMBSRV_INFO_TCONS)]    smbsrv_tcons    tcons;
143         } smbsrv_info;
144
145         void smbsrv_information(
146                 [in]  smbsrv_info_level level,
147                 [out,switch_is(level)] smbsrv_info info
148                 );
149
150         /*
151           called when samba should shutdown
152          */
153         void samba_terminate(
154                 [in] astring reason
155                 );
156
157         /******************************************************
158          management calls for the drepl server
159         ******************************************************/
160         /**
161          * Force dreplsrv to fefresh internal cache.
162          * @param partition_dn Partition to refresh cacheh for.
163          *                     If empy/NULL, refresh all partitions.
164          */
165         WERROR dreplsrv_refresh();
166
167         /*
168           called when role transfer is requested via LDAP
169         */
170         typedef [v1_enum] enum {
171                DREPL_SCHEMA_MASTER,
172                DREPL_RID_MASTER,
173                DREPL_INFRASTRUCTURE_MASTER,
174                DREPL_NAMING_MASTER,
175                DREPL_PDC_MASTER
176         } drepl_role_master;
177
178         WERROR drepl_takeFSMORole(
179                 [in] uint32 role
180                 );
181
182         /*
183          * message to tell the drepl server to initiate a REPL_SECRET
184          * replication of a users secrets
185          */
186         void drepl_trigger_repl_secret(
187                 [in] astring user_dn
188                 );
189
190         /*
191           message to do RODC DNS updates via the dnsupdate task
192         */
193         NTSTATUS dnsupdate_RODC(
194                 [in,unique] dom_sid *dom_sid,
195                 [in,unique] [string,charset(UTF16)] uint16 *site_name,
196                 [in] uint32 dns_ttl,
197                 [in,out,ref] NL_DNS_NAME_INFO_ARRAY *dns_names
198                 );
199 }