idl: frsrpc depends on bkupblobs.idl and fscc.idl
[samba.git] / librpc / idl / frsrpc.idl
1 #include "idl_types.h"
2
3 import "misc.idl";
4 import "fscc.idl";
5 import "bkupblobs.idl";
6
7 [
8   uuid("f5cc59b4-4264-101a-8c59-08002b2f8426"),
9   version(1.1),
10   endpoint("ncacn_ip_tcp:", "ncalrpc:"),
11   helpstring("File Replication Service"),
12   helper("../librpc/ndr/ndr_frsrpc.h"),
13   pointer_default(unique)
14
15 interface frsrpc
16 {
17
18         /*****************/
19         /* Function 0x00 */
20
21         typedef struct {
22                 [subcontext(4)] GUID guid;
23                 [subcontext(4)] nstring name;
24         } frsrpc_CommPktChunkGuidName;
25
26         typedef struct {
27                 hyper vsn;
28                 GUID guid;
29         } frsrpc_CommPktGSVN;
30
31         typedef [bitmap32bit,flag(NDR_PAHEX)] bitmap {
32                 FRSRPC_CO_FLAG_ABORT_CO = 0x00000001,
33                 FRSRPC_CO_FLAG_VV_ACTIVATED     = 0x00000002,
34                 FRSRPC_CO_FLAG_CONTENT_CMD      = 0x00000004,
35                 FRSRPC_CO_FLAG_LOCATION_CMD     = 0x00000008,
36                 FRSRPC_CO_FLAG_ONLIST           = 0x00000010,
37                 FRSRPC_CO_FLAG_LOCALCO          = 0x00000020,
38                 FRSRPC_CO_FLAG_RETRY            = 0x00000040,
39                 FRSRPC_CO_FLAG_OUT_OF_ORDER     = 0x00000200,
40                 FRSRPC_CO_FLAG_NEW_FILE         = 0x00000400,
41                 FRSRPC_CO_FLAG_CONTROL          = 0x00001000,
42                 FRSRPC_CO_FLAG_DIRECTED_CO      = 0x00002000,
43                 FRSRPC_CO_FLAG_VVJOIN_TO_ORIG   = 0x00040000,
44                 FRSRPC_CO_FLAG_SKIP_ORIG_REC_C  = 0x00100000,
45                 FRSRPC_CO_FLAG_MOVEIN_GEN       = 0x00200000,
46                 FRSRPC_CO_FLAG_MORPH_GEN_HEAD   = 0x00400000,
47                 FRSRPC_CO_FLAG_JUST_OID_RESET   = 0x00800000,
48                 FRSRPC_CO_FLAG_COMPRESSED_STAGE = 0x01000000,
49                 FRSRPC_CO_FLAG_SKIP_VV_UPDATE   = 0x02000000
50         } frsrpc_CommPktCoCmdFlags;
51
52         const uint32 FRSRPC_CO_IFLAG_NONE = 0x0000000;
53
54         typedef [bitmap32bit,flag(NDR_PAHEX)] bitmap {
55                 FRSRPC_CO_IFLAG_VVRETIRE_EXEC   = 0x00000001,
56                 FRSRPC_CO_IFLAG_CO_ABORT        = 0x00000002,
57                 FRSRPC_CO_IFLAG_DIR_ENUM_PENDING= 0x00000004
58         } frsrpc_CommPktCoCmdIFlags;
59
60         typedef [v1_enum,flag(NDR_PAHEX)] enum {
61                 FRSRPC_CO_STATUS_CO_ENTERED_LOG                 = 0x00000000,
62                 FRSRPC_CO_STATUS_ALLOC_STAGING_LOCAL_CO         = 0x00000001,
63                 FRSRPC_CO_STATUS_LOCAL_CO_STAGING_STARTED       = 0x00000002,
64                 FRSRPC_CO_STATUS_LOCAL_CO_STAGING_COMPLETED     = 0x00000003,
65                 FRSRPC_CO_STATUS_WAIT_RETRY_LOCAL_CO_STAGING    = 0x00000004,
66                 FRSRPC_CO_STATUS_ALLOC_STAGING_REMOTE_CO        = 0x00000005,
67                 FRSRPC_CO_STATUS_REMOTE_CO_STAGING_STARTED      = 0x00000006,
68                 FRSRPC_CO_STATUS_REMOTE_CO_STAGING_COMPLETED    = 0x00000007,
69                 FRSRPC_CO_STATUS_WAIT_RETRY_REMOTE_CO_STAGING   = 0x00000008,
70                 FRSRPC_CO_STATUS_FILE_INSTALL_REQUESTED         = 0x00000009,
71                 FRSRPC_CO_STATUS_FILE_INSTALL_STARTED           = 0x0000000A,
72                 FRSRPC_CO_STATUS_FILE_INSTALL_COMPLETED         = 0x0000000B,
73                 FRSRPC_CO_STATUS_FILE_INSTALL_WAIT_RETRY        = 0x0000000C,
74                 FRSRPC_CO_STATUS_FILE_INSTALL_RETRYING          = 0x0000000D,
75                 FRSRPC_CO_STATUS_FILE_INSTALL_RENAME_RETRYING   = 0x0000000E,
76                 FRSRPC_CO_STATUS_FILE_INSTALL_DELETE_RETRYING   = 0x0000000F,
77                 FRSRPC_CO_STATUS_CO_RECYCLED_FOR_ENUM           = 0x00000013,
78                 FRSRPC_CO_STATUS_REQUEST_OUTBOUND_PROPAGATION   = 0x00000014,
79                 FRSRPC_CO_STATUS_REQUEST_ACCEPTED_OUTBOUND_LOG  = 0x00000015,
80                 FRSRPC_CO_STATUS_DB_STATE_UPDATE_STARTED        = 0x00000016,
81                 FRSRPC_CO_STATUS_DB_STATE_UPDATE_COMPLETED      = 0x00000017,
82                 FRSRPC_CO_STATUS_CO_ABORTED                     = 0x00000018
83         } frsrpc_CommPktCoCmdStatus;
84
85         typedef [bitmap32bit,flag(NDR_PAHEX)] bitmap {
86                 FRSRPC_CONTENT_REASON_DATA_OVERWRITE            = 0x00000001,
87                 FRSRPC_CONTENT_REASON_DATA_EXTEND               = 0x00000002,
88                 FRSRPC_CONTENT_REASON_DATA_TRUNCATION           = 0x00000004,
89                 FRSRPC_CONTENT_REASON_NAMED_DATA_OVERWRITE      = 0x00000010,
90                 FRSRPC_CONTENT_REASON_NAMED_DATA_EXTEND         = 0x00000020,
91                 FRSRPC_CONTENT_REASON_NAMED_DATA_TRUNCATION     = 0x00000040,
92                 FRSRPC_CONTENT_REASON_FILE_CREATE               = 0x00000100,
93                 FRSRPC_CONTENT_REASON_FILE_DELETE               = 0x00000200,
94                 FRSRPC_CONTENT_REASON_EA_CHANGE                 = 0x00000400,
95                 FRSRPC_CONTENT_REASON_SECURITY_CHANGE           = 0x00000800,
96                 FRSRPC_CONTENT_REASON_OLD_NAME                  = 0x00001000,
97                 FRSRPC_CONTENT_REASON_NEW_NAME                  = 0x00002000,
98                 FRSRPC_CONTENT_REASON_BASIC_INFO_CHANGE         = 0x00004000,
99                 FRSRPC_CONTENT_REASON_COMPRESSION_CHANGE        = 0x00020000
100         } frsrpc_CommPktCoCmdContentCmd;
101
102         typedef [v1_enum,flag(NDR_PAHEX)] enum {
103                 FRSRPC_CO_LOCATION_FILE_CREATE  = 0x00000000,
104                 FRSRPC_CO_LOCATION_DIR_CREATE   = 0x00000000 | 0x00000001,
105                 FRSRPC_CO_LOCATION_FILE_DELETE  = 0x00000002,
106                 FRSRPC_CO_LOCATION_DIR_DELETE   = 0x00000002 | 0x00000001,
107                 FRSRPC_CO_LOCATION_FILE_MOVEIN  = 0x00000004,
108                 FRSRPC_CO_LOCATION_DIR_MOVEIN   = 0x00000004 | 0x00000001,
109                 FRSRPC_CO_LOCATION_FILE_MOVEIN2 = 0x00000006,
110                 FRSRPC_CO_LOCATION_DIR_MOVEIN2  = 0x00000006 | 0x00000001,
111                 FRSRPC_CO_LOCATION_FILE_MOVEOUT = 0x00000008,
112                 FRSRPC_CO_LOCATION_DIR_MOVEOUT  = 0x00000008 | 0x00000001,
113                 FRSRPC_CO_LOCATION_FILE_MOVERS  = 0x0000000a,
114                 FRSRPC_CO_LOCATION_DIR_MOVERS   = 0x0000000a | 0x00000001,
115                 FRSRPC_CO_LOCATION_FILE_MOVEDIR = 0x0000000c,
116                 FRSRPC_CO_LOCATION_DIR_MOVEDIR  = 0x0000000c | 0x00000001,
117                 FRSRPC_CO_LOCATION_FILE_NO_CMD  = 0x0000000e,
118                 FRSRPC_CO_LOCATION_DIR_NO_CMD   = 0x0000000e | 0x00000001
119         } frsrpc_CommPktCoCmdLocationCmd;
120
121         [public] typedef struct {
122                 uint32 sequence_number;
123                 frsrpc_CommPktCoCmdFlags flags;
124                 frsrpc_CommPktCoCmdIFlags iflags;
125                 frsrpc_CommPktCoCmdStatus status;
126                 frsrpc_CommPktCoCmdContentCmd content_cmd;
127                 frsrpc_CommPktCoCmdLocationCmd location_cmd;
128                 uint32 file_attributes;
129                 uint32 file_version_number;
130                 uint32 partern_ack_sequence_number;
131                 [value(0)] uint32 not_used;
132                 hyper file_size;
133                 hyper file_offset;
134                 hyper frs_vsn;
135                 hyper file_usn;
136                 hyper jrnl_usn;
137                 hyper jrnl_first_usn;
138                 uint32 original_replica_num;
139                 uint32 new_replica_num;
140                 GUID change_order_guid;
141                 GUID originator_guid;
142                 GUID file_guid;
143                 GUID old_parent_guid;
144                 GUID new_parent_guid;
145                 GUID connection_guid;
146                 hyper ack_version;
147                 [value(0)] hyper spare2ul1;
148                 [value(0)] hyper spare1guid_p1;
149                 [value(0)] hyper spare1guid_p2;
150                 [value(0)] hyper spare2guid_p1;
151                 [value(0)] hyper spare3guid_p2;
152                 [value(0)] uint32 spare1wcs;
153                 [value(0)] uint32 spare2wcs;
154                 [value(0)] uint32 extension;
155                 [value(0)] uint32 spare2bin;
156                 NTTIME event_time;
157                 [value(2*strlen_m(file_name))] uint16 file_name_length;
158 #define FRSRPC_MAX_PATH 260
159                 [charset(UTF16)] uint16 file_name[FRSRPC_MAX_PATH+1];
160                 [value(0)] uint8 padding1;
161                 [value(0)] uint8 padding2;
162                 [value(0)] uint8 padding3;
163                 [value(0)] uint8 padding4;
164         } frsrpc_CommPktChangeOrderCommand;
165
166         typedef [v1_enum,flag(NDR_PAHEX)] enum {
167                 FRSRPC_DATA_EXTENSION_TERMINATOR        = 0x00000000,
168                 FRSRPC_DATA_EXTENSION_MD5_CHECKSUM      = 0x00000001,
169                 FRSRPC_DATA_EXTENSION_RETRY_TIMEOUT     = 0x00000002
170         } frsrpc_CommPktDataExtensionType;
171
172         typedef [flag(NDR_PAHEX)] struct {
173                 [value(0x00000018)] uint32 prefix_size;
174                 [value(FRSRPC_DATA_EXTENSION_MD5_CHECKSUM)]
175                         frsrpc_CommPktDataExtensionType prefix_type;
176                 uint8 data[16];
177         } frsrpc_CommPktDataExtensionChecksum;
178
179         typedef struct {
180                 [value(0x00000018)] uint32 prefix_size;
181                 [value(FRSRPC_DATA_EXTENSION_RETRY_TIMEOUT)]
182                         frsrpc_CommPktDataExtensionType prefix_type;
183                 uint32 count;
184                 [value(0)] uint32 not_used;
185                 NTTIME first_try_time;
186         } frsrpc_CommPktDataExtensionRetryTimeout;
187
188         typedef [flag(NDR_PAHEX)] enum {
189                 FRSRPC_CO_RECORD_EXTENSION_VERSION_WIN2K        = 0x0000,
190                 FRSRPC_CO_RECORD_EXTENSION_VERSION_1            = 0x0001
191         } frsrpc_CommPktCoRecordExtensionMajor;
192
193         typedef struct {
194                 [value(0x00000028)] uint32 field_size;
195                 [value(FRSRPC_CO_RECORD_EXTENSION_VERSION_WIN2K)]
196                         frsrpc_CommPktCoRecordExtensionMajor major;
197                 [value(0x0001)] uint16 offset_count;
198                 [value(0x00000010)] uint32 offset;
199                 [value(0)] uint32 offset_last;
200                 frsrpc_CommPktDataExtensionChecksum data_checksum;
201         } frsrpc_CommPktCoRecordExtensionWin2k;
202
203         typedef struct {
204                 [value(0x00000048)] uint32 field_size;
205                 frsrpc_CommPktCoRecordExtensionMajor major;
206                 [value(0x0002)] uint16 offset_count;
207                 [value(0x00000018)] uint32 offset0;
208                 [value(0x00000030)] uint32 offset1;
209                 [value(0)] uint32 offset_last;
210                 [value(0)] uint32 not_used;
211                 frsrpc_CommPktDataExtensionChecksum data_checksum;
212                 frsrpc_CommPktDataExtensionRetryTimeout data_retry_timeout;
213         } frsrpc_CommPktChangeOrderRecordExtension;
214
215         typedef [v1_enum,flag(NDR_PAHEX)] enum {
216                 FRSRPC_COMMAND_REMOTE_CO                = 0x00000218,
217                 FRSRPC_COMMAND_RECEIVING_STATE          = 0x00000238,
218                 FRSRPC_COMMAND_REMOTE_CO_DONE           = 0x00000250,
219                 FRSRPC_COMMAND_ABORT_FETCH              = 0x00000246,
220                 FRSRPC_COMMAND_RETRY_FETCH              = 0x00000244,
221                 FRSRPC_COMMAND_NEED_JOIN                = 0x00000121,
222                 FRSRPC_COMMAND_START_JOIN               = 0x00000122,
223                 FRSRPC_COMMAND_JOINING                  = 0x00000130,
224                 FRSRPC_COMMAND_JOINED                   = 0x00000128,
225                 FRSRPC_COMMAND_UNJOIN_REMOTE            = 0x00000148,
226                 FRSRPC_COMMAND_WJOIN_DONE               = 0x00000136,
227                 FRSRPC_COMMAND_SEND_STAGE               = 0x00000228
228         } frsrpc_CommPktCommand;
229
230         typedef [flag(NDR_PAHEX)] enum {
231                 FRSRPC_COMM_PKT_CHUNK_BOP                       = 0x0001,
232                 FRSRPC_COMM_PKT_CHUNK_COMMAND                   = 0x0002,
233                 FRSRPC_COMM_PKT_CHUNK_TO                        = 0x0003,
234                 FRSRPC_COMM_PKT_CHUNK_FROM                      = 0x0004,
235                 FRSRPC_COMM_PKT_CHUNK_REPLICA                   = 0x0005,
236                 FRSRPC_COMM_PKT_CHUNK_CONNECTION                = 0x0008,
237                 FRSRPC_COMM_PKT_CHUNK_JOIN_GUID                 = 0x0006,
238                 FRSRPC_COMM_PKT_CHUNK_LAST_JOIN_TIME            = 0x0012,
239
240                 FRSRPC_COMM_PKT_CHUNK_VVECTOR                   = 0x0007,
241                 FRSRPC_COMM_PKT_CHUNK_JOIN_TIME                 = 0x0011,
242                 FRSRPC_COMM_PKT_CHUNK_REPLICA_VERSION_GUID      = 0x0014,
243                 FRSRPC_COMM_PKT_CHUNK_COMPRESSION_GUID          = 0x0018,
244
245                 FRSRPC_COMM_PKT_CHUNK_BLOCK                     = 0x0009,
246                 FRSRPC_COMM_PKT_CHUNK_BLOCK_SIZE                = 0x000A,
247                 FRSRPC_COMM_PKT_CHUNK_FILE_SIZE                 = 0x000B,
248                 FRSRPC_COMM_PKT_CHUNK_FILE_OFFSET               = 0x000C,
249                 FRSRPC_COMM_PKT_CHUNK_GVSN                      = 0x000E,
250                 FRSRPC_COMM_PKT_CHUNK_CO_GUID                   = 0x000F,
251                 FRSRPC_COMM_PKT_CHUNK_CO_SEQUENCE_NUMBER        = 0x0010,
252
253                 FRSRPC_COMM_PKT_CHUNK_REMOTE_CO                 = 0x000D,
254                 FRSRPC_COMM_PKT_CHUNK_CO_EXT_WIN2K              = 0x0016,
255                 FRSRPC_COMM_PKT_CHUNK_CO_EXTENTION_2            = 0x0017,
256
257                 FRSRPC_COMM_PKT_CHUNK_EOP                       = 0x0013
258         } frsrpc_CommPktChunkType;
259
260         typedef [nodiscriminant] union {
261                 [default,flag(NDR_REMAINING)] DATA_BLOB blob;
262                 [case(FRSRPC_COMM_PKT_CHUNK_BOP)]
263                         [value(0)] uint32 bop;
264                 [case(FRSRPC_COMM_PKT_CHUNK_COMMAND)]
265                         frsrpc_CommPktCommand command;
266                 [case(FRSRPC_COMM_PKT_CHUNK_TO)]
267                         frsrpc_CommPktChunkGuidName to;
268                 [case(FRSRPC_COMM_PKT_CHUNK_FROM)]
269                         frsrpc_CommPktChunkGuidName from;
270                 [case(FRSRPC_COMM_PKT_CHUNK_REPLICA)]
271                         frsrpc_CommPktChunkGuidName replica;
272                 [case(FRSRPC_COMM_PKT_CHUNK_CONNECTION)]
273                         frsrpc_CommPktChunkGuidName connection;
274                 [case(FRSRPC_COMM_PKT_CHUNK_JOIN_GUID)][subcontext(4)]
275                         GUID join_guid;
276                 [case(FRSRPC_COMM_PKT_CHUNK_LAST_JOIN_TIME)]
277                         NTTIME last_join_time;
278                 [case(FRSRPC_COMM_PKT_CHUNK_VVECTOR)][subcontext(4)]
279                         frsrpc_CommPktGSVN vvector;
280                 [case(FRSRPC_COMM_PKT_CHUNK_JOIN_TIME)][subcontext(4)]
281                         NTTIME join_time;
282                 [case(FRSRPC_COMM_PKT_CHUNK_REPLICA_VERSION_GUID)][subcontext(4)]
283                         GUID replica_version_guid;
284                 [case(FRSRPC_COMM_PKT_CHUNK_COMPRESSION_GUID)]
285                         GUID compression_guid;
286                 [case(FRSRPC_COMM_PKT_CHUNK_BLOCK)]
287                         DATA_BLOB block;
288                 [case(FRSRPC_COMM_PKT_CHUNK_BLOCK_SIZE)]
289                         hyper block_size;
290                 [case(FRSRPC_COMM_PKT_CHUNK_FILE_SIZE)]
291                         hyper file_size;
292                 [case(FRSRPC_COMM_PKT_CHUNK_FILE_OFFSET)]
293                         hyper file_offset;
294                 [case(FRSRPC_COMM_PKT_CHUNK_GVSN)][subcontext(4)]
295                         frsrpc_CommPktGSVN gvsn;
296                 [case(FRSRPC_COMM_PKT_CHUNK_CO_GUID)][subcontext(4)]
297                         GUID co_guid;
298                 [case(FRSRPC_COMM_PKT_CHUNK_CO_SEQUENCE_NUMBER)]
299                         uint32 co_sequence_number;
300                 [case(FRSRPC_COMM_PKT_CHUNK_REMOTE_CO)][subcontext(4)]
301                         frsrpc_CommPktChangeOrderCommand remote_co;
302                 [case(FRSRPC_COMM_PKT_CHUNK_CO_EXT_WIN2K)][subcontext(4)]
303                         frsrpc_CommPktCoRecordExtensionWin2k co_ext_win2k;
304                 [case(FRSRPC_COMM_PKT_CHUNK_CO_EXTENTION_2)]
305                         frsrpc_CommPktChangeOrderRecordExtension co_extension2;
306                 [case(FRSRPC_COMM_PKT_CHUNK_EOP)]
307                         [value(0xFFFFFFFF)] uint32 bopend;
308         } frsrpc_CommPktChunkData;
309
310         typedef [public,flag(NDR_NOALIGN)] struct {
311                 frsrpc_CommPktChunkType type;
312                 [subcontext(4),switch_is(type)] frsrpc_CommPktChunkData data;
313         } frsrpc_CommPktChunk;
314
315         typedef [nopull,nopush,flag(NDR_NOALIGN)] struct {
316                 uint32 num_chunks; /* this doesn't appear on the wire */
317                 frsrpc_CommPktChunk chunks[num_chunks];
318         } frsrpc_CommPktChunkCtr;
319
320         typedef [v1_enum] enum {
321                 FRSRPC_COMM_PKT_MAJOR_0 = 0x00000000
322         } frsrpc_CommPktMajor;
323
324         typedef [v1_enum] enum {
325                 FRSRPC_COMM_PKT_MINOR_0 = 0x00000000,
326                 FRSRPC_COMM_PKT_MINOR_1 = 0x00000001,
327                 FRSRPC_COMM_PKT_MINOR_2 = 0x00000002,
328                 FRSRPC_COMM_PKT_MINOR_3 = 0x00000003,
329                 FRSRPC_COMM_PKT_MINOR_4 = 0x00000004,
330                 FRSRPC_COMM_PKT_MINOR_5 = 0x00000005,
331                 FRSRPC_COMM_PKT_MINOR_6 = 0x00000006,
332                 FRSRPC_COMM_PKT_MINOR_7 = 0x00000007,
333                 FRSRPC_COMM_PKT_MINOR_8 = 0x00000008,
334                 FRSRPC_COMM_PKT_MINOR_9 = 0x00000009
335         } frsrpc_CommPktMinor;
336
337         typedef struct {
338                 frsrpc_CommPktMajor major;
339                 frsrpc_CommPktMinor minor;
340                 [value(1)] uint32 cs_id;
341                 [value(pkt_len+12)] uint32 memory_len;
342                 [value(ndr_size_frsrpc_CommPktChunkCtr(r->ctr,
343                         ndr->flags))]
344                 [range(0, 262144)]
345                         uint32 pkt_len;
346                 [value(0)] uint32 upk_len;
347                 [subcontext(4),subcontext_size(pkt_len)]
348                         frsrpc_CommPktChunkCtr *ctr;
349                 [value(0)] uint3264 data_name;
350                 [value(0)] uint3264 data_handle;
351         } frsrpc_FrsSendCommPktReq;
352
353         WERROR frsrpc_FrsSendCommPkt(
354                 [in]    frsrpc_FrsSendCommPktReq req
355         );
356
357         /*****************/
358         /* Function 0x01 */
359         /* this function always return WERR_CALL_NOT_IMPLEMENTED */
360         WERROR frsrpc_FrsVerifyPromotionParent(
361                 [in,unique,string,charset(UTF16)] uint16 *parent_account,
362                 [in,unique,string,charset(UTF16)] uint16 *parent_password,
363                 [in,unique,string,charset(UTF16)] uint16 *replica_set_name,
364                 [in,unique,string,charset(UTF16)] uint16 *replica_set_type,
365                 [in] frsrpc_PartnerAuthLevel partner_auth_level,
366                 [in] uint32 __ndr_guid_size
367         );
368
369         /*****************/
370         /* Function 0x02 */
371         typedef [v1_enum,flag(NDR_PAHEX)] enum {
372                 FRSRPC_PARENT_AUTH_LEVEL_ENCRYPTED_KERBEROS     = 0x00000000,
373                 FRSRPC_PARENT_AUTH_LEVEL_NO_AUTHENTICATION      = 0x00000001
374         } frsrpc_PartnerAuthLevel;
375
376         WERROR frsrpc_FrsStartPromotionParent(
377                 [in,unique,string,charset(UTF16)] uint16 *parent_account,
378                 [in,unique,string,charset(UTF16)] uint16 *parent_password,
379                 [in,unique,string,charset(UTF16)] uint16 *replica_set_name,
380                 [in,unique,string,charset(UTF16)] uint16 *replica_set_type,
381                 [in,unique,string,charset(UTF16)] uint16 *connection_name,
382                 [in,unique,string,charset(UTF16)] uint16 *partner_name,
383                 [in,unique,string,charset(UTF16)] uint16 *partner_princ_name,
384                 [in] frsrpc_PartnerAuthLevel partner_auth_level,
385                 [in,value(16),range(16,16)] uint32 __ndr_guid_size,
386                 [in,unique,subcontext(4),subcontext_size(16)]
387                         GUID *connection_guid,
388                 [in,unique,subcontext(4),subcontext_size(16)]
389                         GUID *partner_guid,
390                 [in,out,unique,subcontext(4),subcontext_size(16)]
391                         GUID *parent_guid
392         );
393
394         typedef [public,flag(NDR_NOALIGN)] struct {
395                 uint32 major;
396                 uint32 minor;
397                 uint32 dataHigh;
398                 uint32 dataLow;
399                 uint16 compression;
400                 uint8 unused[6];
401                 fscc_FileNetworkOpenInformation attributes;
402                 frsrpc_CommPktChangeOrderCommand command;
403                 fscc_FileObjectIdBuffer_2 fileObjId;
404                 frsrpc_CommPktCoRecordExtensionWin2k cocExt;
405                 GUID compressionGuid;
406                 uint32 encDataHigh;
407                 uint32 encDataLow;
408                 hyper dataSize;
409                 uint32 reparseDataPresent;
410                 uint32 reparseDataHigh;
411                 uint32 reparseDataLow;
412                 uint32 padding2;
413         } frsrpc_StageHeader;
414
415         /*****************/
416         /* Function 0x03 */
417         WERROR frsrpc_FrsNOP();
418
419         /*
420          *For Op from 4 to 10 Microsoft use
421          *the notation OpnumxxNotUsedOnWire
422          *where xx is the number of the OP.
423          *They are only declared in the IDL of MS-FRS1.pdf.
424          *Not in the core of the document.
425          */
426
427         /*****************/
428         /* Function 0x04 */
429         /*[todo] void FRSRPC_BACKUP_COMPLETE();*/
430
431         /*****************/
432         /* Function 0x05 */
433         /*[todo] void FRSRPC_BACKUP_COMPLETE_5();*/
434
435         /*****************/
436         /* Function 0x06 */
437         /*[todo] void FRSRPC_BACKUP_COMPLETE_6();*/
438
439         /*****************/
440         /* Function 0x07 */
441         /*[todo] void FRSRPC_BACKUP_COMPLETE_7();*/
442
443         /*****************/
444         /* Function 0x08 */
445         /*[todo] void FRSRPC_BACKUP_COMPLETE_8();*/
446
447         /*****************/
448         /* Function 0x09 */
449         /*[todo] void FRSRPC_BACKUP_COMPLETE_9();*/
450
451         /*****************/
452         /* Function 0x0a */
453         /*[todo] void FRSRPC_VERIFY_PROMOTION_PARENT_EX();*/
454 }