s3-smbd: Added a become_user_by_session() function.
[Samba.git] / librpc / idl / dfs.idl
blob1b145f3dfa384a9da39b133f8d6e719b931c964e
1 /*
2 dfs interface definition
3 */
5 import "misc.idl";
7 [ uuid("4fc742e0-4a10-11cf-8273-00aa004ae673"),
8 version(3.0),
9 pointer_default(unique),
10 helpstring("Settings for Microsoft Distributed File System"),
11 endpoint("ncacn_np:[\\pipe\\netdfs]", "ncacn_ip_tcp:", "ncalrpc:")
12 ] interface netdfs
14 /******************/
15 /* Function: 0x00 */
16 typedef [v1_enum] enum {
17 DFS_MANAGER_VERSION_NT4 = 1,
18 DFS_MANAGER_VERSION_W2K = 2,
19 DFS_MANAGER_VERSION_W2K3 = 4,
20 DFS_MANAGER_VERSION_W2K8 = 6
21 } dfs_ManagerVersion;
23 [public] void dfs_GetManagerVersion(
24 [out] dfs_ManagerVersion *version
28 /******************/
29 /* Function: 0x01 */
30 WERROR dfs_Add (
31 [in] [string,charset(UTF16)] uint16 *path,
32 [in] [string,charset(UTF16)] uint16 *server,
33 [in,unique] [string,charset(UTF16)] uint16 *share,
34 [in,unique] [string,charset(UTF16)] uint16 *comment,
35 [in] uint32 flags
38 /******************/
39 /* Function: 0x02 */
40 WERROR dfs_Remove (
41 [in] [string,charset(UTF16)] uint16 *dfs_entry_path,
42 [in,unique] [string,charset(UTF16)] uint16 *servername,
43 [in,unique] [string,charset(UTF16)] uint16 *sharename
46 /******************/
47 /* Function: 0x03 */
49 typedef struct {
50 } dfs_Info0;
52 typedef struct {
53 [string,charset(UTF16)] uint16 *path;
54 } dfs_Info1;
56 typedef [public,bitmap32bit] bitmap {
57 DFS_VOLUME_STATE_OK = 0x1,
58 DFS_VOLUME_STATE_INCONSISTENT = 0x2,
59 DFS_VOLUME_STATE_OFFLINE = 0x3,
60 DFS_VOLUME_STATE_ONLINE = 0x4,
61 DFS_VOLUME_STATE_STANDALONE = DFS_VOLUME_FLAVOR_STANDALONE,
62 DFS_VOLUME_STATE_AD_BLOB = DFS_VOLUME_FLAVOR_AD_BLOB
63 } dfs_VolumeState;
65 typedef struct {
66 [string,charset(UTF16)] uint16 *path;
67 [string,charset(UTF16)] uint16 *comment;
68 dfs_VolumeState state;
69 uint32 num_stores;
70 } dfs_Info2;
72 const int DFS_STORAGE_STATES = 0xf;
74 /* yes, this is a bitmap */
75 typedef [public,bitmap32bit] bitmap {
76 DFS_STORAGE_STATE_OFFLINE = 1,
77 DFS_STORAGE_STATE_ONLINE = 2,
78 DFS_STORAGE_STATE_ACTIVE = 4
79 } dfs_StorageState;
81 typedef struct {
82 dfs_StorageState state;
83 [string,charset(UTF16)] uint16 *server;
84 [string,charset(UTF16)] uint16 *share;
85 } dfs_StorageInfo;
87 typedef struct {
88 [string,charset(UTF16)] uint16 *path;
89 [string,charset(UTF16)] uint16 *comment;
90 dfs_VolumeState state;
91 uint32 num_stores;
92 [size_is(num_stores)] dfs_StorageInfo *stores;
93 } dfs_Info3;
95 typedef struct {
96 [string,charset(UTF16)] uint16 *path;
97 [string,charset(UTF16)] uint16 *comment;
98 dfs_VolumeState state;
99 uint32 timeout;
100 GUID guid;
101 uint32 num_stores;
102 [size_is(num_stores)] dfs_StorageInfo *stores;
103 } dfs_Info4;
105 /* verified with dfsutil */
106 typedef [public,bitmap32bit] bitmap {
107 DFS_PROPERTY_FLAG_INSITE_REFERRALS = 0x01,
108 DFS_PROPERTY_FLAG_ROOT_SCALABILITY = 0x02,
109 DFS_PROPERTY_FLAG_SITE_COSTING = 0x04,
110 DFS_PROPERTY_FLAG_TARGET_FAILBACK = 0x08,
111 DFS_PROPERTY_FLAG_CLUSTER_ENABLED = 0x10 /* untested */
112 } dfs_PropertyFlags;
114 typedef struct {
115 [string,charset(UTF16)] uint16 *path;
116 [string,charset(UTF16)] uint16 *comment;
117 dfs_VolumeState state;
118 uint32 timeout;
119 GUID guid;
120 dfs_PropertyFlags flags;
121 uint32 pktsize;
122 uint32 num_stores;
123 } dfs_Info5;
125 typedef [v1_enum] enum {
126 DFS_INVALID_PRIORITY_CLASS = -1,
127 DFS_SITE_COST_NORMAL_PRIORITY_CLASS = 0,
128 DFS_GLOBAL_HIGH_PRIORITY_CLASS = 1,
129 DFS_SITE_COST_HIGH_PRIORITY_CLASS = 2,
130 DFS_SITE_COST_LOW_PRIORITY_CLASS = 3,
131 DFS_GLOBAL_LOW_PRIORITY_CLASS = 4
132 } dfs_Target_PriorityClass;
134 typedef struct {
135 dfs_Target_PriorityClass target_priority_class;
136 uint16 target_priority_rank;
137 uint16 reserved;
138 } dfs_Target_Priority;
140 typedef struct {
141 dfs_StorageInfo info;
142 dfs_Target_Priority target_priority;
143 } dfs_StorageInfo2;
145 typedef struct {
146 [string,charset(UTF16)] uint16 *entry_path;
147 [string,charset(UTF16)] uint16 *comment;
148 dfs_VolumeState state;
149 uint32 timeout;
150 GUID guid;
151 dfs_PropertyFlags flags;
152 uint32 pktsize;
153 uint16 num_stores;
154 [size_is(num_stores)] dfs_StorageInfo2 *stores;
155 } dfs_Info6;
157 typedef struct {
158 GUID generation_guid;
159 } dfs_Info7;
161 typedef struct {
162 [string,charset(UTF16)] uint16 *comment;
163 } dfs_Info100;
165 typedef struct {
166 dfs_StorageState state;
167 } dfs_Info101;
169 typedef struct {
170 uint32 timeout;
171 } dfs_Info102;
173 typedef struct {
174 dfs_PropertyFlags flags;
175 } dfs_Info103;
177 typedef struct {
178 dfs_Target_Priority priority;
179 } dfs_Info104;
181 typedef struct {
182 [string,charset(UTF16)] uint16 *comment;
183 dfs_VolumeState state;
184 uint32 timeout;
185 uint32 property_flag_mask;
186 uint32 property_flags;
187 } dfs_Info105;
189 typedef struct {
190 dfs_StorageState state;
191 dfs_Target_Priority priority;
192 } dfs_Info106;
194 typedef struct {
195 [string,charset(UTF16)] uint16 *dom_root;
196 } dfs_Info200;
198 typedef enum {
199 DFS_VOLUME_FLAVOR_STANDALONE = 0x100,
200 DFS_VOLUME_FLAVOR_AD_BLOB = 0x200
201 } dfs_VolumeFlavor;
203 typedef struct {
204 dfs_VolumeFlavor flavor;
205 [string,charset(UTF16)] uint16 *dom_root;
206 } dfs_Info300;
208 typedef union {
209 [case(0)] dfs_Info0 *info0;
210 [case(1)] dfs_Info1 *info1;
211 [case(2)] dfs_Info2 *info2;
212 [case(3)] dfs_Info3 *info3;
213 [case(4)] dfs_Info4 *info4;
214 [case(5)] dfs_Info5 *info5;
215 [case(6)] dfs_Info6 *info6;
216 [case(7)] dfs_Info7 *info7;
217 [case(100)] dfs_Info100 *info100;
218 [case(101)] dfs_Info101 *info101;
219 [case(102)] dfs_Info102 *info102;
220 [case(103)] dfs_Info103 *info103;
221 [case(104)] dfs_Info104 *info104;
222 [case(105)] dfs_Info105 *info105;
223 [case(106)] dfs_Info106 *info106;
224 } dfs_Info;
226 WERROR dfs_SetInfo (
227 [in] [string,charset(UTF16)] uint16 dfs_entry_path[],
228 [in,unique] [string,charset(UTF16)] uint16 *servername,
229 [in,unique] [string,charset(UTF16)] uint16 *sharename,
230 [in] uint32 level,
231 [in,ref,switch_is(level)] dfs_Info *info
234 /******************/
235 /* Function: 0x04 */
236 WERROR dfs_GetInfo (
237 [in] [string,charset(UTF16)] uint16 dfs_entry_path[],
238 [in,unique] [string,charset(UTF16)] uint16 *servername,
239 [in,unique] [string,charset(UTF16)] uint16 *sharename,
240 [in] uint32 level,
241 [out,switch_is(level)] dfs_Info *info
244 /******************/
245 /* Function: 0x05 */
247 typedef struct {
248 uint32 count;
249 [size_is(count)] dfs_Info1 *s;
250 } dfs_EnumArray1;
252 typedef struct {
253 uint32 count;
254 [size_is(count)] dfs_Info2 *s;
255 } dfs_EnumArray2;
257 typedef struct {
258 uint32 count;
259 [size_is(count)] dfs_Info3 *s;
260 } dfs_EnumArray3;
262 typedef struct {
263 uint32 count;
264 [size_is(count)] dfs_Info4 *s;
265 } dfs_EnumArray4;
267 typedef struct {
268 uint32 count;
269 [size_is(count)] dfs_Info5 *s;
270 } dfs_EnumArray5;
272 typedef struct {
273 uint32 count;
274 [size_is(count)] dfs_Info6 *s;
275 } dfs_EnumArray6;
277 typedef struct {
278 uint32 count;
279 [size_is(count)] dfs_Info200 *s;
280 } dfs_EnumArray200;
282 typedef struct {
283 uint32 count;
284 [size_is(count)] dfs_Info300 *s;
285 } dfs_EnumArray300;
288 typedef union {
289 [case(1)] dfs_EnumArray1 *info1;
290 [case(2)] dfs_EnumArray2 *info2;
291 [case(3)] dfs_EnumArray3 *info3;
292 [case(4)] dfs_EnumArray4 *info4;
293 [case(5)] dfs_EnumArray5 *info5;
294 [case(6)] dfs_EnumArray6 *info6;
295 [case(200)] dfs_EnumArray200 *info200;
296 [case(300)] dfs_EnumArray300 *info300;
297 } dfs_EnumInfo;
299 typedef struct {
300 uint32 level;
301 [switch_is(level)] dfs_EnumInfo e;
302 } dfs_EnumStruct;
304 WERROR dfs_Enum (
305 [in] uint32 level,
306 [in] uint32 bufsize,
307 [in,out,unique] dfs_EnumStruct *info,
308 [in,out,unique] uint32 *total
311 /* Function 0x06 */
312 [todo] WERROR dfs_Rename();
314 /* Function 0x07 */
315 [todo] WERROR dfs_Move();
317 /* Function 0x08 */
318 [todo] WERROR dfs_ManagerGetConfigInfo();
320 /* Function 0x09 */
321 [todo] WERROR dfs_ManagerSendSiteInfo();
323 /* Function 0x0a */
324 typedef struct {
325 uint32 unknown1;
326 [string,charset(UTF16)] uint16 *unknown2;
327 } dfs_UnknownStruct;
329 WERROR dfs_AddFtRoot(
330 [in] [string,charset(UTF16)] uint16 servername[],
331 [in] [string,charset(UTF16)] uint16 dns_servername[],
332 [in] [string,charset(UTF16)] uint16 dfsname[],
333 [in] [string,charset(UTF16)] uint16 rootshare[],
334 [in] [string,charset(UTF16)] uint16 comment[],
335 [in] [string,charset(UTF16)] uint16 dfs_config_dn[],
336 [in] uint8 unknown1,
337 [in] uint32 flags,
338 [in,out,unique] dfs_UnknownStruct **unknown2
341 /* Function 0x0b */
342 WERROR dfs_RemoveFtRoot(
343 [in] [string,charset(UTF16)] uint16 servername[],
344 [in] [string,charset(UTF16)] uint16 dns_servername[],
345 [in] [string,charset(UTF16)] uint16 dfsname[],
346 [in] [string,charset(UTF16)] uint16 rootshare[],
347 [in] uint32 flags,
348 [in,out,unique] dfs_UnknownStruct **unknown
351 /* Function 0x0c */
352 WERROR dfs_AddStdRoot(
353 [in] [string,charset(UTF16)] uint16 servername[],
354 [in] [string,charset(UTF16)] uint16 rootshare[],
355 [in] [string,charset(UTF16)] uint16 comment[],
356 [in] uint32 flags
359 /* Function 0x0d */
360 WERROR dfs_RemoveStdRoot(
361 [in] [string,charset(UTF16)] uint16 servername[],
362 [in] [string,charset(UTF16)] uint16 rootshare[],
363 [in] uint32 flags
366 /* Function 0x0e */
367 WERROR dfs_ManagerInitialize(
368 [in] [string,charset(UTF16)] uint16 *servername,
369 [in] uint32 flags
372 /* Function 0x0f */
373 WERROR dfs_AddStdRootForced(
374 [in] [string,charset(UTF16)] uint16 servername[],
375 [in] [string,charset(UTF16)] uint16 rootshare[],
376 [in] [string,charset(UTF16)] uint16 comment[],
377 [in] [string,charset(UTF16)] uint16 store[] /* C:\\whatever */
380 /* Function 0x10 */
381 WERROR dfs_GetDcAddress(
382 [in] [string,charset(UTF16)] uint16 servername[],
383 [in,out,ref] [string,charset(UTF16)] uint16 **server_fullname,
384 [in,out,ref] boolean8 *is_root,
385 [in,out,ref] uint32 *ttl
388 /* Function 0x11 */
389 WERROR dfs_SetDcAddress(
390 [in] [string,charset(UTF16)] uint16 servername[],
391 [in] [string,charset(UTF16)] uint16 server_fullname[],
392 [in] uint32 flags,
393 [in] uint32 ttl
396 /* Function 0x12 */
397 WERROR dfs_FlushFtTable(
398 [in] [string,charset(UTF16)] uint16 servername[],
399 [in] [string,charset(UTF16)] uint16 rootshare[]
402 /* Function 0x13 */
403 [todo] WERROR dfs_Add2();
405 /* Function 0x14 */
406 [todo] WERROR dfs_Remove2();
408 /* Function 0x15 */
409 [public] WERROR dfs_EnumEx(
410 [in] [string,charset(UTF16)] uint16 dfs_name[],
411 [in] uint32 level,
412 [in] uint32 bufsize,
413 [in,out,unique] dfs_EnumStruct *info,
414 [in,out,unique] uint32 *total
417 /* Function 0x16 */
418 [todo] WERROR dfs_SetInfo2();