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