r20566: Prepending with r-> is no longer necessary.
[kai/samba.git] / source4 / librpc / idl / drsblobs.idl
1 #include "idl_types.h"
2
3 import "drsuapi.idl";
4
5 [
6   uuid("12345778-1234-abcd-0001-00000001"),
7   version(0.0),
8   pointer_default(unique),
9   helpstring("Active Directory Replication LDAP Blobs")
10 ]
11 interface drsblobs {
12         declare bitmap drsuapi_DsReplicaSyncOptions;
13         declare bitmap drsuapi_DsReplicaNeighbourFlags;
14         declare [v1_enum] enum drsuapi_DsAttributeId;
15
16         /*
17          * replPropertyMetaData
18          * w2k  uses version 1
19          * w2k3 uses version 1
20          */
21         typedef struct {
22                 drsuapi_DsAttributeId attid;
23                 uint32 version;
24                 NTTIME_1sec orginating_time;
25                 GUID orginating_invocation_id;
26                 hyper orginating_usn;
27                 hyper local_usn;
28         } replPropertyMetaData1;
29
30         typedef struct {
31                 uint32 count;
32                 uint32 reserved;
33                 replPropertyMetaData1 array[count];
34         } replPropertyMetaDataCtr1;
35
36         typedef [nodiscriminant] union {
37                 [case(1)] replPropertyMetaDataCtr1 ctr1;
38         } replPropertyMetaDataCtr;
39         
40         typedef [public] struct {
41                 uint32 version;
42                 uint32 reserved;
43                 [switch_is(version)] replPropertyMetaDataCtr ctr;
44         } replPropertyMetaDataBlob;
45
46         void decode_replPropertyMetaData(
47                 [in] replPropertyMetaDataBlob blob
48                 );
49
50         /*
51          * replUpToDateVector
52          * w2k  uses version 1
53          * w2k3 uses version 2
54          */
55         typedef struct {
56                 uint32 count;
57                 uint32 reserved;
58                 drsuapi_DsReplicaCursor cursors[count];
59         } replUpToDateVectorCtr1;
60
61         typedef struct {
62                 uint32 count;
63                 uint32 reserved;
64                 drsuapi_DsReplicaCursor2 cursors[count];
65         } replUpToDateVectorCtr2;
66
67         typedef [nodiscriminant] union {
68                 [case(1)] replUpToDateVectorCtr1 ctr1;
69                 [case(2)] replUpToDateVectorCtr2 ctr2;
70         } replUpToDateVectorCtr;
71
72         typedef [public] struct {
73                 uint32 version;
74                 uint32 reserved;
75                 [switch_is(version)] replUpToDateVectorCtr ctr;
76         } replUpToDateVectorBlob;
77
78         void decode_replUpToDateVector(
79                 [in] replUpToDateVectorBlob blob
80                 );
81
82         /*
83          * repsFrom/repsTo
84          * w2k  uses version 1
85          * w2k3 uses version 1
86          */
87         typedef [public,gensize] struct {
88                 asclstr dns_name;
89         } repsFromTo1OtherInfo;
90
91         typedef [public,gensize,flag(NDR_PAHEX)] struct {
92                 /* this includes the 8 bytes of the repsFromToBlob header */
93                 [value(ndr_size_repsFromTo1(r, ndr->flags)+8)] uint32 blobsize;
94                 uint32 consecutive_sync_failures;
95                 NTTIME_1sec last_success;
96                 NTTIME_1sec last_attempt;
97                 WERROR result_last_attempt;
98                 [relative] repsFromTo1OtherInfo *other_info;
99                 [value(ndr_size_repsFromTo1OtherInfo(other_info, ndr->flags))] uint32 other_info_length;
100                 drsuapi_DsReplicaNeighbourFlags replica_flags;
101                 uint8 schedule[84];
102                 uint32 reserved;
103                 drsuapi_DsReplicaHighWaterMark highwatermark;
104                 GUID source_dsa_obj_guid; /* the 'objectGuid' field of the CN=NTDS Settings object */
105                 GUID source_dsa_invocation_id; /* the 'invocationId' field of the CN=NTDS Settings object */
106                 GUID transport_guid;
107         } repsFromTo1;
108
109         typedef [nodiscriminant] union {
110                 [case(1)] repsFromTo1 ctr1;
111         } repsFromTo;
112
113         typedef [public] struct {
114                 uint32 version;
115                 uint32 reserved;
116                 [switch_is(version)] repsFromTo ctr;
117         } repsFromToBlob;
118
119         void decode_repsFromTo(
120                 [in] repsFromToBlob blob
121                 );
122
123         /*
124          * partialAttributeSet
125          * w2k  uses version 1
126          * w2k3 uses version 1
127          */
128         typedef struct {
129                 uint32 count;
130                 drsuapi_DsAttributeId array[count];
131         } partialAttributeSetCtr1;
132
133         typedef [nodiscriminant] union {
134                 [case(1)] partialAttributeSetCtr1 ctr1;
135         } partialAttributeSetCtr;
136
137         typedef [public] struct {
138                 uint32 version;
139                 uint32 reserved;
140                 [switch_is(version)] partialAttributeSetCtr ctr;
141         } partialAttributeSetBlob;
142
143         void decode_partialAttributeSet(
144                 [in] partialAttributeSetBlob blob
145                 );
146
147         typedef struct {
148                 hyper h4;
149                 replUpToDateVectorCtr1 uptodateness_vector;
150         } ldapControlDirSyncExtraData;
151
152         typedef [nodiscriminant,gensize] union {
153                 [case(0)];
154                 [default] ldapControlDirSyncExtraData data;
155         } ldapControlDirSyncExtra;
156
157         typedef struct {
158                 [value(3)] uint32 u1;
159                 NTTIME time;
160                 uint32 u2;
161                 uint32 u3;
162                 [value(ndr_size_ldapControlDirSyncExtra(&extra, extra.data.uptodateness_vector.count, 0))] 
163                         uint32 extra_length;
164                 drsuapi_DsReplicaHighWaterMark highwatermark;
165                 GUID guid1;
166                 [switch_is(extra_length)] ldapControlDirSyncExtra extra;
167         } ldapControlDirSyncBlob;
168
169         typedef [public,relative_base] struct {
170                 [charset(DOS),value("MSDS")] uint8 msds[4];
171                 [subcontext(0)] ldapControlDirSyncBlob blob;
172         } ldapControlDirSyncCookie;
173
174         void decode_ldapControlDirSync(
175                 [in] ldapControlDirSyncCookie cookie
176                 );
177
178         typedef [public] struct {
179                 uint32 marker;
180                 DATA_BLOB data;
181         } DsCompressedChunk;
182
183         typedef [public] struct {
184                 DsCompressedChunk chunks[5];
185         } DsCompressedBlob;
186
187         void decode_DsCompressed(
188                 [in] DsCompressedBlob blob
189                 );
190 }