[SCM] Samba Shared Repository - branch master updated

Simo Sorce idra at samba.org
Mon Mar 22 23:10:13 MDT 2010


The branch, master has been updated
       via  9f84d72... idl:drsblobs add code to interpret msDS-TrustForestTrustInfo
      from  d9e311d... s4:lsa Functions to set Domain Trust Information

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 9f84d72ef16d3be926f6caffe3c86b4a61b9fc11
Author: Simo Sorce <idra at samba.org>
Date:   Tue Mar 23 01:06:24 2010 -0400

    idl:drsblobs add code to interpret msDS-TrustForestTrustInfo

-----------------------------------------------------------------------

Summary of changes:
 librpc/gen_ndr/drsblobs.h     |   56 +++++
 librpc/gen_ndr/ndr_drsblobs.c |  484 ++++++++++++++++++++++++++++++++++++++++-
 librpc/gen_ndr/ndr_drsblobs.h |   13 +-
 librpc/idl/drsblobs.idl       |   50 ++++-
 librpc/idl/idl_types.h        |    5 +
 5 files changed, 605 insertions(+), 3 deletions(-)


Changeset truncated at 500 lines:

diff --git a/librpc/gen_ndr/drsblobs.h b/librpc/gen_ndr/drsblobs.h
index 7fa201d..83a6978 100644
--- a/librpc/gen_ndr/drsblobs.h
+++ b/librpc/gen_ndr/drsblobs.h
@@ -8,6 +8,7 @@
 #include "librpc/gen_ndr/misc.h"
 #include "librpc/gen_ndr/samr.h"
 #include "librpc/gen_ndr/lsa.h"
+#include "librpc/gen_ndr/security.h"
 #ifndef _HEADER_drsblobs
 #define _HEADER_drsblobs
 
@@ -456,6 +457,53 @@ struct ExtendedErrorInfoPtr {
 	struct ExtendedErrorInfo *info;/* [unique] */
 };
 
