[SCM] Samba Shared Repository - branch master updated - tevent-0-9-8-559-gcc48e9a

Stefan Metzmacher metze at samba.org
Sat Sep 19 22:18:20 MDT 2009


The branch, master has been updated
       via  cc48e9a01a70dba899cb222c68a4b4e241249329 (commit)
       via  8958a04e6fa8bfec4d6ca50b17bf681da39eae62 (commit)
      from  ced2429dfa586f27567f4d7b36a2ca76d566c965 (commit)

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


- Log -----------------------------------------------------------------
commit cc48e9a01a70dba899cb222c68a4b4e241249329
Author: Stefan Metzmacher <metze at samba.org>
Date:   Sun Sep 20 05:57:37 2009 +0200

    rerun: make idl
    
    metze

commit 8958a04e6fa8bfec4d6ca50b17bf681da39eae62
Author: Stefan Metzmacher <metze at samba.org>
Date:   Sun Sep 20 05:52:14 2009 +0200

    drsblobs.idl: add decoding for repsFromTo2
    
    This is used in windows 2008.
    
    metze

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

Summary of changes:
 librpc/gen_ndr/drsblobs.h     |   27 ++++
 librpc/gen_ndr/ndr_drsblobs.c |  289 +++++++++++++++++++++++++++++++++++++++++
 librpc/gen_ndr/ndr_drsblobs.h |    8 +
 librpc/idl/drsblobs.idl       |   30 +++++
 4 files changed, 354 insertions(+), 0 deletions(-)


Changeset truncated at 500 lines:

diff --git a/librpc/gen_ndr/drsblobs.h b/librpc/gen_ndr/drsblobs.h
index f7570af..b1b9192 100644
--- a/librpc/gen_ndr/drsblobs.h
+++ b/librpc/gen_ndr/drsblobs.h
@@ -82,8 +82,35 @@ struct repsFromTo1 {
 	struct GUID transport_guid;
 }/* [gensize,public,flag(LIBNDR_PRINT_ARRAY_HEX)] */;
 
+struct repsFromTo2OtherInfo {
+	uint32_t __ndr_size;/* [value(ndr_size_repsFromTo2OtherInfo(this,ndr->iconv_convenience,ndr->flags))] */
+	const char * dns_name1;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+	uint32_t unknown1;
+	const char * dns_name2;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+	uint64_t unknown2;
+}/* [relative_base,gensize,public] */;
+
+struct repsFromTo2 {
+	uint32_t blobsize;/* [value(ndr_size_repsFromTo1(this,ndr->iconv_convenience,ndr->flags)+8)] */
+	uint32_t consecutive_sync_failures;
+	NTTIME last_success;
+	NTTIME last_attempt;
+	WERROR result_last_attempt;
+	struct repsFromTo2OtherInfo *other_info;/* [relative] */
+	uint32_t other_info_length;/* [value(ndr_size_repsFromTo2OtherInfo(other_info,ndr->iconv_convenience,ndr->flags))] */
+	uint32_t replica_flags;
+	uint8_t schedule[84];
+	uint32_t reserved;
+	struct drsuapi_DsReplicaHighWaterMark highwatermark;
+	struct GUID source_dsa_obj_guid;
+	struct GUID source_dsa_invocation_id;
+	struct GUID transport_guid;
+	uint64_t unknown1;
+}/* [gensize,public,flag(LIBNDR_PRINT_ARRAY_HEX)] */;
+
 union repsFromTo {
 	struct repsFromTo1 ctr1;/* [case] */
+	struct repsFromTo2 ctr2;/* [case(2)] */
 }/* [nodiscriminant] */;
 
 struct repsFromToBlob {
diff --git a/librpc/gen_ndr/ndr_drsblobs.c b/librpc/gen_ndr/ndr_drsblobs.c
index 2051ba6..af57cb3 100644
--- a/librpc/gen_ndr/ndr_drsblobs.c
+++ b/librpc/gen_ndr/ndr_drsblobs.c
@@ -608,6 +608,275 @@ _PUBLIC_ size_t ndr_size_repsFromTo1(const struct repsFromTo1 *r, struct smb_ico
 	return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_repsFromTo1, ic);
 }
 
