r24449: length_is() isn't supported without size_is().
[ira/wip.git] / source4 / librpc / idl / frsrpc.idl
1 #include "idl_types.h"
2
3 import "misc.idl";
4
5 [
6   uuid("f5cc59b4-4264-101a-8c59-08002b2f8426"),
7   version(1.1),
8   endpoint("ncacn_ip_tcp:", "ncalrpc:"),
9   helpstring("File Replication Service"),
10   pointer_default(unique)
11
12 interface frsrpc
13 {
14         /*****************/
15         /* Function 0x00 */
16         typedef struct {
17                 uint32 unknown1;
18         } frsrpc_FrsSendCommPktChunkDataA;
19
20         typedef struct {
21                 uint32 unknown1;
22                 GUID unknown2;
23                 [subcontext(4)] nstring unknown3;
24         } frsrpc_FrsSendCommPktChunkDataB;
25
26         typedef struct {
27                 uint32 unknown1;
28                 GUID unknown2;
29         } frsrpc_FrsSendCommPktChunkDataC;
30
31         typedef struct {
32                 NTTIME time;
33         } frsrpc_FrsSendCommPktChunkDataD;
34
35         typedef [nodiscriminant] union {
36                 [default,flag(NDR_REMAINING)] DATA_BLOB blob;
37                 [case(1)] frsrpc_FrsSendCommPktChunkDataA A;
38                 [case(2)] frsrpc_FrsSendCommPktChunkDataA A;
39                 [case(3)] frsrpc_FrsSendCommPktChunkDataB B;
40                 [case(4)] frsrpc_FrsSendCommPktChunkDataB B;
41                 [case(5)] frsrpc_FrsSendCommPktChunkDataB B;
42                 [case(8)] frsrpc_FrsSendCommPktChunkDataB B;
43                 [case(6)] frsrpc_FrsSendCommPktChunkDataC C;
44                 [case(18)] frsrpc_FrsSendCommPktChunkDataD D;
45                 [case(19)] frsrpc_FrsSendCommPktChunkDataA A;
46         } frsrpc_FrsSendCommPktChunkData;
47
48         typedef struct {
49                 uint16 type;
50                 [subcontext(4),switch_is(type)] frsrpc_FrsSendCommPktChunkData data;
51         } frsrpc_FrsSendCommPktChunk;
52
53         typedef [flag(NDR_NOALIGN)] struct {
54                 frsrpc_FrsSendCommPktChunk chunk1;
55                 frsrpc_FrsSendCommPktChunk chunk2;
56                 frsrpc_FrsSendCommPktChunk chunk3;
57                 frsrpc_FrsSendCommPktChunk chunk4;
58                 frsrpc_FrsSendCommPktChunk chunk5;
59                 frsrpc_FrsSendCommPktChunk chunk6;
60                 frsrpc_FrsSendCommPktChunk chunk7;
61                 frsrpc_FrsSendCommPktChunk chunk8;
62                 frsrpc_FrsSendCommPktChunk chunk9;
63         } frsrpc_FrsSendCommPktChunkCtr;
64
65         typedef struct {
66                 uint32 unknown1;
67                 uint32 unknown2;
68                 uint32 unknown3;
69                 uint32 unknown4;
70                 uint32 unknown5;
71                 uint32 unknown6;
72                 /*
73                  * the format of this blob is this:
74                  *
75                  * some of the folloeing chunks are concatenated:
76                  *
77                  * struct {
78                  *      uint16 type;
79                  *      [subcontext(4),switch_is(type)] chunk_data data;
80                  * } chunk;
81                  * 
82                  * some of the chunk are like this:
83                  *
84                  * struct {
85                  *      uint32 unknown; // 0x00000010
86                  *      struct GUID guid;
87                  *      lstring string;
88                  * } ...;
89                  */
90                 [subcontext(4)/*,size_is(unknown5)*/] frsrpc_FrsSendCommPktChunkCtr *chunks;
91                 uint32 unknown8;
92                 uint32 unknown9;
93         } frsrpc_FrsSendCommPktReq;
94
95         WERROR frsrpc_FrsSendCommPkt(
96                 [in]    frsrpc_FrsSendCommPktReq req
97         );
98
99         /*****************/
100         /* Function 0x01 */
101         void FRSRPC_VERIFY_PROMOTION_PARENT();
102
103         /*****************/
104         /* Function 0x02 */
105         void FRSRPC_START_PROMOTION_PARENT();
106
107         /*****************/
108         /* Function 0x03 */
109         void FRSRPC_NOP();
110
111         /*****************/
112         /* Function 0x04 */
113         void FRSRPC_BACKUP_COMPLETE();
114
115         /*****************/
116         /* Function 0x05 */
117         void FRSRPC_BACKUP_COMPLETE_5();
118
119         /*****************/
120         /* Function 0x06 */
121         void FRSRPC_BACKUP_COMPLETE_6();
122
123         /*****************/
124         /* Function 0x07 */
125         void FRSRPC_BACKUP_COMPLETE_7();
126
127         /*****************/
128         /* Function 0x08 */
129         void FRSRPC_BACKUP_COMPLETE_8();
130
131         /*****************/
132         /* Function 0x09 */
133         void FRSRPC_BACKUP_COMPLETE_9();
134
135         /*****************/
136         /* Function 0x0a */
137         void FRSRPC_VERIFY_PROMOTION_PARENT_EX();
138 }