summaryrefslogtreecommitdiff
path: root/source4
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2006-01-17 17:15:07 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 13:51:14 -0500
commite88285db2df8790c5ee9f42285fa2c27c9b155ed (patch)
tree19ee1463da39156e5be0124d80acbafdfd452b70 /source4
parent8641271e6540107e5dcacb4273fc775919d065c1 (diff)
downloadsamba-e88285db2df8790c5ee9f42285fa2c27c9b155ed.tar.gz
samba-e88285db2df8790c5ee9f42285fa2c27c9b155ed.tar.bz2
samba-e88285db2df8790c5ee9f42285fa2c27c9b155ed.zip
r12982: fix parsing of LDAP DIRSYNC cookies
metze (This used to be commit 31d2bf3ca15842ff3f7a74aa35e3753fadba6177)
Diffstat (limited to 'source4')
-rw-r--r--source4/librpc/idl/drsblobs.idl28
1 files changed, 21 insertions, 7 deletions
diff --git a/source4/librpc/idl/drsblobs.idl b/source4/librpc/idl/drsblobs.idl
index c83ce8c799..464bdb0d83 100644
--- a/source4/librpc/idl/drsblobs.idl
+++ b/source4/librpc/idl/drsblobs.idl
@@ -119,21 +119,35 @@ interface drsblobs {
[in] repsFromToBlob blob
);
- typedef [public,gensize] struct {
- [value(ndr_size_ldapControlDirSyncBlob(r, ndr->flags))] uint32 blobsize; /* just a guess! --metze */
- uint32 u1;
+ typedef struct {
+ hyper h4;
+ replUpToDateVectorCtr1 uptodateness_vector;
+ } ldapControlDirSyncExtraData;
+
+ typedef [nodiscriminant,gensize] union {
+ [case(0)];
+ [default] ldapControlDirSyncExtraData data;
+ } ldapControlDirSyncExtra;
+
+ typedef struct {
+ [value(3)] uint32 u1;
NTTIME time;
uint32 u2;
uint32 u3;
- uint32 u4;
+ [value(ndr_size_ldapControlDirSyncExtra(&r->extra, r->extra.data.uptodateness_vector.count, 0))]
+ uint32 extra_length;
drsuapi_DsReplicaHighWaterMark highwatermark;
GUID guid1;
- hyper h4;
- replUpToDateVectorCtr1 uptodateness_vector;
+ [switch_is(extra_length)] ldapControlDirSyncExtra extra;
} ldapControlDirSyncBlob;
+ typedef [public,relative_base] struct {
+ [string,charset(DOS),value("MSDS")] uint8 msds[4];
+ [subcontext(0)] ldapControlDirSyncBlob blob;
+ } ldapControlDirSyncCookie;
+
void decode_ldapControlDirSync(
- [in] ldapControlDirSyncBlob blob
+ [in] ldapControlDirSyncCookie cookie
);
typedef [public] struct {