diff options
author | Stefan Metzmacher <metze@samba.org> | 2004-11-27 15:10:57 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 13:06:11 -0500 |
commit | 05def77d801544aeb43f1d05fd080bcd608299ef (patch) | |
tree | a400d9e10a32583e42b0aeef27e5e2464cc9dd71 /source4 | |
parent | dc0e4975d6da7ccfb5777639eac6f27bf1998e87 (diff) | |
download | samba-05def77d801544aeb43f1d05fd080bcd608299ef.tar.gz samba-05def77d801544aeb43f1d05fd080bcd608299ef.tar.bz2 samba-05def77d801544aeb43f1d05fd080bcd608299ef.zip |
r3984: success full parse the repsFrom/repsTo LDAP fields
metze
(This used to be commit 56c66f4a090b1efca011fc2fc9880c4d93da164c)
Diffstat (limited to 'source4')
-rw-r--r-- | source4/librpc/idl/drsblobs.idl | 61 | ||||
-rw-r--r-- | source4/librpc/ndr/libndr.h | 3 |
2 files changed, 36 insertions, 28 deletions
diff --git a/source4/librpc/idl/drsblobs.idl b/source4/librpc/idl/drsblobs.idl index 20b353c1ea..3b538334f7 100644 --- a/source4/librpc/idl/drsblobs.idl +++ b/source4/librpc/idl/drsblobs.idl @@ -21,9 +21,8 @@ interface drsblobs { } replPropertyMetaData1; typedef struct { - uint32 unknown1; uint32 count; - uint32 unknown2; + uint32 reserved; replPropertyMetaData1 array[count]; } replPropertyMetaDataCtr1; @@ -33,6 +32,7 @@ interface drsblobs { typedef [public] struct { uint32 version; + uint32 reserved; [switch_is(version)] replPropertyMetaDataCtr ctr; } replPropertyMetaDataBlob; @@ -46,27 +46,25 @@ interface drsblobs { * w2k3 uses version 2 */ typedef struct { - GUID dsa; - uint64 usn; + GUID invocation_id_guid; + uint64 highest_usn; /* updated after a full replication cycle */ } replUpToDateVector1; typedef struct { - uint32 unknown1; uint32 count; - uint32 unknown2; + uint32 reserved; replUpToDateVector1 array[count]; } replUpToDateVectorCtr1; typedef struct { - GUID dsa; - uint64 usn; - NTTIME_1sec time; + GUID invocation_id_guid; + uint64 highest_usn; /* updated after a full replication cycle */ + NTTIME_1sec last_success; } replUpToDateVector2; typedef struct { - uint32 unknown1; uint32 count; - uint32 unknown2; + uint32 reserved; replUpToDateVector2 array[count]; } replUpToDateVectorCtr2; @@ -77,6 +75,7 @@ interface drsblobs { typedef [public] struct { uint32 version; + uint32 reserved; [switch_is(version)] replUpToDateVectorCtr ctr; } replUpToDateVectorBlob; @@ -89,31 +88,37 @@ interface drsblobs { * w2k uses version 1 * w2k3 uses version 1 */ - typedef [flag(NDR_PAHEX)] struct { - NTTIME_1sec time1; - NTTIME_1sec time2; - uint32 unknown1[4]; - uint8 unknown2[84]; - uint32 unknown3; - uint64 usn1; - uint32 unknown4; - uint32 unknown5; - uint64 usn2; - GUID guid1; - GUID guid2; - uint32 unknown6[4]; + typedef [gensize] struct { asclstr dns_name; + } repsFromTo1OtherInfo; + + typedef [gensize,flag(NDR_PAHEX)] struct { + /* this includes the 8 bytes of the repsFromToBlob header */ + [value(ndr_size_repsFromTo1(8, r, ndr->flags))] uint32 blobsize; + uint32 consecutive_failures; + NTTIME_1sec last_success; + NTTIME_1sec last_attempt; + WERROR result_last_attempt; + [relative,length_is(other_info_length)] repsFromTo1OtherInfo *other_info; + [value(ndr_size_repsFromTo1OtherInfo(0, r->other_info, ndr->flags))] uint32 other_info_length; + uint32 replica_flags; + uint8 schedule[84]; + uint32 reserved; + uint64 tmp_highest_usn; /* updated after each object update */ + uint64 reserved_usn; + uint64 highest_usn; /* updated after a full replication cycle */ + GUID dsa_guid; + GUID invocation_id_guid; + GUID transport_guid; } repsFromTo1; typedef [nodiscriminant] union { [case(1)] repsFromTo1 ctr1; } repsFromTo; - typedef [public,gensize] struct { + typedef [public] struct { uint32 version; - uint32 unknown1; - [value(ndr_size_repsFromToBlob(0, r, ndr->flags))] uint32 blobsize; - uint32 unknown2; + uint32 reserved; [switch_is(version)] repsFromTo ctr; } repsFromToBlob; diff --git a/source4/librpc/ndr/libndr.h b/source4/librpc/ndr/libndr.h index be02a8b72a..8a160c5deb 100644 --- a/source4/librpc/ndr/libndr.h +++ b/source4/librpc/ndr/libndr.h @@ -207,6 +207,9 @@ enum ndr_err_code { #define ndr_size_NTTIME(t, p, flags) ndr_size_uint64(t, p, flags) #define ndr_size_NTTIME_1sec(t, p, flags) ndr_size_NTTIME(t, p, flags) +#define ndr_size_WERROR(t, p, flags) ndr_size_uint32(t, p, flags) +#define ndr_size_NTSTATUS(t, p, flags) ndr_size_uint32(t, p, flags) + /* these are used to make the error checking on each element in libndr less tedious, hopefully making the code more readable */ #define NDR_CHECK(call) do { NTSTATUS _status; \ |