summaryrefslogtreecommitdiff
path: root/source4/librpc/idl/frsrpc.idl
blob: 70b883bbfc9f5e38a7a76090ecbd89daee080939 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
#include "idl_types.h"

import "misc.idl";

[
  uuid("f5cc59b4-4264-101a-8c59-08002b2f8426"),
  version(1.1),
  endpoint("ncacn_ip_tcp:", "ncalrpc:"),
  helpstring("File Replication Service"),
  pointer_default(unique)
] 
interface frsrpc
{
	/*****************/
	/* Function 0x00 */
	typedef struct {
		uint32 unknown1;
	} frsrpc_FrsSendCommPktChunkDataA;

	typedef struct {
		uint32 unknown1;
		GUID unknown2;
		[subcontext(4)] nstring unknown3;
	} frsrpc_FrsSendCommPktChunkDataB;

	typedef struct {
		uint32 unknown1;
		GUID unknown2;
	} frsrpc_FrsSendCommPktChunkDataC;

	typedef struct {
		NTTIME time;
	} frsrpc_FrsSendCommPktChunkDataD;

	typedef [nodiscriminant] union {
		[default,flag(NDR_REMAINING)] DATA_BLOB blob;
		[case(1)] frsrpc_FrsSendCommPktChunkDataA A;
		[case(2)] frsrpc_FrsSendCommPktChunkDataA A;
		[case(3)] frsrpc_FrsSendCommPktChunkDataB B;
		[case(4)] frsrpc_FrsSendCommPktChunkDataB B;
		[case(5)] frsrpc_FrsSendCommPktChunkDataB B;
		[case(8)] frsrpc_FrsSendCommPktChunkDataB B;
		[case(6)] frsrpc_FrsSendCommPktChunkDataC C;
		[case(18)] frsrpc_FrsSendCommPktChunkDataD D;
		[case(19)] frsrpc_FrsSendCommPktChunkDataA A;
	} frsrpc_FrsSendCommPktChunkData;

	typedef struct {
		uint16 type;
		[subcontext(4),switch_is(type)] frsrpc_FrsSendCommPktChunkData data;
	} frsrpc_FrsSendCommPktChunk;

	typedef [flag(NDR_NOALIGN)] struct {
		frsrpc_FrsSendCommPktChunk chunk1;
		frsrpc_FrsSendCommPktChunk chunk2;
		frsrpc_FrsSendCommPktChunk chunk3;
		frsrpc_FrsSendCommPktChunk chunk4;
		frsrpc_FrsSendCommPktChunk chunk5;
		frsrpc_FrsSendCommPktChunk chunk6;
		frsrpc_FrsSendCommPktChunk chunk7;
		frsrpc_FrsSendCommPktChunk chunk8;
		frsrpc_FrsSendCommPktChunk chunk9;
	} frsrpc_FrsSendCommPktChunkCtr;

	typedef struct {
		uint32 unknown1;
		uint32 unknown2;
		uint32 unknown3;
		uint32 unknown4;
    		uint32 unknown5;
		uint32 unknown6;
		/*
		 * the format of this blob is this:
		 *
		 * some of the folloeing chunks are concatenated:
		 *
		 * struct {
		 * 	uint16 type;
		 *	[subcontext(4),switch_is(type)] chunk_data data;
		 * } chunk;
		 * 
		 * some of the chunk are like this:
		 *
		 * struct {
		 *	uint32 unknown; // 0x00000010
		 *	struct GUID guid;
		 *	lstring string;
		 * } ...;
		 */
		[subcontext(4)/*,size_is(unknown5)*/] frsrpc_FrsSendCommPktChunkCtr *chunks;
		uint32 unknown8;
		uint32 unknown9;
	} frsrpc_FrsSendCommPktReq;

	WERROR frsrpc_FrsSendCommPkt(
		[in]	frsrpc_FrsSendCommPktReq req
	);

	/*****************/
	/* Function 0x01 */
	void FRSRPC_VERIFY_PROMOTION_PARENT();

	/*****************/
	/* Function 0x02 */
	void FRSRPC_START_PROMOTION_PARENT();

	/*****************/
	/* Function 0x03 */
	void FRSRPC_NOP();

	/*****************/
	/* Function 0x04 */
	void FRSRPC_BACKUP_COMPLETE();

	/*****************/
	/* Function 0x05 */
	void FRSRPC_BACKUP_COMPLETE_5();

	/*****************/
	/* Function 0x06 */
	void FRSRPC_BACKUP_COMPLETE_6();

	/*****************/
	/* Function 0x07 */
	void FRSRPC_BACKUP_COMPLETE_7();

	/*****************/
	/* Function 0x08 */
	void FRSRPC_BACKUP_COMPLETE_8();

	/*****************/
	/* Function 0x09 */
	void FRSRPC_BACKUP_COMPLETE_9();

	/*****************/
	/* Function 0x0a */
	void FRSRPC_VERIFY_PROMOTION_PARENT_EX();
}