+_PUBLIC_ enum ndr_err_code ndr_push_repsFromTo2OtherInfo(struct ndr_push *ndr, int ndr_flags, const struct repsFromTo2OtherInfo *r)
+{
+	uint32_t _save_relative_base_offset = ndr_push_get_relative_base_offset(ndr);
+	if (ndr_flags & NDR_SCALARS) {
+		NDR_CHECK(ndr_push_align(ndr, 8));
+		NDR_CHECK(ndr_push_setup_relative_base_offset1(ndr, r, ndr->offset));
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_size_repsFromTo2OtherInfo(r, ndr->iconv_convenience, ndr->flags)));
+		{
+			uint32_t _flags_save_string = ndr->flags;
+			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
+			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->dns_name1));
+			ndr->flags = _flags_save_string;
+		}
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown1));
+		{
+			uint32_t _flags_save_string = ndr->flags;
+			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
+			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->dns_name2));
+			ndr->flags = _flags_save_string;
+		}
+		NDR_CHECK(ndr_push_hyper(ndr, NDR_SCALARS, r->unknown2));
+	}
+	if (ndr_flags & NDR_BUFFERS) {
+		NDR_CHECK(ndr_push_setup_relative_base_offset2(ndr, r));
+		{
+			uint32_t _flags_save_string = ndr->flags;
+			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
+			if (r->dns_name1) {
+				NDR_CHECK(ndr_push_relative_ptr2(ndr, r->dns_name1));
+				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->dns_name1));
+			}
+			ndr->flags = _flags_save_string;
+		}
+		{
+			uint32_t _flags_save_string = ndr->flags;
+			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
+			if (r->dns_name2) {
+				NDR_CHECK(ndr_push_relative_ptr2(ndr, r->dns_name2));
+				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->dns_name2));
+			}
+			ndr->flags = _flags_save_string;
+		}
+	}
+	ndr_push_restore_relative_base_offset(ndr, _save_relative_base_offset);
+	return NDR_ERR_SUCCESS;
+}
+
+_PUBLIC_ enum ndr_err_code ndr_pull_repsFromTo2OtherInfo(struct ndr_pull *ndr, int ndr_flags, struct repsFromTo2OtherInfo *r)
+{
+	uint32_t _save_relative_base_offset = ndr_pull_get_relative_base_offset(ndr);
+	uint32_t _ptr_dns_name1;
+	TALLOC_CTX *_mem_save_dns_name1_0;
+	uint32_t _ptr_dns_name2;
+	TALLOC_CTX *_mem_save_dns_name2_0;
+	if (ndr_flags & NDR_SCALARS) {
+		NDR_CHECK(ndr_pull_align(ndr, 8));
+		NDR_CHECK(ndr_pull_setup_relative_base_offset1(ndr, r, ndr->offset));
+		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->__ndr_size));
+		{
+			uint32_t _flags_save_string = ndr->flags;
+			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
+			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dns_name1));
+			if (_ptr_dns_name1) {
+				NDR_PULL_ALLOC(ndr, r->dns_name1);
+				NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->dns_name1, _ptr_dns_name1));
+			} else {
+				r->dns_name1 = NULL;
+			}
+			ndr->flags = _flags_save_string;
+		}
+		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown1));
+		{
+			uint32_t _flags_save_string = ndr->flags;
+			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
+			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dns_name2));
+			if (_ptr_dns_name2) {
+				NDR_PULL_ALLOC(ndr, r->dns_name2);
+				NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->dns_name2, _ptr_dns_name2));
+			} else {
+				r->dns_name2 = NULL;
+			}
+			ndr->flags = _flags_save_string;
+		}
+		NDR_CHECK(ndr_pull_hyper(ndr, NDR_SCALARS, &r->unknown2));
+	}
+	if (ndr_flags & NDR_BUFFERS) {
+		NDR_CHECK(ndr_pull_setup_relative_base_offset2(ndr, r));
+		{
+			uint32_t _flags_save_string = ndr->flags;
+			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
+			if (r->dns_name1) {
+				uint32_t _relative_save_offset;
+				_relative_save_offset = ndr->offset;
+				NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->dns_name1));
+				_mem_save_dns_name1_0 = NDR_PULL_GET_MEM_CTX(ndr);
+				NDR_PULL_SET_MEM_CTX(ndr, r->dns_name1, 0);
+				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->dns_name1));
+				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dns_name1_0, 0);
+				ndr->offset = _relative_save_offset;
+			}
+			ndr->flags = _flags_save_string;
+		}
+		{
+			uint32_t _flags_save_string = ndr->flags;
+			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
+			if (r->dns_name2) {
+				uint32_t _relative_save_offset;
+				_relative_save_offset = ndr->offset;
+				NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->dns_name2));
+				_mem_save_dns_name2_0 = NDR_PULL_GET_MEM_CTX(ndr);
+				NDR_PULL_SET_MEM_CTX(ndr, r->dns_name2, 0);
+				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->dns_name2));
+				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dns_name2_0, 0);
+				ndr->offset = _relative_save_offset;
+			}
+			ndr->flags = _flags_save_string;
+		}
+	}
+	ndr_pull_restore_relative_base_offset(ndr, _save_relative_base_offset);
+	return NDR_ERR_SUCCESS;
+}
+
+_PUBLIC_ void ndr_print_repsFromTo2OtherInfo(struct ndr_print *ndr, const char *name, const struct repsFromTo2OtherInfo *r)
+{
+	ndr_print_struct(ndr, name, "repsFromTo2OtherInfo");
+	ndr->depth++;
+	ndr_print_uint32(ndr, "__ndr_size", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?ndr_size_repsFromTo2OtherInfo(r, ndr->iconv_convenience, ndr->flags):r->__ndr_size);
+	ndr_print_ptr(ndr, "dns_name1", r->dns_name1);
+	ndr->depth++;
+	if (r->dns_name1) {
+		ndr_print_string(ndr, "dns_name1", r->dns_name1);
+	}
+	ndr->depth--;
+	ndr_print_uint32(ndr, "unknown1", r->unknown1);
+	ndr_print_ptr(ndr, "dns_name2", r->dns_name2);
+	ndr->depth++;
+	if (r->dns_name2) {
+		ndr_print_string(ndr, "dns_name2", r->dns_name2);
+	}
+	ndr->depth--;
+	ndr_print_hyper(ndr, "unknown2", r->unknown2);
+	ndr->depth--;
+}
+
+_PUBLIC_ size_t ndr_size_repsFromTo2OtherInfo(const struct repsFromTo2OtherInfo *r, struct smb_iconv_convenience *ic, int flags)
+{
+	return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_repsFromTo2OtherInfo, ic);
+}
+
+_PUBLIC_ enum ndr_err_code ndr_push_repsFromTo2(struct ndr_push *ndr, int ndr_flags, const struct repsFromTo2 *r)
+{
+	{
+		uint32_t _flags_save_STRUCT = ndr->flags;
+		ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
+		if (ndr_flags & NDR_SCALARS) {
+			NDR_CHECK(ndr_push_align(ndr, 8));
+			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_size_repsFromTo1(r, ndr->iconv_convenience, ndr->flags) + 8));
+			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->consecutive_sync_failures));
+			NDR_CHECK(ndr_push_NTTIME_1sec(ndr, NDR_SCALARS, r->last_success));
+			NDR_CHECK(ndr_push_NTTIME_1sec(ndr, NDR_SCALARS, r->last_attempt));
+			NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->result_last_attempt));
+			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->other_info));
+			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_size_repsFromTo2OtherInfo(r->other_info, ndr->iconv_convenience, ndr->flags)));
+			NDR_CHECK(ndr_push_drsuapi_DsReplicaNeighbourFlags(ndr, NDR_SCALARS, r->replica_flags));
+			NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->schedule, 84));
+			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->reserved));
+			NDR_CHECK(ndr_push_drsuapi_DsReplicaHighWaterMark(ndr, NDR_SCALARS, &r->highwatermark));
+			NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, &r->source_dsa_obj_guid));
+			NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, &r->source_dsa_invocation_id));
+			NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, &r->transport_guid));
+			NDR_CHECK(ndr_push_hyper(ndr, NDR_SCALARS, r->unknown1));
+		}
+		if (ndr_flags & NDR_BUFFERS) {
+			if (r->other_info) {
+				NDR_CHECK(ndr_push_relative_ptr2(ndr, r->other_info));
+				NDR_CHECK(ndr_push_repsFromTo2OtherInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->other_info));
+			}
+		}
+		ndr->flags = _flags_save_STRUCT;
+	}
+	return NDR_ERR_SUCCESS;
+}
+
+_PUBLIC_ enum ndr_err_code ndr_pull_repsFromTo2(struct ndr_pull *ndr, int ndr_flags, struct repsFromTo2 *r)
+{
+	uint32_t _ptr_other_info;
+	TALLOC_CTX *_mem_save_other_info_0;
+	{
+		uint32_t _flags_save_STRUCT = ndr->flags;
+		ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
+		if (ndr_flags & NDR_SCALARS) {
+			NDR_CHECK(ndr_pull_align(ndr, 8));
+			NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->blobsize));
+			NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->consecutive_sync_failures));
+			NDR_CHECK(ndr_pull_NTTIME_1sec(ndr, NDR_SCALARS, &r->last_success));
+			NDR_CHECK(ndr_pull_NTTIME_1sec(ndr, NDR_SCALARS, &r->last_attempt));
+			NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->result_last_attempt));
+			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_other_info));
+			if (_ptr_other_info) {
+				NDR_PULL_ALLOC(ndr, r->other_info);
+				NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->other_info, _ptr_other_info));
+			} else {
+				r->other_info = NULL;
+			}
+			NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->other_info_length));
+			NDR_CHECK(ndr_pull_drsuapi_DsReplicaNeighbourFlags(ndr, NDR_SCALARS, &r->replica_flags));
+			NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->schedule, 84));
+			NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->reserved));
+			NDR_CHECK(ndr_pull_drsuapi_DsReplicaHighWaterMark(ndr, NDR_SCALARS, &r->highwatermark));
+			NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, &r->source_dsa_obj_guid));
+			NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, &r->source_dsa_invocation_id));
+			NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, &r->transport_guid));
+			NDR_CHECK(ndr_pull_hyper(ndr, NDR_SCALARS, &r->unknown1));
+		}
+		if (ndr_flags & NDR_BUFFERS) {
+			if (r->other_info) {
+				uint32_t _relative_save_offset;
+				_relative_save_offset = ndr->offset;
+				NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->other_info));
+				_mem_save_other_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
+				NDR_PULL_SET_MEM_CTX(ndr, r->other_info, 0);
+				NDR_CHECK(ndr_pull_repsFromTo2OtherInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->other_info));
+				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_other_info_0, 0);
+				ndr->offset = _relative_save_offset;
+			}
+		}
+		ndr->flags = _flags_save_STRUCT;
+	}
+	return NDR_ERR_SUCCESS;
+}
+
+_PUBLIC_ void ndr_print_repsFromTo2(struct ndr_print *ndr, const char *name, const struct repsFromTo2 *r)
+{
+	ndr_print_struct(ndr, name, "repsFromTo2");
+	{
+		uint32_t _flags_save_STRUCT = ndr->flags;
+		ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
+		ndr->depth++;
+		ndr_print_uint32(ndr, "blobsize", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?ndr_size_repsFromTo1(r, ndr->iconv_convenience, ndr->flags) + 8:r->blobsize);
+		ndr_print_uint32(ndr, "consecutive_sync_failures", r->consecutive_sync_failures);
+		ndr_print_NTTIME_1sec(ndr, "last_success", r->last_success);
+		ndr_print_NTTIME_1sec(ndr, "last_attempt", r->last_attempt);
+		ndr_print_WERROR(ndr, "result_last_attempt", r->result_last_attempt);
+		ndr_print_ptr(ndr, "other_info", r->other_info);
+		ndr->depth++;
+		if (r->other_info) {
+			ndr_print_repsFromTo2OtherInfo(ndr, "other_info", r->other_info);
+		}
+		ndr->depth--;
+		ndr_print_uint32(ndr, "other_info_length", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?ndr_size_repsFromTo2OtherInfo(r->other_info, ndr->iconv_convenience, ndr->flags):r->other_info_length);
+		ndr_print_drsuapi_DsReplicaNeighbourFlags(ndr, "replica_flags", r->replica_flags);
+		ndr_print_array_uint8(ndr, "schedule", r->schedule, 84);
+		ndr_print_uint32(ndr, "reserved", r->reserved);
+		ndr_print_drsuapi_DsReplicaHighWaterMark(ndr, "highwatermark", &r->highwatermark);
+		ndr_print_GUID(ndr, "source_dsa_obj_guid", &r->source_dsa_obj_guid);
+		ndr_print_GUID(ndr, "source_dsa_invocation_id", &r->source_dsa_invocation_id);
+		ndr_print_GUID(ndr, "transport_guid", &r->transport_guid);
+		ndr_print_hyper(ndr, "unknown1", r->unknown1);
+		ndr->depth--;
+		ndr->flags = _flags_save_STRUCT;
+	}
+}
+
+_PUBLIC_ size_t ndr_size_repsFromTo2(const struct repsFromTo2 *r, struct smb_iconv_convenience *ic, int flags)
+{
+	flags |= LIBNDR_PRINT_ARRAY_HEX;
+	return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_repsFromTo2, ic);
+}
+
 static enum ndr_err_code ndr_push_repsFromTo(struct ndr_push *ndr, int ndr_flags, const union repsFromTo *r)
 {
 	if (ndr_flags & NDR_SCALARS) {
@@ -617,6 +886,10 @@ static enum ndr_err_code ndr_push_repsFromTo(struct ndr_push *ndr, int ndr_flags
 				NDR_CHECK(ndr_push_repsFromTo1(ndr, NDR_SCALARS, &r->ctr1));
 			break; }
 
+			case 2: {
+				NDR_CHECK(ndr_push_repsFromTo2(ndr, NDR_SCALARS, &r->ctr2));
+			break; }
+
 			default:
 				return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__);
 		}
