6 uuid("f5cc59b4-4264-101a-8c59-08002b2f8426"),
8 endpoint("ncacn_ip_tcp:", "ncalrpc:"),
9 helpstring("File Replication Service"),
10 helper
("../librpc/ndr/ndr_frsrpc.h"),
11 pointer_default(unique)
19 [subcontext
(4)] GUID guid
;
20 [subcontext
(4)] nstring name
;
21 } frsrpc_CommPktChunkGuidName
;
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
;
49 const uint32 FRSRPC_CO_IFLAG_NONE
= 0x0000000;
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
;
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
;
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
;
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
;
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
;
134 hyper jrnl_first_usn
;
135 uint32 original_replica_num
;
136 uint32 new_replica_num
;
137 GUID change_order_guid
;
138 GUID originator_guid
;
140 GUID old_parent_guid
;
141 GUID new_parent_guid
;
142 GUID connection_guid
;
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
;
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
;
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
;
169 typedef [flag
(NDR_PAHEX
)] struct {
170 [value
(0x00000018)] uint32 prefix_size
;
171 [value
(FRSRPC_DATA_EXTENSION_MD5_CHECKSUM
)]
172 frsrpc_CommPktDataExtensionType prefix_type
;
174 } frsrpc_CommPktDataExtensionChecksum
;
177 [value
(0x00000018)] uint32 prefix_size
;
178 [value
(FRSRPC_DATA_EXTENSION_RETRY_TIMEOUT
)]
179 frsrpc_CommPktDataExtensionType prefix_type
;
181 [value
(0)] uint32 not_used
;
182 NTTIME first_try_time
;
183 } frsrpc_CommPktDataExtensionRetryTimeout
;
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
;
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
;
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
;
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
;
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,
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,
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,
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,
254 FRSRPC_COMM_PKT_CHUNK_EOP
= 0x0013
255 } frsrpc_CommPktChunkType
;
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)]
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)]
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
)]
287 [case(FRSRPC_COMM_PKT_CHUNK_FILE_SIZE
)]
289 [case(FRSRPC_COMM_PKT_CHUNK_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)]
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
;
307 typedef [public,flag
(NDR_NOALIGN
)] struct {
308 frsrpc_CommPktChunkType type
;
309 [subcontext
(4),switch_is(type
)] frsrpc_CommPktChunkData data
;
310 } frsrpc_CommPktChunk
;
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
;
317 typedef [v1_enum] enum {
318 FRSRPC_COMM_PKT_MAJOR_0
= 0x00000000
319 } frsrpc_CommPktMajor
;
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
;
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
,
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
;
350 WERROR frsrpc_FrsSendCommPkt
(
351 [in] frsrpc_FrsSendCommPktReq req
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
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
;
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)]
387 [in,out,unique,subcontext
(4),subcontext_size
(16)]
393 WERROR frsrpc_FrsNOP
();
397 [todo
] void FRSRPC_BACKUP_COMPLETE
();
401 [todo
] void FRSRPC_BACKUP_COMPLETE_5
();
405 [todo
] void FRSRPC_BACKUP_COMPLETE_6
();
409 [todo
] void FRSRPC_BACKUP_COMPLETE_7
();
413 [todo
] void FRSRPC_BACKUP_COMPLETE_8
();
417 [todo
] void FRSRPC_BACKUP_COMPLETE_9
();
421 [todo
] void FRSRPC_VERIFY_PROMOTION_PARENT_EX
();