+struct ForestTrustDataDomainInfo {
+	uint32_t sid_size;/* [value(ndr_size_dom_sid0(&sid,ndr->flags))] */
+	struct dom_sid sid;/* [subcontext_size(sid_size),subcontext(0)] */
+	const char * dns_name;/* [flag(LIBNDR_FLAG_STR_UTF8|LIBNDR_FLAG_STR_SIZE4)] */
+	const char * netbios_name;/* [flag(LIBNDR_FLAG_STR_UTF8|LIBNDR_FLAG_STR_SIZE4)] */
+}/* [flag(LIBNDR_FLAG_NOALIGN)] */;
+
+struct ForestTrustDataBinaryData {
+	uint32_t size;
+	uint8_t *data;
+}/* [flag(LIBNDR_FLAG_NOALIGN)] */;
+
+union ForestTrustData {
+	const char * name;/* [flag(LIBNDR_FLAG_STR_UTF8|LIBNDR_FLAG_STR_SIZE4),case(FOREST_TRUST_TOP_LEVEL_NAME)] */
+	struct ForestTrustDataDomainInfo info;/* [case(FOREST_TRUST_DOMAIN_INFO)] */
+	struct ForestTrustDataBinaryData data;/* [default] */
+}/* [nodiscriminant] */;
+
+enum ForestTrustInfoRecordType
+#ifndef USE_UINT_ENUMS
+ {
+	FOREST_TRUST_TOP_LEVEL_NAME=(int)(0),
+	FOREST_TRUST_TOP_LEVEL_NAME_EX=(int)(1),
+	FOREST_TRUST_DOMAIN_INFO=(int)(2)
+}
+#else
+ { __donnot_use_enum_ForestTrustInfoRecordType=0x7FFFFFFF}
+#define FOREST_TRUST_TOP_LEVEL_NAME ( 0 )
+#define FOREST_TRUST_TOP_LEVEL_NAME_EX ( 1 )
+#define FOREST_TRUST_DOMAIN_INFO ( 2 )
+#endif
+;
+
+struct ForestTrustInfoRecord {
+	uint32_t length;
+	uint32_t flags;
+	NTTIME timestamp;
+	enum ForestTrustInfoRecordType type;
+	union ForestTrustData data;/* [switch_is(type)] */
+}/* [flag(LIBNDR_FLAG_NOALIGN)] */;
+
+struct ForestTrustInfo {
+	uint32_t version;
+	uint32_t count;
+	struct ForestTrustInfoRecord *records;
+}/* [public,flag(LIBNDR_FLAG_NOALIGN)] */;
+
 
 struct decode_replPropertyMetaData {
 	struct {
@@ -568,4 +616,12 @@ struct decode_ExtendedErrorInfo {
 
 };
 
+
+struct decode_ForestTrustInfo {
+	struct {
+		struct ForestTrustInfo blob;
+	} in;
+
+};
+
 #endif /* _HEADER_drsblobs */
diff --git a/librpc/gen_ndr/ndr_drsblobs.c b/librpc/gen_ndr/ndr_drsblobs.c
index 807d15f..aa2eeb7 100644
--- a/librpc/gen_ndr/ndr_drsblobs.c
+++ b/librpc/gen_ndr/ndr_drsblobs.c
@@ -7,6 +7,7 @@
 #include "librpc/gen_ndr/ndr_misc.h"
 #include "librpc/gen_ndr/ndr_samr.h"
 #include "librpc/gen_ndr/ndr_lsa.h"
+#include "librpc/gen_ndr/ndr_security.h"
 static enum ndr_err_code ndr_push_replPropertyMetaData1(struct ndr_push *ndr, int ndr_flags, const struct replPropertyMetaData1 *r)
 {
 	if (ndr_flags & NDR_SCALARS) {
@@ -4057,6 +4058,438 @@ _PUBLIC_ void ndr_print_ExtendedErrorInfoPtr(struct ndr_print *ndr, const char *
 	ndr->depth--;
 }
 
+static enum ndr_err_code ndr_push_ForestTrustDataDomainInfo(struct ndr_push *ndr, int ndr_flags, const struct ForestTrustDataDomainInfo *r)
+{
+	{
+		uint32_t _flags_save_STRUCT = ndr->flags;
+		ndr_set_flags(&ndr->flags, LIBNDR_FLAG_NOALIGN);
+		if (ndr_flags & NDR_SCALARS) {
+			NDR_CHECK(ndr_push_align(ndr, 4));
+			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_size_dom_sid0(&r->sid, ndr->flags)));
+			{
+				struct ndr_push *_ndr_sid;
+				NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_sid, 0, ndr_size_dom_sid0(&r->sid, ndr->flags)));
+				NDR_CHECK(ndr_push_dom_sid(_ndr_sid, NDR_SCALARS, &r->sid));
+				NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_sid, 0, ndr_size_dom_sid0(&r->sid, ndr->flags)));
+			}
+			{
+				uint32_t _flags_save_string = ndr->flags;
+				ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_UTF8|LIBNDR_FLAG_STR_SIZE4);
+				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->dns_name));
+				ndr->flags = _flags_save_string;
+			}
+			{
+				uint32_t _flags_save_string = ndr->flags;
+				ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_UTF8|LIBNDR_FLAG_STR_SIZE4);
+				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->netbios_name));
+				ndr->flags = _flags_save_string;
+			}
+			NDR_CHECK(ndr_push_trailer_align(ndr, 4));
+		}
+		if (ndr_flags & NDR_BUFFERS) {
+		}
+		ndr->flags = _flags_save_STRUCT;
+	}
+	return NDR_ERR_SUCCESS;
+}
+
+static enum ndr_err_code ndr_pull_ForestTrustDataDomainInfo(struct ndr_pull *ndr, int ndr_flags, struct ForestTrustDataDomainInfo *r)
+{
+	{
+		uint32_t _flags_save_STRUCT = ndr->flags;
+		ndr_set_flags(&ndr->flags, LIBNDR_FLAG_NOALIGN);
+		if (ndr_flags & NDR_SCALARS) {
+			NDR_CHECK(ndr_pull_align(ndr, 4));
+			NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->sid_size));
+			{
+				struct ndr_pull *_ndr_sid;
+				NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_sid, 0, r->sid_size));
+				NDR_CHECK(ndr_pull_dom_sid(_ndr_sid, NDR_SCALARS, &r->sid));
+				NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_sid, 0, r->sid_size));
+			}
+			{
+				uint32_t _flags_save_string = ndr->flags;
+				ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_UTF8|LIBNDR_FLAG_STR_SIZE4);
+				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->dns_name));
+				ndr->flags = _flags_save_string;
+			}
+			{
+				uint32_t _flags_save_string = ndr->flags;
+				ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_UTF8|LIBNDR_FLAG_STR_SIZE4);
+				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->netbios_name));
+				ndr->flags = _flags_save_string;
+			}
+			NDR_CHECK(ndr_pull_trailer_align(ndr, 4));
+		}
+		if (ndr_flags & NDR_BUFFERS) {
+		}
+		ndr->flags = _flags_save_STRUCT;
+	}
+	return NDR_ERR_SUCCESS;
+}
+
+_PUBLIC_ void ndr_print_ForestTrustDataDomainInfo(struct ndr_print *ndr, const char *name, const struct ForestTrustDataDomainInfo *r)
+{
+	ndr_print_struct(ndr, name, "ForestTrustDataDomainInfo");
+	{
+		uint32_t _flags_save_STRUCT = ndr->flags;
+		ndr_set_flags(&ndr->flags, LIBNDR_FLAG_NOALIGN);
+		ndr->depth++;
+		ndr_print_uint32(ndr, "sid_size", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?ndr_size_dom_sid0(&r->sid, ndr->flags):r->sid_size);
+		ndr_print_dom_sid(ndr, "sid", &r->sid);
+		ndr_print_string(ndr, "dns_name", r->dns_name);
+		ndr_print_string(ndr, "netbios_name", r->netbios_name);
+		ndr->depth--;
+		ndr->flags = _flags_save_STRUCT;
+	}
+}
+
+static enum ndr_err_code ndr_push_ForestTrustDataBinaryData(struct ndr_push *ndr, int ndr_flags, const struct ForestTrustDataBinaryData *r)
+{
+	{
+		uint32_t _flags_save_STRUCT = ndr->flags;
+		ndr_set_flags(&ndr->flags, LIBNDR_FLAG_NOALIGN);
+		if (ndr_flags & NDR_SCALARS) {
+			NDR_CHECK(ndr_push_align(ndr, 4));
+			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->size));
+			NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->data, r->size));
+			NDR_CHECK(ndr_push_trailer_align(ndr, 4));
+		}
+		if (ndr_flags & NDR_BUFFERS) {
+		}
+		ndr->flags = _flags_save_STRUCT;
+	}
+	return NDR_ERR_SUCCESS;
+}
+
+static enum ndr_err_code ndr_pull_ForestTrustDataBinaryData(struct ndr_pull *ndr, int ndr_flags, struct ForestTrustDataBinaryData *r)
+{
+	{
+		uint32_t _flags_save_STRUCT = ndr->flags;
+		ndr_set_flags(&ndr->flags, LIBNDR_FLAG_NOALIGN);
+		if (ndr_flags & NDR_SCALARS) {
+			NDR_CHECK(ndr_pull_align(ndr, 4));
+			NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->size));
+			NDR_PULL_ALLOC_N(ndr, r->data, r->size);
+			NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->data, r->size));
+			NDR_CHECK(ndr_pull_trailer_align(ndr, 4));
+		}
+		if (ndr_flags & NDR_BUFFERS) {
+		}
+		ndr->flags = _flags_save_STRUCT;
+	}
+	return NDR_ERR_SUCCESS;
+}
+
+_PUBLIC_ void ndr_print_ForestTrustDataBinaryData(struct ndr_print *ndr, const char *name, const struct ForestTrustDataBinaryData *r)
+{
+	ndr_print_struct(ndr, name, "ForestTrustDataBinaryData");
+	{
+		uint32_t _flags_save_STRUCT = ndr->flags;
+		ndr_set_flags(&ndr->flags, LIBNDR_FLAG_NOALIGN);
+		ndr->depth++;
+		ndr_print_uint32(ndr, "size", r->size);
+		ndr_print_array_uint8(ndr, "data", r->data, r->size);
+		ndr->depth--;
+		ndr->flags = _flags_save_STRUCT;
+	}
+}
+
+static enum ndr_err_code ndr_push_ForestTrustData(struct ndr_push *ndr, int ndr_flags, const union ForestTrustData *r)
+{
+	if (ndr_flags & NDR_SCALARS) {
+		int level = ndr_push_get_switch_value(ndr, r);
+		NDR_CHECK(ndr_push_union_align(ndr, 4));
+		switch (level) {
+			case FOREST_TRUST_TOP_LEVEL_NAME: {
+				{
+					uint32_t _flags_save_string = ndr->flags;
+					ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_UTF8|LIBNDR_FLAG_STR_SIZE4);
+					NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->name));
+					ndr->flags = _flags_save_string;
+				}
+			break; }
+
+			case FOREST_TRUST_TOP_LEVEL_NAME_EX: {
+				{
+					uint32_t _flags_save_string = ndr->flags;
+					ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_UTF8|LIBNDR_FLAG_STR_SIZE4);
+					NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->name));
+					ndr->flags = _flags_save_string;
+				}
+			break; }
+
+			case FOREST_TRUST_DOMAIN_INFO: {
+				NDR_CHECK(ndr_push_ForestTrustDataDomainInfo(ndr, NDR_SCALARS, &r->info));
+			break; }
+
+			default: {
+				NDR_CHECK(ndr_push_ForestTrustDataBinaryData(ndr, NDR_SCALARS, &r->data));
+			break; }
+
+		}
+	}
+	if (ndr_flags & NDR_BUFFERS) {
+		int level = ndr_push_get_switch_value(ndr, r);
+		switch (level) {
+			case FOREST_TRUST_TOP_LEVEL_NAME:
+			break;
+
+			case FOREST_TRUST_TOP_LEVEL_NAME_EX:
+			break;
+
+			case FOREST_TRUST_DOMAIN_INFO:
+			break;
+
+			default:
+			break;
+
+		}
+	}
+	return NDR_ERR_SUCCESS;
+}
+
+static enum ndr_err_code ndr_pull_ForestTrustData(struct ndr_pull *ndr, int ndr_flags, union ForestTrustData *r)
+{
+	int level;
+	level = ndr_pull_get_switch_value(ndr, r);
+	if (ndr_flags & NDR_SCALARS) {
+		NDR_CHECK(ndr_pull_union_align(ndr, 4));
+		switch (level) {
+			case FOREST_TRUST_TOP_LEVEL_NAME: {
+				{
+					uint32_t _flags_save_string = ndr->flags;
+					ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_UTF8|LIBNDR_FLAG_STR_SIZE4);
+					NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->name));
+					ndr->flags = _flags_save_string;
+				}
+			break; }
+
+			case FOREST_TRUST_TOP_LEVEL_NAME_EX: {
+				{
+					uint32_t _flags_save_string = ndr->flags;
+					ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_UTF8|LIBNDR_FLAG_STR_SIZE4);
+					NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->name));
+					ndr->flags = _flags_save_string;
+				}
+			break; }
+
+			case FOREST_TRUST_DOMAIN_INFO: {
+				NDR_CHECK(ndr_pull_ForestTrustDataDomainInfo(ndr, NDR_SCALARS, &r->info));
+			break; }
+
+			default: {
+				NDR_CHECK(ndr_pull_ForestTrustDataBinaryData(ndr, NDR_SCALARS, &r->data));
+			break; }
+
+		}
+	}
+	if (ndr_flags & NDR_BUFFERS) {
+		switch (level) {
+			case FOREST_TRUST_TOP_LEVEL_NAME:
+			break;
+
+			case FOREST_TRUST_TOP_LEVEL_NAME_EX:
+			break;
+
+			case FOREST_TRUST_DOMAIN_INFO:
+			break;
+
+			default:
+			break;
+
+		}
+	}
+	return NDR_ERR_SUCCESS;
+}
+
+_PUBLIC_ void ndr_print_ForestTrustData(struct ndr_print *ndr, const char *name, const union ForestTrustData *r)
+{
+	int level;
+	level = ndr_print_get_switch_value(ndr, r);
+	ndr_print_union(ndr, name, level, "ForestTrustData");
+	switch (level) {
+		case FOREST_TRUST_TOP_LEVEL_NAME:
+			ndr_print_string(ndr, "name", r->name);
+		break;
+
+		case FOREST_TRUST_TOP_LEVEL_NAME_EX:
+			ndr_print_string(ndr, "name", r->name);
+		break;
+
+		case FOREST_TRUST_DOMAIN_INFO:
+			ndr_print_ForestTrustDataDomainInfo(ndr, "info", &r->info);
+		break;
+
+		default:
+			ndr_print_ForestTrustDataBinaryData(ndr, "data", &r->data);
+		break;
+
+	}
+}
+
+static enum ndr_err_code ndr_push_ForestTrustInfoRecordType(struct ndr_push *ndr, int ndr_flags, enum ForestTrustInfoRecordType r)
+{
+	NDR_CHECK(ndr_push_enum_uint8(ndr, NDR_SCALARS, r));
+	return NDR_ERR_SUCCESS;
+}
+
+static enum ndr_err_code ndr_pull_ForestTrustInfoRecordType(struct ndr_pull *ndr, int ndr_flags, enum ForestTrustInfoRecordType *r)
+{
+	uint8_t v;
+	NDR_CHECK(ndr_pull_enum_uint8(ndr, NDR_SCALARS, &v));
+	*r = v;
+	return NDR_ERR_SUCCESS;
+}
+
+_PUBLIC_ void ndr_print_ForestTrustInfoRecordType(struct ndr_print *ndr, const char *name, enum ForestTrustInfoRecordType r)
+{
+	const char *val = NULL;
+
+	switch (r) {
+		case FOREST_TRUST_TOP_LEVEL_NAME: val = "FOREST_TRUST_TOP_LEVEL_NAME"; break;
+		case FOREST_TRUST_TOP_LEVEL_NAME_EX: val = "FOREST_TRUST_TOP_LEVEL_NAME_EX"; break;
+		case FOREST_TRUST_DOMAIN_INFO: val = "FOREST_TRUST_DOMAIN_INFO"; break;
+	}
+	ndr_print_enum(ndr, name, "ENUM", val, r);
+}
+
+static enum ndr_err_code ndr_push_ForestTrustInfoRecord(struct ndr_push *ndr, int ndr_flags, const struct ForestTrustInfoRecord *r)
+{
+	{
+		uint32_t _flags_save_STRUCT = ndr->flags;
+		ndr_set_flags(&ndr->flags, LIBNDR_FLAG_NOALIGN);
+		if (ndr_flags & NDR_SCALARS) {
+			NDR_CHECK(ndr_push_align(ndr, 4));
+			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->length));
+			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->flags));
+			NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->timestamp));
+			NDR_CHECK(ndr_push_ForestTrustInfoRecordType(ndr, NDR_SCALARS, r->type));
+			NDR_CHECK(ndr_push_set_switch_value(ndr, &r->data, r->type));
+			NDR_CHECK(ndr_push_ForestTrustData(ndr, NDR_SCALARS, &r->data));
+			NDR_CHECK(ndr_push_trailer_align(ndr, 4));
+		}
+		if (ndr_flags & NDR_BUFFERS) {
+		}
+		ndr->flags = _flags_save_STRUCT;
+	}
+	return NDR_ERR_SUCCESS;
+}
+
+static enum ndr_err_code ndr_pull_ForestTrustInfoRecord(struct ndr_pull *ndr, int ndr_flags, struct ForestTrustInfoRecord *r)
+{
+	{
+		uint32_t _flags_save_STRUCT = ndr->flags;
+		ndr_set_flags(&ndr->flags, LIBNDR_FLAG_NOALIGN);
+		if (ndr_flags & NDR_SCALARS) {
+			NDR_CHECK(ndr_pull_align(ndr, 4));
+			NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->length));
+			NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->flags));
+			NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->timestamp));
+			NDR_CHECK(ndr_pull_ForestTrustInfoRecordType(ndr, NDR_SCALARS, &r->type));
+			NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->data, r->type));
+			NDR_CHECK(ndr_pull_ForestTrustData(ndr, NDR_SCALARS, &r->data));
+			NDR_CHECK(ndr_pull_trailer_align(ndr, 4));
+		}
+		if (ndr_flags & NDR_BUFFERS) {
+		}
+		ndr->flags = _flags_save_STRUCT;
+	}
+	return NDR_ERR_SUCCESS;
+}
+
+_PUBLIC_ void ndr_print_ForestTrustInfoRecord(struct ndr_print *ndr, const char *name, const struct ForestTrustInfoRecord *r)
+{
+	ndr_print_struct(ndr, name, "ForestTrustInfoRecord");
+	{
+		uint32_t _flags_save_STRUCT = ndr->flags;
+		ndr_set_flags(&ndr->flags, LIBNDR_FLAG_NOALIGN);
+		ndr->depth++;
+		ndr_print_uint32(ndr, "length", r->length);
+		ndr_print_uint32(ndr, "flags", r->flags);
+		ndr_print_NTTIME(ndr, "timestamp", r->timestamp);
+		ndr_print_ForestTrustInfoRecordType(ndr, "type", r->type);
+		ndr_print_set_switch_value(ndr, &r->data, r->type);
+		ndr_print_ForestTrustData(ndr, "data", &r->data);
+		ndr->depth--;
+		ndr->flags = _flags_save_STRUCT;
+	}
+}
+
+_PUBLIC_ enum ndr_err_code ndr_push_ForestTrustInfo(struct ndr_push *ndr, int ndr_flags, const struct ForestTrustInfo *r)
+{
+	uint32_t cntr_records_0;
+	{
+		uint32_t _flags_save_STRUCT = ndr->flags;
+		ndr_set_flags(&ndr->flags, LIBNDR_FLAG_NOALIGN);
+		if (ndr_flags & NDR_SCALARS) {
+			NDR_CHECK(ndr_push_align(ndr, 4));
+			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->version));
+			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
+			for (cntr_records_0 = 0; cntr_records_0 < r->count; cntr_records_0++) {
+				NDR_CHECK(ndr_push_ForestTrustInfoRecord(ndr, NDR_SCALARS, &r->records[cntr_records_0]));
+			}
+			NDR_CHECK(ndr_push_trailer_align(ndr, 4));
+		}
+		if (ndr_flags & NDR_BUFFERS) {
+		}
+		ndr->flags = _flags_save_STRUCT;
+	}
+	return NDR_ERR_SUCCESS;
+}
+
+_PUBLIC_ enum ndr_err_code ndr_pull_ForestTrustInfo(struct ndr_pull *ndr, int ndr_flags, struct ForestTrustInfo *r)
+{
+	uint32_t cntr_records_0;
+	TALLOC_CTX *_mem_save_records_0;
+	{
+		uint32_t _flags_save_STRUCT = ndr->flags;
+		ndr_set_flags(&ndr->flags, LIBNDR_FLAG_NOALIGN);
+		if (ndr_flags & NDR_SCALARS) {
+			NDR_CHECK(ndr_pull_align(ndr, 4));
+			NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->version));
+			NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->count));
+			NDR_PULL_ALLOC_N(ndr, r->records, r->count);
+			_mem_save_records_0 = NDR_PULL_GET_MEM_CTX(ndr);
+			NDR_PULL_SET_MEM_CTX(ndr, r->records, 0);
+			for (cntr_records_0 = 0; cntr_records_0 < r->count; cntr_records_0++) {
+				NDR_CHECK(ndr_pull_ForestTrustInfoRecord(ndr, NDR_SCALARS, &r->records[cntr_records_0]));
+			}
+			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_records_0, 0);
+			NDR_CHECK(ndr_pull_trailer_align(ndr, 4));
+		}
+		if (ndr_flags & NDR_BUFFERS) {
+		}
+		ndr->flags = _flags_save_STRUCT;
+	}
+	return NDR_ERR_SUCCESS;


-- 
Samba Shared Repository


More information about the samba-cvs mailing list