@@ -628,6 +901,10 @@ static enum ndr_err_code ndr_push_repsFromTo(struct ndr_push *ndr, int ndr_flags
 				NDR_CHECK(ndr_push_repsFromTo1(ndr, NDR_BUFFERS, &r->ctr1));
 			break;
 
+			case 2:
+				NDR_CHECK(ndr_push_repsFromTo2(ndr, NDR_BUFFERS, &r->ctr2));
+			break;
+
 			default:
 				return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__);
 		}
@@ -645,6 +922,10 @@ static enum ndr_err_code ndr_pull_repsFromTo(struct ndr_pull *ndr, int ndr_flags
 				NDR_CHECK(ndr_pull_repsFromTo1(ndr, NDR_SCALARS, &r->ctr1));
 			break; }
 
+			case 2: {
+				NDR_CHECK(ndr_pull_repsFromTo2(ndr, NDR_SCALARS, &r->ctr2));
+			break; }
+
 			default:
 				return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__);
 		}
@@ -655,6 +936,10 @@ static enum ndr_err_code ndr_pull_repsFromTo(struct ndr_pull *ndr, int ndr_flags
 				NDR_CHECK(ndr_pull_repsFromTo1(ndr, NDR_BUFFERS, &r->ctr1));
 			break;
 
+			case 2:
+				NDR_CHECK(ndr_pull_repsFromTo2(ndr, NDR_BUFFERS, &r->ctr2));
+			break;
+
 			default:
 				return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__);
 		}
