[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