summaryrefslogtreecommitdiff
path: root/librpc/idl
diff options
context:
space:
mode:
authorSimo Sorce <idra@samba.org>2010-03-23 01:06:24 -0400
committerSimo Sorce <idra@samba.org>2010-03-23 01:09:50 -0400
commit9f84d72ef16d3be926f6caffe3c86b4a61b9fc11 (patch)
treebbd454a10b2840cb953b9a1df3402ee98d233a64 /librpc/idl
parentd9e311ddce50a6decc55ea442f562d11f06e2f78 (diff)
downloadsamba-9f84d72ef16d3be926f6caffe3c86b4a61b9fc11.tar.gz
samba-9f84d72ef16d3be926f6caffe3c86b4a61b9fc11.tar.bz2
samba-9f84d72ef16d3be926f6caffe3c86b4a61b9fc11.zip
idl:drsblobs add code to interpret msDS-TrustForestTrustInfo
Diffstat (limited to 'librpc/idl')
-rw-r--r--librpc/idl/drsblobs.idl50
-rw-r--r--librpc/idl/idl_types.h5
2 files changed, 54 insertions, 1 deletions
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
@@ -48,6 +48,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
*/
#define nstring_array [flag(STR_NULLTERM)] string_array