Some simple tweaks to the IDL to make it more correct ...
[samba.git] / source4 / librpc / idl / srvsvc.idl
1 /*
2   srvsvc interface definitions
3 */
4
5 [ uuid(4b324fc8-1670-01d3-1278-5a47bf6ee188),
6   version(3.0),
7   pointer_default(unique)
8 ] interface srvsvc
9 {
10         /******************/
11         /* Function: 0x00 */
12         NTSTATUS srvsvc_00(
13                 );
14
15         /******************/
16         /* Function: 0x01 */
17         NTSTATUS srvsvc_01(
18                 );
19
20         /******************/
21         /* Function: 0x02 */
22         NTSTATUS srvsvc_02(
23                 );
24
25         /******************/
26         /* Function: 0x03 */
27         NTSTATUS srvsvc_03(
28                 );
29
30         /******************/
31         /* Function: 0x04 */
32         NTSTATUS srvsvc_04(
33                 );
34
35         /******************/
36         /* Function: 0x05 */
37         NTSTATUS srvsvc_05(
38                 );
39
40         /******************/
41         /* Function: 0x06 */
42         NTSTATUS srvsvc_06(
43                 );
44
45         /******************/
46         /* Function: 0x07 */
47         NTSTATUS srvsvc_07(
48                 );
49
50         /******************/
51         /* Function: 0x08 */
52
53         typedef struct {
54                 uint32 conn_id;
55         } srvsvc_NetConn0;
56
57         typedef struct {
58                 uint32 count;
59                 [size_is(count)] srvsvc_NetConn0 *array;
60         } srvsvc_NetConnCtr0;
61
62         typedef struct {
63                 uint32 conn_id;
64                 uint32 conn_type;
65                 uint32 num_open;
66                 uint32 num_users;
67                 uint32 conn_time;
68                 unistr *user;
69                 unistr *client;
70         } srvsvc_NetConn1;
71
72         typedef struct {
73                 uint32 count;
74                 [size_is(count)] srvsvc_NetConn1 *array;
75         } srvsvc_NetConnCtr1;
76
77         typedef struct {
78         } srvsvc_NetConnCtrDefault;
79
80         typedef [nodiscriminant,public] union {
81                 case(0) srvsvc_NetConnCtr0 *ctr0;
82                 case(1) srvsvc_NetConnCtr1 *ctr1;
83                 default srvsvc_NetConnCtrDefault ctrDefault;
84         } srvsvc_NetConnSubCtr;
85
86         typedef struct {
87                 uint32 level;
88                 uint32 level2;
89                 [switch_is(level)] srvsvc_NetConnSubCtr subctr;
90         } srvsvc_NetConnCtr;
91
92         WERROR srvsvc_NetConnEnum(
93                 [in]   unistr *server_unc,
94                 [in]   unistr *path,
95                 [in,out]   srvsvc_NetConnCtr ctr,
96                 [in]   uint32 preferred_len,
97                 [out]   uint32 total,
98                 [in,out]   uint32 *resume_handle
99                 );
100
101         /******************/
102         /* Function: 0x09 */
103
104         typedef struct {
105                 uint32 fid;
106         } srvsvc_NetFile2;
107
108         typedef struct {
109                 uint32 count;
110                 [size_is(count)] srvsvc_NetFile2 *array;
111         } srvsvc_NetFileCtr2;
112
113         typedef struct {
114                 uint32 fid;
115                 uint32 permissions;
116                 uint32 num_locks;
117                 unistr *path;
118                 unistr *user;
119         } srvsvc_NetFile3;
120
121         typedef struct {
122                 uint32 count;
123                 [size_is(count)] srvsvc_NetFile3 *array;
124         } srvsvc_NetFileCtr3;
125
126         typedef struct {
127         } srvsvc_NetFileCtrDefault;
128
129         typedef [nodiscriminant,public] union {
130                 case(2) srvsvc_NetFileCtr2 *ctr2;
131                 case(3) srvsvc_NetFileCtr3 *ctr3;
132                 default srvsvc_NetFileCtrDefault ctrDefault;
133         } srvsvc_NetFileSubCtr;
134
135         typedef struct {
136                 uint32 level;
137                 uint32 level2;
138                 [switch_is(level)] srvsvc_NetFileSubCtr subctr;
139         } srvsvc_NetFileCtr;
140
141         WERROR srvsvc_NetFileEnum(
142                 [in]   unistr *server_unc,
143                 [in]   unistr *path,
144                 [in]   unistr *user,
145                 [in,out]   srvsvc_NetFileCtr ctr,
146                 [in]   uint32 preferred_len,
147                 [out]   uint32 total,
148                 [in,out]   uint32 *resume_handle
149                 );
150
151         /******************/
152         /* Function: 0x0a */
153         NTSTATUS srvsvc_0a(
154                 );
155
156         /******************/
157         /* Function: 0x0b */
158         NTSTATUS srvsvc_NET_FILE_CLOSE(
159                 );
160
161         /******************/
162         /* Function: 0x0c */
163
164         typedef struct {
165                 unistr *client;
166         } srvsvc_NetSess0;
167
168         typedef struct {
169                 uint32 count;
170                 [size_is(count)] srvsvc_NetSess0 *array;
171         } srvsvc_NetSessCtr0;
172
173         typedef struct {
174                 unistr *client;
175                 unistr *user;
176                 uint32 num_open;
177                 uint32 time;
178                 uint32 idle_time;
179                 uint32 user_flags;
180         } srvsvc_NetSess1;
181
182         typedef struct {
183                 uint32 count;
184                 [size_is(count)] srvsvc_NetSess1 *array;
185         } srvsvc_NetSessCtr1;
186
187         typedef struct {
188                 unistr *client;
189                 unistr *user;
190                 uint32 num_open;
191                 uint32 time;
192                 uint32 idle_time;
193                 uint32 user_flags;
194                 unistr *client_type;
195         } srvsvc_NetSess2;
196
197         typedef struct {
198                 uint32 count;
199                 [size_is(count)] srvsvc_NetSess2 *array;
200         } srvsvc_NetSessCtr2;
201
202         typedef struct {
203                 unistr *client;
204                 unistr *user;
205                 uint32 time;
206                 uint32 idle_time;
207         } srvsvc_NetSess10;
208
209         typedef struct {
210                 uint32 count;
211                 [size_is(count)] srvsvc_NetSess10 *array;
212         } srvsvc_NetSessCtr10;
213
214         typedef struct {
215                 unistr *client;
216                 unistr *user;
217                 uint32 num_open;
218                 uint32 time;
219                 uint32 idle_time;
220                 uint32 user_flags;
221                 unistr *client_type;
222                 unistr *transport;
223         } srvsvc_NetSess502;
224
225         typedef struct {
226                 uint32 count;
227                 [size_is(count)] srvsvc_NetSess502 *array;
228         } srvsvc_NetSessCtr502;
229
230         typedef struct {
231         } srvsvc_NetSessCtrDefault;
232
233         typedef [nodiscriminant,public] union {
234                 case(0) srvsvc_NetSessCtr0 *ctr0;
235                 case(1) srvsvc_NetSessCtr1 *ctr1;
236                 case(2) srvsvc_NetSessCtr2 *ctr2;
237                 case(10) srvsvc_NetSessCtr10 *ctr10;
238                 case(502) srvsvc_NetSessCtr502 *ctr502;
239                 default srvsvc_NetSessCtrDefault ctrDefault;
240         } srvsvc_NetSessSubCtr;
241
242         typedef struct {
243                 uint32 level;
244                 uint32 level2;
245                 [switch_is(level)] srvsvc_NetSessSubCtr subctr;
246         } srvsvc_NetSessCtr;
247
248         WERROR srvsvc_NetSessEnum(
249                 [in]   unistr *server_unc,
250                 [in]   unistr *client,
251                 [in]   unistr *user,
252                 [in,out]   srvsvc_NetSessCtr ctr,
253                 [in]   uint32 preferred_len,
254                 [out]   uint32 total,
255                 [in,out]   uint32 *resume_handle
256                 );
257
258         /******************/
259         /* Function: 0x0d */
260         NTSTATUS srvsvc_0d(
261                 );
262
263         /******************/
264         /* Function: 0x0e */
265         NTSTATUS srvsvc_NET_SHARE_ADD(
266                 );
267
268         /******************/
269         /* Function: 0x0f */
270
271         typedef struct {
272                 unistr *name;
273         } srvsvc_NetShare0;
274
275         typedef struct {
276                 uint32 count;
277                 [size_is(count)] srvsvc_NetShare0 *array;
278         } srvsvc_NetShareCtr0;
279
280         typedef struct {
281                 unistr *name;
282                 uint32 type;
283                 unistr *comment;
284         } srvsvc_NetShare1;
285
286         typedef struct {
287                 uint32 count;
288                 [size_is(count)] srvsvc_NetShare1 *array;
289         } srvsvc_NetShareCtr1;
290
291         typedef struct {
292                 unistr *name;
293                 uint32 type;
294                 unistr *comment;
295                 uint32 permissions;
296                 uint32 max_users;
297                 uint32 current_users;
298                 unistr *path;
299                 uint32 *password;
300         } srvsvc_NetShare2;
301
302         typedef struct {
303                 uint32 count;
304                 [size_is(count)] srvsvc_NetShare2 *array;
305         } srvsvc_NetShareCtr2;
306
307         typedef struct {
308                 unistr *name;
309                 uint32 type;
310                 unistr *comment;
311                 uint32 csc_policy;
312         } srvsvc_NetShare501;
313
314         typedef struct {
315                 uint32 count;
316                 [size_is(count)] srvsvc_NetShare501 *array;
317         } srvsvc_NetShareCtr501;
318
319         typedef struct {
320                 unistr *name;
321                 uint32 type;
322                 unistr *comment;
323                 uint32 permissions;
324                 uint32 max_users;
325                 uint32 current_users;
326                 unistr *path;
327                 uint32 *password;
328                 uint32 unknown;
329                 [subcontext] security_descriptor *sd;
330         } srvsvc_NetShare502;
331
332         typedef struct {
333                 uint32 count;
334                 [size_is(count)] srvsvc_NetShare502 *array;
335         } srvsvc_NetShareCtr502;
336
337         typedef struct {
338         } srvsvc_NetShareCtrDefault;
339
340         typedef [nodiscriminant,public] union {
341                 case(0) srvsvc_NetShareCtr0 *ctr0;
342                 case(1) srvsvc_NetShareCtr1 *ctr1;
343                 case(2) srvsvc_NetShareCtr2 *ctr2;
344                 case(501) srvsvc_NetShareCtr501 *ctr501;
345                 case(502) srvsvc_NetShareCtr502 *ctr502;
346                 default srvsvc_NetShareCtrDefault ctrDefault;
347         } srvsvc_NetShareSubCtr;
348
349         typedef struct {
350                 uint32 level;
351                 [switch_is(level)] srvsvc_NetShareSubCtr subctr;
352         } srvsvc_NetShareCtr;
353         
354         WERROR srvsvc_NetShareEnumAll(
355                 [in]       unistr *server_unc,
356                 [in]       uint32 level,
357                 [in,out]   srvsvc_NetShareCtr ctr,
358                 [in]       uint32 preferred_len,
359                 [out]      uint32 totalentries,
360                 [in,out]   uint32 *resume_handle
361                 );
362
363         /******************/
364         /* Function: 0x10 */
365         NTSTATUS srvsvc_NET_SHARE_GET_INFO(
366                 );
367
368         /******************/
369         /* Function: 0x11 */
370         NTSTATUS srvsvc_NET_SHARE_SET_INFO(
371                 );
372
373         /******************/
374         /* Function: 0x12 */
375         NTSTATUS srvsvc_NET_SHARE_DEL(
376                 );
377
378         /******************/
379         /* Function: 0x13 */
380         NTSTATUS srvsvc_NET_SHARE_DEL_STICKY(
381                 );
382         
383         /******************/
384         /* Function: 0x14 */
385         NTSTATUS srvsvc_14(
386                 );
387
388         /******************/
389         /* Function: 0x15 */
390         NTSTATUS srvsvc_NET_SRV_GET_INFO(
391                 );
392
393         /******************/
394         /* Function: 0x16 */
395         NTSTATUS srvsvc_NET_SRV_SET_INFO(
396                 );
397
398         /******************/
399         /* Function: 0x17 */
400
401         typedef struct {
402                 uint32 unknown;
403                 uint32 size;
404                 [size_is(size)] uint8 *disk;
405         } srvsvc_NetDisk0;
406
407         typedef struct {
408                 uint32 count;
409                 uint32 unknown1;
410                 uint32 unknown2;
411                 [size_is(count)] srvsvc_NetDisk0 *array;
412         } srvsvc_NetDiskCtr0;
413
414         typedef struct {
415                 uint32 dummy;
416         } srvsvc_NetDisk1;
417
418         typedef struct {
419                 uint32 count;
420                 [size_is(count)] srvsvc_NetDisk1 *array;
421         } srvsvc_NetDiskCtr1;
422
423         typedef struct {
424                 uint32 dummy;
425         } srvsvc_NetDisk2;
426
427         typedef struct {
428                 uint32 count;
429                 [size_is(count)] srvsvc_NetDisk2 *array;
430         } srvsvc_NetDiskCtr2;
431
432         typedef struct {
433                 uint32 dummy;
434         } srvsvc_NetDisk3;
435
436         typedef struct {
437                 uint32 count;
438                 [size_is(count)] srvsvc_NetDisk3 *array;
439         } srvsvc_NetDiskCtr3;
440
441         typedef struct {
442         } srvsvc_NetDiskCtrDefault;
443
444         typedef [nodiscriminant,public] union {
445                 case(0) srvsvc_NetDiskCtr0 ctr0;
446                 case(1) srvsvc_NetDiskCtr1 ctr1;
447                 case(2) srvsvc_NetDiskCtr2 ctr2;
448                 case(3) srvsvc_NetDiskCtr3 ctr3;
449                 default srvsvc_NetDiskCtrDefault ctrDefault;
450         } srvsvc_NetDiskSubCtr;
451
452         typedef struct {
453                 uint32 num1;
454                 srvsvc_NetDiskCtr0 *ctr0;
455         } srvsvc_NetDiskCtr;
456
457         WERROR srvsvc_NetDiskEnum(
458                 [in]   unistr *server_unc,
459                 [in]   uint32 level,
460                 [in]   uint32 unknown1,
461                 [in]   uint32 unknown2,
462                 [in]   uint32 preferred_len,
463                 [out]   srvsvc_NetDiskCtr ctr,
464                 [out]   uint32 total,
465                 [in,out]   uint32 *resume_handle
466                 );
467
468         /******************/
469         /* Function: 0x18 */
470         NTSTATUS srvsvc_18(
471                 );
472
473         /******************/
474         /* Function: 0x19 */
475         NTSTATUS srvsvc_19(
476                 );
477                 
478         /******************/
479         /* Function: 0x1a */
480
481         typedef struct {
482                 uint32 count;
483                 [size_is(count)] uint8 *addr;
484         } srvsvc_TransportAddress;
485
486         typedef struct {
487                 uint32 vcs;
488                 unistr *name;
489                 srvsvc_TransportAddress *addr;
490                 uint32 addr_len;
491                 unistr *net_addr;
492         } srvsvc_NetTransport0;
493
494         typedef struct {
495                 uint32 count;
496                 [size_is(count)] srvsvc_NetTransport0 *array;
497         } srvsvc_NetTransportCtr0;
498
499         typedef struct {
500                 uint32 vcs;
501                 unistr *name;
502                 srvsvc_TransportAddress *addr;
503                 uint32 addr_len;
504                 unistr *net_addr;
505                 unistr *domain;
506         } srvsvc_NetTransport1;
507
508         typedef struct {
509                 uint32 count;
510                 [size_is(count)] srvsvc_NetTransport1 *array;
511         } srvsvc_NetTransportCtr1;
512
513         typedef struct {
514                 uint32 dummy;
515         } srvsvc_NetTransport2;
516
517         typedef struct {
518                 uint32 count;
519                 [size_is(count)] srvsvc_NetTransport2 *array;
520         } srvsvc_NetTransportCtr2;
521
522         typedef struct {
523         } srvsvc_NetTransportCtrDefault;
524
525         typedef [nodiscriminant,public] union {
526                 case(0) srvsvc_NetTransportCtr0 *ctr0;
527                 case(1) srvsvc_NetTransportCtr1 *ctr1;
528                 case(2) srvsvc_NetTransportCtr2 *ctr2;
529                 default srvsvc_NetTransportCtrDefault ctrDefault;
530         } srvsvc_NetTransportSubCtr;
531
532         typedef struct {
533                 uint32 level;
534                 uint32 level2;
535                 [switch_is(level)] srvsvc_NetTransportSubCtr subctr;
536         } srvsvc_NetTransportCtr;
537         
538         WERROR srvsvc_NetTransportEnum(
539                 [in]   unistr *server_unc,
540                 [in,out]   srvsvc_NetTransportCtr ctr,
541                 [in]   uint32 preferred_len,
542                 [out]   uint32 total,
543                 [in,out]   uint32 *resume_handle
544                 );
545
546         /******************/
547         /* Function: 0x1b */
548         NTSTATUS srvsvc_1b(
549                 );
550
551         /******************/
552         /* Function: 0x1c */
553         NTSTATUS srvsvc_NET_REMOTE_TOD(
554                 );
555
556         /******************/
557         /* Function: 0x1d */
558         NTSTATUS srvsvc_1d(
559                 );
560
561         /******************/
562         /* Function: 0x1e */
563         NTSTATUS srvsvc_1e(
564                 );
565
566         /******************/
567         /* Function: 0x1f */
568         NTSTATUS srvsvc_1f(
569                 );
570
571         /******************/
572         /* Function: 0x20 */
573         NTSTATUS srvsvc_20(
574                 );
575
576         /******************/
577         /* Function: 0x21 */
578         NTSTATUS srvsvc_NET_NAME_VALIDATE(
579                 );
580
581         /******************/
582         /* Function: 0x22 */
583         NTSTATUS srvsvc_22(
584                 );
585
586         /******************/
587         /* Function: 0x23 */
588         NTSTATUS srvsvc_23(
589                 );
590
591         /******************/
592         /* Function: 0x24 */
593         /* Note, there must be some way to return entries read vs 
594            total entries ... */
595         WERROR srvsvc_NetShareEnum(
596                 [in]       unistr *server_unc,
597                 [in]       uint32 level,
598                 [in,out]   srvsvc_NetShareCtr ctr,
599                 [in]       uint32 preferred_len,
600                 [out]      uint32 entriesread,  
601                 [out]      uint32 totalentries,
602                 [in,out]   uint32 *resume_handle
603                 );
604
605         /******************/
606         /* Function: 0x25 */
607         NTSTATUS srvsvc_25(
608                 );
609
610         /******************/
611         /* Function: 0x26 */
612         NTSTATUS srvsvc_26(
613                 );
614
615         /******************/
616         /* Function: 0x27 */
617         NTSTATUS srvsvc_NET_FILE_QUERY_SECDESC(
618                 );
619
620         /******************/
621         /* Function: 0x28 */
622         NTSTATUS srvsvc_NET_FILE_SET_SECDESC(
623                 );
624 }