From 9f84d72ef16d3be926f6caffe3c86b4a61b9fc11 Mon Sep 17 00:00:00 2001 From: Simo Sorce Date: Tue, 23 Mar 2010 01:06:24 -0400 Subject: idl:drsblobs add code to interpret msDS-TrustForestTrustInfo --- librpc/idl/drsblobs.idl | 50 ++++++++++++++++++++++++++++++++++++++++++++++++- librpc/idl/idl_types.h | 5 +++++ 2 files changed, 54 insertions(+), 1 deletion(-) (limited to 'librpc/idl') diff --git a/librpc/idl/drsblobs.idl b/librpc/idl/drsblobs.idl index fa510a9968..7cfcc1c3c5 100644 --- a/librpc/idl/drsblobs.idl +++ b/librpc/idl/drsblobs.idl @@ -1,6 +1,6 @@ #include "idl_types.h" -import "drsuapi.idl", "misc.idl", "samr.idl", "lsa.idl"; +import "drsuapi.idl", "misc.idl", "samr.idl", "lsa.idl", "security.idl"; [ uuid("12345778-1234-abcd-0001-00000001"), @@ -571,4 +571,52 @@ interface drsblobs { void decode_ExtendedErrorInfo ( [in,subcontext(0xFFFFFC01)] ExtendedErrorInfoPtr ptr ); + + /* MS-ADTS 7.1.6.9.3 msDS-TrustForestTrustInfo Attribute */ + + typedef [flag(NDR_NOALIGN)] struct { + [value(ndr_size_dom_sid0(&sid, ndr->flags))] uint32 sid_size; + [subcontext(0),subcontext_size(sid_size)] dom_sid sid; + utf8string2 dns_name; + utf8string2 netbios_name; + } ForestTrustDataDomainInfo; + + typedef [flag(NDR_NOALIGN)] struct { + uint32 size; + uint8 data[size]; + } ForestTrustDataBinaryData; + + typedef [nodiscriminant] union { + [case(FOREST_TRUST_TOP_LEVEL_NAME)] utf8string2 name; + [case(FOREST_TRUST_TOP_LEVEL_NAME_EX)] utf8string2 name; + [case(FOREST_TRUST_DOMAIN_INFO)] ForestTrustDataDomainInfo info; + [default] ForestTrustDataBinaryData data; + } ForestTrustData; + + /* same as lsa_ForestTrustRecordType */ + typedef [enum8bit] enum { + FOREST_TRUST_TOP_LEVEL_NAME = 0, + FOREST_TRUST_TOP_LEVEL_NAME_EX = 1, + FOREST_TRUST_DOMAIN_INFO = 2 + } ForestTrustInfoRecordType; + + /* meaning of flags depends on record type and values are + the same as in lsa.idl, see collision record types */ + typedef [flag(NDR_NOALIGN)] struct { + uint32 length; + uint32 flags; + NTTIME timestamp; + ForestTrustInfoRecordType type; + [switch_is(type)] ForestTrustData data; + } ForestTrustInfoRecord; + + typedef [public,flag(NDR_NOALIGN)] struct { + uint32 version; + uint32 count; + ForestTrustInfoRecord records[count]; + } ForestTrustInfo; + + void decode_ForestTrustInfo( + [in] ForestTrustInfo blob + ); } diff --git a/librpc/idl/idl_types.h b/librpc/idl/idl_types.h index 3c6c12cd84..e8b3da578f 100644 --- a/librpc/idl/idl_types.h +++ b/librpc/idl/idl_types.h @@ -47,6 +47,11 @@ */ #define utf8string [flag(STR_UTF8|STR_NULLTERM)] string +/* + an utf8 string prefixed with [size], 32 bits +*/ +#define utf8string2 [flag(STR_UTF8|STR_SIZE4)] string + /* a null terminated UCS2 string */ -- cgit