@@ -672,6 +957,10 @@ _PUBLIC_ void ndr_print_repsFromTo(struct ndr_print *ndr, const char *name, cons
 			ndr_print_repsFromTo1(ndr, "ctr1", &r->ctr1);
 		break;
 
+		case 2:
+			ndr_print_repsFromTo2(ndr, "ctr2", &r->ctr2);
+		break;
+
 		default:
 			ndr_print_bad_level(ndr, name, level);
 	}
diff --git a/librpc/gen_ndr/ndr_drsblobs.h b/librpc/gen_ndr/ndr_drsblobs.h
index 27c13c8..d32d178 100644
--- a/librpc/gen_ndr/ndr_drsblobs.h
+++ b/librpc/gen_ndr/ndr_drsblobs.h
@@ -61,6 +61,14 @@ enum ndr_err_code ndr_push_repsFromTo1(struct ndr_push *ndr, int ndr_flags, cons
 enum ndr_err_code ndr_pull_repsFromTo1(struct ndr_pull *ndr, int ndr_flags, struct repsFromTo1 *r);
 void ndr_print_repsFromTo1(struct ndr_print *ndr, const char *name, const struct repsFromTo1 *r);
 size_t ndr_size_repsFromTo1(const struct repsFromTo1 *r, struct smb_iconv_convenience *ic, int flags);
+enum ndr_err_code ndr_push_repsFromTo2OtherInfo(struct ndr_push *ndr, int ndr_flags, const struct repsFromTo2OtherInfo *r);
+enum ndr_err_code ndr_pull_repsFromTo2OtherInfo(struct ndr_pull *ndr, int ndr_flags, struct repsFromTo2OtherInfo *r);
+void ndr_print_repsFromTo2OtherInfo(struct ndr_print *ndr, const char *name, const struct repsFromTo2OtherInfo *r);
+size_t ndr_size_repsFromTo2OtherInfo(const struct repsFromTo2OtherInfo *r, struct smb_iconv_convenience *ic, int flags);
+enum ndr_err_code ndr_push_repsFromTo2(struct ndr_push *ndr, int ndr_flags, const struct repsFromTo2 *r);
+enum ndr_err_code ndr_pull_repsFromTo2(struct ndr_pull *ndr, int ndr_flags, struct repsFromTo2 *r);
+void ndr_print_repsFromTo2(struct ndr_print *ndr, const char *name, const struct repsFromTo2 *r);
+size_t ndr_size_repsFromTo2(const struct repsFromTo2 *r, struct smb_iconv_convenience *ic, int flags);
 void ndr_print_repsFromTo(struct ndr_print *ndr, const char *name, const union repsFromTo *r);
 enum ndr_err_code ndr_push_repsFromToBlob(struct ndr_push *ndr, int ndr_flags, const struct repsFromToBlob *r);
 enum ndr_err_code ndr_pull_repsFromToBlob(struct ndr_pull *ndr, int ndr_flags, struct repsFromToBlob *r);
diff --git a/librpc/idl/drsblobs.idl b/librpc/idl/drsblobs.idl
index f20d648..0c5f8ea 100644
--- a/librpc/idl/drsblobs.idl
+++ b/librpc/idl/drsblobs.idl
@@ -84,6 +84,7 @@ interface drsblobs {
 	 * repsFrom/repsTo
 	 * w2k  uses version 1
 	 * w2k3 uses version 1
+	 * w2k8 uses version 2
 	 */
 	typedef [public,gensize] struct {
 		[value(strlen(dns_name)+1)] uint32 __dns_name_size;
@@ -108,8 +109,37 @@ interface drsblobs {
 		GUID transport_guid;
 	} repsFromTo1;
 
+	typedef [public,relative_base,gensize] struct {
+		[value(ndr_size_repsFromTo2OtherInfo(this,ndr->iconv_convenience, ndr->flags))]
+			uint32 __ndr_size;
+		[relative] nstring *dns_name1;
+		uint32 unknown1;
+		[relative] nstring *dns_name2;
+		hyper unknown2;
+	} repsFromTo2OtherInfo;
+
+	typedef [public,gensize,flag(NDR_PAHEX)] struct {
+		/* this includes the 8 bytes of the repsFromToBlob header */
+		[value(ndr_size_repsFromTo1(this, ndr->iconv_convenience, ndr->flags)+8)] uint32 blobsize;
+		uint32 consecutive_sync_failures;
+		NTTIME_1sec last_success;
+		NTTIME_1sec last_attempt;
+		WERROR result_last_attempt;
+		[relative] repsFromTo2OtherInfo *other_info;
+		[value(ndr_size_repsFromTo2OtherInfo(other_info, ndr->iconv_convenience, ndr->flags))] uint32 other_info_length;
+		drsuapi_DsReplicaNeighbourFlags replica_flags;
+		uint8 schedule[84];
+		uint32 reserved;
+		drsuapi_DsReplicaHighWaterMark highwatermark;
+		GUID source_dsa_obj_guid; /* the 'objectGuid' field of the CN=NTDS Settings object */
+		GUID source_dsa_invocation_id; /* the 'invocationId' field of the CN=NTDS Settings object */
+		GUID transport_guid;
+		hyper unknown1;
+	} repsFromTo2;
+
 	typedef [nodiscriminant] union {
 		[case(1)] repsFromTo1 ctr1;
+		[case(2)] repsFromTo2 ctr2;
 	} repsFromTo;
 
 	typedef [public] struct {


-- 
Samba Shared Repository


More information about the samba-cvs mailing list