r3942: decode the 'replUpToDateVector' blob
[samba.git] / source4 / librpc / idl / drsblobs.idl
1 #include "idl_types.h"
2
3 [
4   uuid("38578646-4566-4564-2244-275796345667"),
5   version(0.0),
6   helpstring("Active Directory Replication LDAP Blobs")
7 ]
8 interface drsblobs {
9         /*
10          * replPropertyMetaData
11          * w2k  uses version 1
12          * w2k3 uses version 1
13          */
14         typedef struct {
15                 uint32 attribute_id;
16                 uint32 version;
17                 NTTIME_1sec orginating_time;
18                 GUID orginating_dsa;
19                 uint64 orginating_usn;
20                 uint64 local_usn;
21         } replPropertyMetaData1;
22
23         typedef struct {
24                 uint32 unknown1;
25                 uint32 count;
26                 uint32 unknown2;
27                 replPropertyMetaData1 array[count];
28         } replPropertyMetaDataCtr1;
29
30         typedef [nodiscriminant] union {
31                 [case(1)] replPropertyMetaDataCtr1 ctr1;
32         } replPropertyMetaDataCtr;
33         
34         typedef [public] struct {
35                 uint32 version;
36                 [switch_is(version)] replPropertyMetaDataCtr ctr;
37         } replPropertyMetaDataBlob;
38
39         void decode_replPropertyMetaData(
40                 [in] replPropertyMetaDataBlob blob
41                 );
42
43         /*
44          * replUpToDateVector
45          * w2k  uses version 1
46          * w2k3 uses version 2
47          */
48         typedef struct {
49                 GUID dsa;
50                 uint64 usn;
51         } replUpToDateVector1;
52
53         typedef struct {
54                 uint32 unknown1;
55                 uint32 count;
56                 uint32 unknown2;
57                 replUpToDateVector1 array[count];
58         } replUpToDateVectorCtr1;
59
60         typedef struct {
61                 GUID dsa;
62                 uint64 usn;
63                 NTTIME_1sec time;
64         } replUpToDateVector2;
65
66         typedef struct {
67                 uint32 unknown1;
68                 uint32 count;
69                 uint32 unknown2;
70                 replUpToDateVector2 array[count];
71         } replUpToDateVectorCtr2;
72
73         typedef [nodiscriminant] union {
74                 [case(1)] replUpToDateVectorCtr1 ctr1;
75                 [case(2)] replUpToDateVectorCtr2 ctr2;
76         } replUpToDateVectorCtr;
77
78         typedef [public] struct {
79                 uint32 version;
80                 [switch_is(version)] replUpToDateVectorCtr ctr;
81         } replUpToDateVectorBlob;
82
83         void decode_replUpToDateVector(
84                 [in] replUpToDateVectorBlob blob
85                 );
86 }