Merge branch 'v4-0-test' of ssh://git.samba.org/data/git/samba into v4-0-wsgi
[samba.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
17         /* TAG:3 this TLV contains a GUID and the name of the server sending
18          * the call
19          */
20         typedef struct {
21                 [subcontext(4)] GUID unknown1;
22                 [subcontext(4)] nstring source_server;
23         } frsrpc_FrsSendCommPktChunkDataSSRV;
24
25         /* TAG:4 this TLV contains a GUID and the name of the destination
26          * server the PDU is sent to
27          */
28         typedef struct {
29                 [subcontext(4)] GUID unknown1;
30                 [subcontext(4)] nstring dest_server;
31         } frsrpc_FrsSendCommPktChunkDataDSRV;
32
33         /* TAG:18 this TLV contains a  timestamp 
34         */
35         typedef struct {
36                 [subcontext(4)] NTTIME time;
37         } frsrpc_FrsSendCommPktChunkDataTS;
38
39
40         typedef struct {
41                 uint32 unknown1;
42         } frsrpc_FrsSendCommPktChunkDataA;
43
44         typedef struct {
45                 uint32 unknown1;
46                 GUID unknown2;
47                 [subcontext(4)] nstring unknown3;
48         } frsrpc_FrsSendCommPktChunkDataB;
49
50         typedef struct {
51                 uint32 unknown1;
52                 GUID unknown2;
53         } frsrpc_FrsSendCommPktChunkDataC;
54
55         typedef [nodiscriminant] union {
56                 [default,flag(NDR_REMAINING)] DATA_BLOB blob;
57                 [case(1)] frsrpc_FrsSendCommPktChunkDataA A;
58                 [case(2)] frsrpc_FrsSendCommPktChunkDataA A;
59                 [case(3)] frsrpc_FrsSendCommPktChunkDataSSRV SSRV;
60                 [case(4)] frsrpc_FrsSendCommPktChunkDataDSRV DSRV;
61                 [case(5)] frsrpc_FrsSendCommPktChunkDataB B;
62                 [case(8)] frsrpc_FrsSendCommPktChunkDataB B;
63                 [case(6)] frsrpc_FrsSendCommPktChunkDataC C;
64                 [case(18)] frsrpc_FrsSendCommPktChunkDataTS TS;
65                 [case(19)] frsrpc_FrsSendCommPktChunkDataA A;
66         } frsrpc_FrsSendCommPktChunkData;
67
68         typedef struct {
69                 uint16 type;
70                 [subcontext(4),switch_is(type)] frsrpc_FrsSendCommPktChunkData data;
71         } frsrpc_FrsSendCommPktChunk;
72
73         typedef [flag(NDR_NOALIGN)] struct {
74                 frsrpc_FrsSendCommPktChunk chunk1;
75                 frsrpc_FrsSendCommPktChunk chunk2;
76                 frsrpc_FrsSendCommPktChunk chunk3;
77                 frsrpc_FrsSendCommPktChunk chunk4;
78                 frsrpc_FrsSendCommPktChunk chunk5;
79                 frsrpc_FrsSendCommPktChunk chunk6;
80                 frsrpc_FrsSendCommPktChunk chunk7;
81                 frsrpc_FrsSendCommPktChunk chunk8;
82                 frsrpc_FrsSendCommPktChunk chunk9;
83         } frsrpc_FrsSendCommPktChunkCtr;
84
85         typedef struct {
86                 uint32 unknown1;
87                 uint32 unknown2;
88                 uint32 unknown3;
89                 uint32 unknown4;
90                 uint32 tlv_size;
91                 uint32 unknown6;
92                 uint32 unknown7; /* This may be a UNIQUE pointer? */
93                 uint32 unknown8;
94                 uint32 unknown9;
95                 /*
96                  * The format of this blob is this a concatenation
97                  * of TLVs which are not really NDR encoded.
98                  *
99                  * The individual TLVs are encoded as :
100                  * struct {
101                  *      uint16 type;
102                  *      [subcontext(4),switch_is(type)] chunk_data data;
103                  * } chunk;
104                  * 
105                  * some of the chunk are like this:
106                  *
107                  * struct {
108                  *      uint32 unknown; // 0x00000010
109                  *      struct GUID guid;
110                  *      lstring string;
111                  * } ...;
112                  *
113                  *
114                  * The tags are (might be) :
115                  *  3: Source server sending the PDU
116                  *  4: Destination server the PDU is sent to
117                  * 18: Timestamp
118                  *
119                  */
120                 [subcontext(4)/*,size_is(tlv_size)*/] frsrpc_FrsSendCommPktChunkCtr *chunks;
121                 uint32 unknown10;
122                 uint32 unknown11;
123         } frsrpc_FrsSendCommPktReq;
124
125         WERROR frsrpc_FrsSendCommPkt(
126                 [in]    frsrpc_FrsSendCommPktReq req
127         );
128
129         /*****************/
130         /* Function 0x01 */
131         [todo] void FRSRPC_VERIFY_PROMOTION_PARENT();
132
133         /*****************/
134         /* Function 0x02 */
135         [todo] void FRSRPC_START_PROMOTION_PARENT();
136
137         /*****************/
138         /* Function 0x03 */
139         [todo] void FRSRPC_NOP();
140
141         /*****************/
142         /* Function 0x04 */
143         [todo] void FRSRPC_BACKUP_COMPLETE();
144
145         /*****************/
146         /* Function 0x05 */
147         [todo] void FRSRPC_BACKUP_COMPLETE_5();
148
149         /*****************/
150         /* Function 0x06 */
151         [todo] void FRSRPC_BACKUP_COMPLETE_6();
152
153         /*****************/
154         /* Function 0x07 */
155         [todo] void FRSRPC_BACKUP_COMPLETE_7();
156
157         /*****************/
158         /* Function 0x08 */
159         [todo] void FRSRPC_BACKUP_COMPLETE_8();
160
161         /*****************/
162         /* Function 0x09 */
163         [todo] void FRSRPC_BACKUP_COMPLETE_9();
164
165         /*****************/
166         /* Function 0x0a */
167         [todo] void FRSRPC_VERIFY_PROMOTION_PARENT_EX();
168 }