From 8ac9d36f93e21c74762af5b0a362f73ee74462ae Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Wed, 24 Nov 2004 14:33:40 +0000 Subject: r3942: decode the 'replUpToDateVector' blob metze (This used to be commit 42b9f0bd476f2175e856ea8f79577eb9eda905e2) --- source4/librpc/idl/drsblobs.idl | 69 +++++++++++++++++++++++++++++++++++++---- 1 file changed, 63 insertions(+), 6 deletions(-) (limited to 'source4/librpc/idl') diff --git a/source4/librpc/idl/drsblobs.idl b/source4/librpc/idl/drsblobs.idl index 52c324e197..6c998968ac 100644 --- a/source4/librpc/idl/drsblobs.idl +++ b/source4/librpc/idl/drsblobs.idl @@ -6,6 +6,11 @@ helpstring("Active Directory Replication LDAP Blobs") ] interface drsblobs { + /* + * replPropertyMetaData + * w2k uses version 1 + * w2k3 uses version 1 + */ typedef struct { uint32 attribute_id; uint32 version; @@ -13,17 +18,69 @@ interface drsblobs { GUID orginating_dsa; uint64 orginating_usn; uint64 local_usn; - } replPropertyMetaData; + } replPropertyMetaData1; typedef struct { - uint32 unknown1; /* version ? */ - uint32 unknown2; + uint32 unknown1; uint32 count; - uint32 unknown3; - replPropertyMetaData array[count]; + uint32 unknown2; + replPropertyMetaData1 array[count]; + } replPropertyMetaDataCtr1; + + typedef [nodiscriminant] union { + [case(1)] replPropertyMetaDataCtr1 ctr1; } replPropertyMetaDataCtr; + + typedef [public] struct { + uint32 version; + [switch_is(version)] replPropertyMetaDataCtr ctr; + } replPropertyMetaDataBlob; void decode_replPropertyMetaData( - [in] replPropertyMetaDataCtr ctr + [in] replPropertyMetaDataBlob blob + ); + + /* + * replUpToDateVector + * w2k uses version 1 + * w2k3 uses version 2 + */ + typedef struct { + GUID dsa; + uint64 usn; + } replUpToDateVector1; + + typedef struct { + uint32 unknown1; + uint32 count; + uint32 unknown2; + replUpToDateVector1 array[count]; + } replUpToDateVectorCtr1; + + typedef struct { + GUID dsa; + uint64 usn; + NTTIME_1sec time; + } replUpToDateVector2; + + typedef struct { + uint32 unknown1; + uint32 count; + uint32 unknown2; + replUpToDateVector2 array[count]; + } replUpToDateVectorCtr2; + + typedef [nodiscriminant] union { + [case(1)] replUpToDateVectorCtr1 ctr1; + [case(2)] replUpToDateVectorCtr2 ctr2; + } replUpToDateVectorCtr; + + typedef [public] struct { + uint32 version; + [switch_is(version)] replUpToDateVectorCtr ctr; + } replUpToDateVectorBlob; + + void decode_replUpToDateVector( + [in] replUpToDateVectorBlob blob ); } -- cgit