[SCM] Samba Shared Repository - branch v3-3-test updated - release-3-2-0pre2-3253-g6b7ddb6

Stefan Metzmacher metze at samba.org
Wed Jul 16 13:38:41 GMT 2008


The branch, v3-3-test has been updated
       via  6b7ddb6d664f5f3b62161cdb3abf12633b263a64 (commit)
       via  512912e1316a7d3d11a2434efa568d9ec50914b4 (commit)
       via  11ab230832b48f2ff7f2c9319168b6ae53590b61 (commit)
       via  7488eda7a33f5ebe58a1c1217b7ac7e17e67946d (commit)
       via  c3ebb9ae001c1c2d74233b3f3e33dc8fd57098b6 (commit)
       via  0a24fa0dc3514ef19b84d41055682954a22d3079 (commit)
       via  6a33be98b8dd4223491f1cbed9a1af2bc44e7356 (commit)
      from  060ff6d8d4e61f3ce89f980182413852cc5719be (commit)

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-3-test


- Log -----------------------------------------------------------------
commit 6b7ddb6d664f5f3b62161cdb3abf12633b263a64
Author: Stefan Metzmacher <metze at samba.org>
Date:   Wed Jul 16 15:30:03 2008 +0200

    libnet_dssync: use ctr[1|6]->more_data
    
    metze

commit 512912e1316a7d3d11a2434efa568d9ec50914b4
Author: Stefan Metzmacher <metze at samba.org>
Date:   Wed Jul 16 15:26:55 2008 +0200

    rerun 'make idl' after drsuapi.idl changes
    
    metze

commit 11ab230832b48f2ff7f2c9319168b6ae53590b61
Author: Stefan Metzmacher <metze at samba.org>
Date:   Tue Jul 15 15:36:54 2008 +0200

    drsuapi.idl: fix unknowns in drsuapi_DsGetNCChangesCtr*
    
    metze
    (cherry picked from commit 9e99e59ca7e56bf74417ec85339e09e86f50d17e)

commit 7488eda7a33f5ebe58a1c1217b7ac7e17e67946d
Author: Stefan Metzmacher <metze at samba.org>
Date:   Tue Jul 15 15:35:47 2008 +0200

    drsuapi.idl: fix unknowns in drsuapi_DsReplicaObject*
    
    metze
    (cherry picked from commit de2aed042d09ae7a31ddc4cd920c8fcf193ba06a)

commit c3ebb9ae001c1c2d74233b3f3e33dc8fd57098b6
Author: Stefan Metzmacher <metze at samba.org>
Date:   Tue Jul 15 15:34:23 2008 +0200

    drsuapi.idl: fix unknowns in drsuapi_DsReplicaCursor[2]
    
    metze
    (cherry picked from commit a681e55067a83f06e465b81afb2b0b870b674dca)

commit 0a24fa0dc3514ef19b84d41055682954a22d3079
Author: Stefan Metzmacher <metze at samba.org>
Date:   Fri Jul 11 08:19:53 2008 +0000

    drsuapi.idl: correctly handle xpress compressed payload
    
    metze
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    (cherry picked from commit d9d19eef4f67da89e7d818d23a2372bee6f86dba)

commit 6a33be98b8dd4223491f1cbed9a1af2bc44e7356
Author: Stefan Metzmacher <metze at samba.org>
Date:   Mon Jun 30 13:01:02 2008 +0200

    drsuapi.idl: remove some unknows from DsGetNCChanges()
    
    metze
    (cherry picked from commit 924ef407bd20331cc94f5aeb58f53a5838ae00a4)

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

Summary of changes:
 source/libnet/libnet_dssync.c       |    4 +-
 source/librpc/gen_ndr/drsuapi.h     |  126 +++++++--
 source/librpc/gen_ndr/ndr_drsuapi.c |  527 ++++++++++++++++++++++++-----------
 source/librpc/gen_ndr/ndr_drsuapi.h |    6 +
 source/librpc/idl/drsuapi.idl       |   94 +++++--
 source/librpc/ndr/ndr_drsuapi.c     |    2 +-
 6 files changed, 542 insertions(+), 217 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source/libnet/libnet_dssync.c b/source/libnet/libnet_dssync.c
index 87d5e8a..a251e41 100644
--- a/source/libnet/libnet_dssync.c
+++ b/source/libnet/libnet_dssync.c
@@ -418,7 +418,7 @@ static NTSTATUS libnet_dssync_process(TALLOC_CTX *mem_ctx,
 							 &ctx->session_key,
 							 ctr1->first_object);
 
-			if (ctr1->new_highwatermark.tmp_highest_usn > ctr1->new_highwatermark.highest_usn) {
+			if (ctr1->more_data) {
 				req.req5.highwatermark = ctr1->new_highwatermark;
 				last_query = false;
 			}
@@ -461,7 +461,7 @@ static NTSTATUS libnet_dssync_process(TALLOC_CTX *mem_ctx,
 							 &ctx->session_key,
 							 ctr6->first_object);
 
-			if (ctr6->new_highwatermark.tmp_highest_usn > ctr6->new_highwatermark.highest_usn) {
+			if (ctr6->more_data) {
 				req.req8.highwatermark = ctr6->new_highwatermark;
 				last_query = false;
 			}
diff --git a/source/librpc/gen_ndr/drsuapi.h b/source/librpc/gen_ndr/drsuapi.h
index 0f81007..7b2acf0 100644
--- a/source/librpc/gen_ndr/drsuapi.h
+++ b/source/librpc/gen_ndr/drsuapi.h
@@ -135,10 +135,10 @@ struct drsuapi_DsReplicaCursor {
 }/* [public] */;
 
 struct drsuapi_DsReplicaCursorCtrEx {
-	uint32_t u1;
-	uint32_t u2;
+	uint32_t version;/* [value] */
+	uint32_t reserved1;/* [value(0)] */
 	uint32_t count;/* [range(0,0x100000)] */
-	uint32_t u3;
+	uint32_t reserved2;/* [value(0)] */
 	struct drsuapi_DsReplicaCursor *cursors;/* [size_is(count)] */
 };
 
@@ -159,6 +159,74 @@ struct drsuapi_DsReplicaCursorCtrEx {
 #define DRSUAPI_DS_REPLICA_NEIGHBOUR_NO_CHANGE_NOTIFICATIONS ( 0x20000000 )
 #define DRSUAPI_DS_REPLICA_NEIGHBOUR_PARTIAL_ATTRIBUTE_SET ( 0x40000000 )
 
+enum drsuapi_DsExtendedOperation
+#ifndef USE_UINT_ENUMS
+ {
+	DRSUAPI_EXOP_NONE=0x00000000,
+	DRSUAPI_EXOP_FSMO_REQ_ROLE=0x00000001,
+	DRSUAPI_EXOP_FSMO_RID_ALLOC=0x00000002,
+	DRSUAPI_EXOP_FSMO_RID_REQ_ROLE=0x00000003,
+	DRSUAPI_EXOP_FSMO_REQ_PDC=0x00000004,
+	DRSUAPI_EXOP_FSMO_ABANDON_ROLE=0x00000005,
+	DRSUAPI_EXOP_REPL_OBJ=0x00000006,
+	DRSUAPI_EXOP_REPL_SECRET=0x00000007
+}
+#else
+ { __donnot_use_enum_drsuapi_DsExtendedOperation=0x7FFFFFFF}
+#define DRSUAPI_EXOP_NONE ( 0x00000000 )
+#define DRSUAPI_EXOP_FSMO_REQ_ROLE ( 0x00000001 )
+#define DRSUAPI_EXOP_FSMO_RID_ALLOC ( 0x00000002 )
+#define DRSUAPI_EXOP_FSMO_RID_REQ_ROLE ( 0x00000003 )
+#define DRSUAPI_EXOP_FSMO_REQ_PDC ( 0x00000004 )
+#define DRSUAPI_EXOP_FSMO_ABANDON_ROLE ( 0x00000005 )
+#define DRSUAPI_EXOP_REPL_OBJ ( 0x00000006 )
+#define DRSUAPI_EXOP_REPL_SECRET ( 0x00000007 )
+#endif
+;
+
+enum drsuapi_DsExtendedError
+#ifndef USE_UINT_ENUMS
+ {
+	DRSUAPI_EXOP_ERR_NONE=0x00000000,
+	DRSUAPI_EXOP_ERR_SUCCESS=0x00000001,
+	DRSUAPI_EXOP_ERR_UNKNOWN_OP=0x00000002,
+	DRSUAPI_EXOP_ERR_FSMO_NOT_OWNER=0x00000003,
+	DRSUAPI_EXOP_ERR_UPDATE_ERR=0x00000004,
+	DRSUAPI_EXOP_ERR_EXCEPTION=0x00000005,
+	DRSUAPI_EXOP_ERR_UNKNOWN_CALLER=0x00000006,
+	DRSUAPI_EXOP_ERR_RID_ALLOC=0x00000007,
+	DRSUAPI_EXOP_ERR_FSMO_OWNER_DELETED=0x00000008,
+	DRSUAPI_EXOP_ERR_FMSO_PENDING_OP=0x00000009,
+	DRSUAPI_EXOP_ERR_MISMATCH=0x0000000A,
+	DRSUAPI_EXOP_ERR_COULDNT_CONTACT=0x0000000B,
+	DRSUAPI_EXOP_ERR_FSMO_REFUSING_ROLES=0x0000000C,
+	DRSUAPI_EXOP_ERR_DIR_ERROR=0x0000000D,
+	DRSUAPI_EXOP_ERR_FSMO_MISSING_SETTINGS=0x0000000E,
+	DRSUAPI_EXOP_ERR_ACCESS_DENIED=0x0000000F,
+	DRSUAPI_EXOP_ERR_PARAM_ERROR=0x00000010
+}
+#else
+ { __donnot_use_enum_drsuapi_DsExtendedError=0x7FFFFFFF}
+#define DRSUAPI_EXOP_ERR_NONE ( 0x00000000 )
+#define DRSUAPI_EXOP_ERR_SUCCESS ( 0x00000001 )
+#define DRSUAPI_EXOP_ERR_UNKNOWN_OP ( 0x00000002 )
+#define DRSUAPI_EXOP_ERR_FSMO_NOT_OWNER ( 0x00000003 )
+#define DRSUAPI_EXOP_ERR_UPDATE_ERR ( 0x00000004 )
+#define DRSUAPI_EXOP_ERR_EXCEPTION ( 0x00000005 )
+#define DRSUAPI_EXOP_ERR_UNKNOWN_CALLER ( 0x00000006 )
+#define DRSUAPI_EXOP_ERR_RID_ALLOC ( 0x00000007 )
+#define DRSUAPI_EXOP_ERR_FSMO_OWNER_DELETED ( 0x00000008 )
+#define DRSUAPI_EXOP_ERR_FMSO_PENDING_OP ( 0x00000009 )
+#define DRSUAPI_EXOP_ERR_MISMATCH ( 0x0000000A )
+#define DRSUAPI_EXOP_ERR_COULDNT_CONTACT ( 0x0000000B )
+#define DRSUAPI_EXOP_ERR_FSMO_REFUSING_ROLES ( 0x0000000C )
+#define DRSUAPI_EXOP_ERR_DIR_ERROR ( 0x0000000D )
+#define DRSUAPI_EXOP_ERR_FSMO_MISSING_SETTINGS ( 0x0000000E )
+#define DRSUAPI_EXOP_ERR_ACCESS_DENIED ( 0x0000000F )
+#define DRSUAPI_EXOP_ERR_PARAM_ERROR ( 0x00000010 )
+#endif
+;
+
 struct drsuapi_DsGetNCChangesRequest5 {
 	struct GUID destination_dsa_guid;
 	struct GUID source_dsa_invocation_id;
@@ -168,8 +236,8 @@ struct drsuapi_DsGetNCChangesRequest5 {
 	uint32_t replica_flags;
 	uint32_t max_object_count;
 	uint32_t max_ndr_size;
-	uint32_t unknown4;
-	uint64_t h1;
+	enum drsuapi_DsExtendedOperation extended_op;
+	uint64_t fsmo_info;
 };
 
 struct drsuapi_DsReplicaOID {
@@ -333,6 +401,13 @@ enum drsuapi_DsAttributeId
 #endif
 ;
 
+struct drsuapi_DsPartialAttributeSet {
+	uint32_t version;/* [value] */
+	uint32_t reserved1;/* [value(0)] */
+	uint32_t num_attids;/* [range(1,0x100000)] */
+	enum drsuapi_DsAttributeId *attids;/* [size_is(num_attids)] */
+};
+
 struct drsuapi_DsGetNCChangesRequest8 {
 	struct GUID destination_dsa_guid;
 	struct GUID source_dsa_invocation_id;
@@ -342,10 +417,10 @@ struct drsuapi_DsGetNCChangesRequest8 {
 	uint32_t replica_flags;
 	uint32_t max_object_count;
 	uint32_t max_ndr_size;
-	uint32_t unknown4;
-	uint64_t h1;
-	uint32_t unique_ptr1;
-	uint32_t unique_ptr2;
+	enum drsuapi_DsExtendedOperation extended_op;
+	uint64_t fsmo_info;
+	struct drsuapi_DsPartialAttributeSet *partial_attribute_set;/* [unique] */
+	struct drsuapi_DsPartialAttributeSet *partial_attribute_set_ex;/* [unique] */
 	struct drsuapi_DsReplicaOIDMapping_Ctr mapping_ctr;
 };
 
@@ -361,10 +436,10 @@ struct drsuapi_DsReplicaCursor2 {
 }/* [public] */;
 
 struct drsuapi_DsReplicaCursor2CtrEx {
-	uint32_t u1;
-	uint32_t u2;
+	uint32_t version;/* [value(2)] */
+	uint32_t reserved1;/* [value(0)] */
 	uint32_t count;/* [range(0,0x100000)] */
-	uint32_t u3;
+	uint32_t reserved2;/* [value(0)] */
 	struct drsuapi_DsReplicaCursor2 *cursors;/* [size_is(count)] */
 };
 
@@ -408,9 +483,14 @@ struct drsuapi_DsReplicaAttributeCtr {
 	struct drsuapi_DsReplicaAttribute *attributes;/* [unique,size_is(num_attributes)] */
 };
 
+/* bitmap drsuapi_DsReplicaObjectFlags */
+#define DRSUAPI_DS_REPLICA_OBJECT_FROM_MASTER ( 0x00000001 )
+#define DRSUAPI_DS_REPLICA_OBJECT_DYNAMIC ( 0x00000002 )
+#define DRSUAPI_DS_REPLICA_OBJECT_REMOTE_MODIFY ( 0x00010000 )
+
 struct drsuapi_DsReplicaObject {
 	struct drsuapi_DsReplicaObjectIdentifier *identifier;/* [unique] */
-	uint32_t unknown1;
+	uint32_t flags;
 	struct drsuapi_DsReplicaAttributeCtr attribute_ctr;
 }/* [public] */;
 
@@ -429,7 +509,7 @@ struct drsuapi_DsReplicaMetaDataCtr {
 struct drsuapi_DsReplicaObjectListItemEx {
 	struct drsuapi_DsReplicaObjectListItemEx *next_object;/* [unique] */
 	struct drsuapi_DsReplicaObject object;
-	uint32_t unknown1;
+	uint32_t is_nc_prefix;
 	struct GUID *parent_object_guid;/* [unique] */
 	struct drsuapi_DsReplicaMetaDataCtr *meta_data_ctr;/* [unique] */
 }/* [noprint,public] */;
@@ -442,11 +522,11 @@ struct drsuapi_DsGetNCChangesCtr1 {
 	struct drsuapi_DsReplicaHighWaterMark new_highwatermark;
 	struct drsuapi_DsReplicaCursorCtrEx *uptodateness_vector;/* [unique] */
 	struct drsuapi_DsReplicaOIDMapping_Ctr mapping_ctr;
-	uint32_t total_object_count;
+	enum drsuapi_DsExtendedError extended_ret;
 	uint32_t object_count;
 	uint32_t __ndr_size;/* [value(ndr_size_drsuapi_DsGetNCChangesCtr1(r,ndr->flags)+55)] */
 	struct drsuapi_DsReplicaObjectListItemEx *first_object;/* [unique] */
-	uint32_t unknown4;
+	uint32_t more_data;
 }/* [gensize,public] */;
 
 /* bitmap drsuapi_DsLinkedAttributeFlags */
@@ -469,16 +549,16 @@ struct drsuapi_DsGetNCChangesCtr6 {
 	struct drsuapi_DsReplicaHighWaterMark new_highwatermark;
 	struct drsuapi_DsReplicaCursor2CtrEx *uptodateness_vector;/* [unique] */
 	struct drsuapi_DsReplicaOIDMapping_Ctr mapping_ctr;
-	uint32_t total_object_count;
+	enum drsuapi_DsExtendedError extended_ret;
 	uint32_t object_count;
 	uint32_t __ndr_size;/* [value(ndr_size_drsuapi_DsGetNCChangesCtr6(r,ndr->flags)+55)] */
 	struct drsuapi_DsReplicaObjectListItemEx *first_object;/* [unique] */
-	uint32_t unknown4;
-	uint32_t unknown5;
-	uint32_t unknown6;
+	uint32_t more_data;
+	uint32_t nc_object_count;
+	uint32_t nc_linked_attributes_count;
 	uint32_t linked_attributes_count;/* [range(0,1048576)] */
 	struct drsuapi_DsReplicaLinkedAttribute *linked_attributes;/* [unique,size_is(linked_attributes_count)] */
-	uint32_t unknown7;
+	WERROR drs_error;
 }/* [gensize,public] */;
 
 struct drsuapi_DsGetNCChangesMSZIPCtr1 {
@@ -496,13 +576,13 @@ struct drsuapi_DsGetNCChangesMSZIPCtr6 {
 struct drsuapi_DsGetNCChangesXPRESSCtr1 {
 	uint32_t decompressed_length;
 	uint32_t compressed_length;
-	DATA_BLOB *decompressed;/* [unique,compression(NDR_COMPRESSION_XPRESS,compressed_length,decompressed_length),subcontext_size(compressed_length),subcontext(4),flag(LIBNDR_FLAG_REMAINING)] */
+	struct drsuapi_DsGetNCChangesCtr1 *ctr1;/* [unique,compression(NDR_COMPRESSION_XPRESS,compressed_length,decompressed_length),subcontext_size(compressed_length),subcontext(4)] */
 };
 
 struct drsuapi_DsGetNCChangesXPRESSCtr6 {
 	uint32_t decompressed_length;
 	uint32_t compressed_length;
-	DATA_BLOB *decompressed;/* [unique,compression(NDR_COMPRESSION_XPRESS,compressed_length,decompressed_length),subcontext_size(compressed_length),subcontext(4),flag(LIBNDR_FLAG_REMAINING)] */
+	struct drsuapi_DsGetNCChangesCtr6 *ctr6;/* [unique,compression(NDR_COMPRESSION_XPRESS,compressed_length,decompressed_length),subcontext_size(compressed_length),subcontext(4)] */
 };
 
 enum drsuapi_DsGetNCChangesCompressionType
diff --git a/source/librpc/gen_ndr/ndr_drsuapi.c b/source/librpc/gen_ndr/ndr_drsuapi.c
index 657055f..105ed84 100644
--- a/source/librpc/gen_ndr/ndr_drsuapi.c
+++ b/source/librpc/gen_ndr/ndr_drsuapi.c
@@ -692,10 +692,10 @@ static enum ndr_err_code ndr_push_drsuapi_DsReplicaCursorCtrEx(struct ndr_push *
 	if (ndr_flags & NDR_SCALARS) {
 		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
 		NDR_CHECK(ndr_push_align(ndr, 8));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->u1));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->u2));
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 1));
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
 		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->u3));
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
 		for (cntr_cursors_0 = 0; cntr_cursors_0 < r->count; cntr_cursors_0++) {
 			NDR_CHECK(ndr_push_drsuapi_DsReplicaCursor(ndr, NDR_SCALARS, &r->cursors[cntr_cursors_0]));
 		}
@@ -712,13 +712,13 @@ static enum ndr_err_code ndr_pull_drsuapi_DsReplicaCursorCtrEx(struct ndr_pull *
 	if (ndr_flags & NDR_SCALARS) {
 		NDR_CHECK(ndr_pull_array_size(ndr, &r->cursors));
 		NDR_CHECK(ndr_pull_align(ndr, 8));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->u1));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->u2));
+		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->version));
+		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->reserved1));
 		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->count));
 		if (r->count < 0 || r->count > 0x100000) {
 			return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
 		}
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->u3));
+		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->reserved2));
 		NDR_PULL_ALLOC_N(ndr, r->cursors, ndr_get_array_size(ndr, &r->cursors));
 		_mem_save_cursors_0 = NDR_PULL_GET_MEM_CTX(ndr);
 		NDR_PULL_SET_MEM_CTX(ndr, r->cursors, 0);
@@ -740,10 +740,10 @@ _PUBLIC_ void ndr_print_drsuapi_DsReplicaCursorCtrEx(struct ndr_print *ndr, cons
 	uint32_t cntr_cursors_0;
 	ndr_print_struct(ndr, name, "drsuapi_DsReplicaCursorCtrEx");
 	ndr->depth++;
-	ndr_print_uint32(ndr, "u1", r->u1);
-	ndr_print_uint32(ndr, "u2", r->u2);
+	ndr_print_uint32(ndr, "version", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?1:r->version);
+	ndr_print_uint32(ndr, "reserved1", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?0:r->reserved1);
 	ndr_print_uint32(ndr, "count", r->count);
-	ndr_print_uint32(ndr, "u3", r->u3);
+	ndr_print_uint32(ndr, "reserved2", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?0:r->reserved2);
 	ndr->print(ndr, "%s: ARRAY(%d)", "cursors", r->count);
 	ndr->depth++;
 	for (cntr_cursors_0=0;cntr_cursors_0<r->count;cntr_cursors_0++) {
@@ -793,6 +793,107 @@ _PUBLIC_ void ndr_print_drsuapi_DsReplicaNeighbourFlags(struct ndr_print *ndr, c
 	ndr->depth--;
 }
 
+static enum ndr_err_code ndr_push_drsuapi_DsExtendedOperation(struct ndr_push *ndr, int ndr_flags, enum drsuapi_DsExtendedOperation r)
+{
+	{
+		uint32_t _flags_save_ENUM = ndr->flags;
+		ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
+		ndr->flags = _flags_save_ENUM;
+	}
+	return NDR_ERR_SUCCESS;
+}
+
+static enum ndr_err_code ndr_pull_drsuapi_DsExtendedOperation(struct ndr_pull *ndr, int ndr_flags, enum drsuapi_DsExtendedOperation *r)
+{
+	uint32_t v;
+	{
+		uint32_t _flags_save_ENUM = ndr->flags;
+		ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
+		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
+		*r = v;
+		ndr->flags = _flags_save_ENUM;
+	}
+	return NDR_ERR_SUCCESS;
+}
+
+_PUBLIC_ void ndr_print_drsuapi_DsExtendedOperation(struct ndr_print *ndr, const char *name, enum drsuapi_DsExtendedOperation r)
+{
+	const char *val = NULL;
+
+	{
+		uint32_t _flags_save_ENUM = ndr->flags;
+		ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
+		switch (r) {
+			case DRSUAPI_EXOP_NONE: val = "DRSUAPI_EXOP_NONE"; break;
+			case DRSUAPI_EXOP_FSMO_REQ_ROLE: val = "DRSUAPI_EXOP_FSMO_REQ_ROLE"; break;
+			case DRSUAPI_EXOP_FSMO_RID_ALLOC: val = "DRSUAPI_EXOP_FSMO_RID_ALLOC"; break;
+			case DRSUAPI_EXOP_FSMO_RID_REQ_ROLE: val = "DRSUAPI_EXOP_FSMO_RID_REQ_ROLE"; break;
+			case DRSUAPI_EXOP_FSMO_REQ_PDC: val = "DRSUAPI_EXOP_FSMO_REQ_PDC"; break;
+			case DRSUAPI_EXOP_FSMO_ABANDON_ROLE: val = "DRSUAPI_EXOP_FSMO_ABANDON_ROLE"; break;
+			case DRSUAPI_EXOP_REPL_OBJ: val = "DRSUAPI_EXOP_REPL_OBJ"; break;
+			case DRSUAPI_EXOP_REPL_SECRET: val = "DRSUAPI_EXOP_REPL_SECRET"; break;
+		}
+		ndr_print_enum(ndr, name, "ENUM", val, r);
+		ndr->flags = _flags_save_ENUM;
+	}
+}
+
+static enum ndr_err_code ndr_push_drsuapi_DsExtendedError(struct ndr_push *ndr, int ndr_flags, enum drsuapi_DsExtendedError r)
+{
+	{
+		uint32_t _flags_save_ENUM = ndr->flags;
+		ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
+		ndr->flags = _flags_save_ENUM;
+	}
+	return NDR_ERR_SUCCESS;
+}
+
+static enum ndr_err_code ndr_pull_drsuapi_DsExtendedError(struct ndr_pull *ndr, int ndr_flags, enum drsuapi_DsExtendedError *r)
+{
+	uint32_t v;
+	{
+		uint32_t _flags_save_ENUM = ndr->flags;
+		ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
+		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
+		*r = v;
+		ndr->flags = _flags_save_ENUM;
+	}
+	return NDR_ERR_SUCCESS;
+}
+
+_PUBLIC_ void ndr_print_drsuapi_DsExtendedError(struct ndr_print *ndr, const char *name, enum drsuapi_DsExtendedError r)
+{
+	const char *val = NULL;
+
+	{
+		uint32_t _flags_save_ENUM = ndr->flags;
+		ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
+		switch (r) {
+			case DRSUAPI_EXOP_ERR_NONE: val = "DRSUAPI_EXOP_ERR_NONE"; break;
+			case DRSUAPI_EXOP_ERR_SUCCESS: val = "DRSUAPI_EXOP_ERR_SUCCESS"; break;
+			case DRSUAPI_EXOP_ERR_UNKNOWN_OP: val = "DRSUAPI_EXOP_ERR_UNKNOWN_OP"; break;
+			case DRSUAPI_EXOP_ERR_FSMO_NOT_OWNER: val = "DRSUAPI_EXOP_ERR_FSMO_NOT_OWNER"; break;
+			case DRSUAPI_EXOP_ERR_UPDATE_ERR: val = "DRSUAPI_EXOP_ERR_UPDATE_ERR"; break;
+			case DRSUAPI_EXOP_ERR_EXCEPTION: val = "DRSUAPI_EXOP_ERR_EXCEPTION"; break;
+			case DRSUAPI_EXOP_ERR_UNKNOWN_CALLER: val = "DRSUAPI_EXOP_ERR_UNKNOWN_CALLER"; break;
+			case DRSUAPI_EXOP_ERR_RID_ALLOC: val = "DRSUAPI_EXOP_ERR_RID_ALLOC"; break;
+			case DRSUAPI_EXOP_ERR_FSMO_OWNER_DELETED: val = "DRSUAPI_EXOP_ERR_FSMO_OWNER_DELETED"; break;
+			case DRSUAPI_EXOP_ERR_FMSO_PENDING_OP: val = "DRSUAPI_EXOP_ERR_FMSO_PENDING_OP"; break;
+			case DRSUAPI_EXOP_ERR_MISMATCH: val = "DRSUAPI_EXOP_ERR_MISMATCH"; break;
+			case DRSUAPI_EXOP_ERR_COULDNT_CONTACT: val = "DRSUAPI_EXOP_ERR_COULDNT_CONTACT"; break;
+			case DRSUAPI_EXOP_ERR_FSMO_REFUSING_ROLES: val = "DRSUAPI_EXOP_ERR_FSMO_REFUSING_ROLES"; break;
+			case DRSUAPI_EXOP_ERR_DIR_ERROR: val = "DRSUAPI_EXOP_ERR_DIR_ERROR"; break;
+			case DRSUAPI_EXOP_ERR_FSMO_MISSING_SETTINGS: val = "DRSUAPI_EXOP_ERR_FSMO_MISSING_SETTINGS"; break;
+			case DRSUAPI_EXOP_ERR_ACCESS_DENIED: val = "DRSUAPI_EXOP_ERR_ACCESS_DENIED"; break;
+			case DRSUAPI_EXOP_ERR_PARAM_ERROR: val = "DRSUAPI_EXOP_ERR_PARAM_ERROR"; break;
+		}
+		ndr_print_enum(ndr, name, "ENUM", val, r);
+		ndr->flags = _flags_save_ENUM;
+	}
+}
+
 static enum ndr_err_code ndr_push_drsuapi_DsGetNCChangesRequest5(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsGetNCChangesRequest5 *r)
 {
 	if (ndr_flags & NDR_SCALARS) {
@@ -808,8 +909,8 @@ static enum ndr_err_code ndr_push_drsuapi_DsGetNCChangesRequest5(struct ndr_push
 		NDR_CHECK(ndr_push_drsuapi_DsReplicaNeighbourFlags(ndr, NDR_SCALARS, r->replica_flags));
 		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->max_object_count));
 		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->max_ndr_size));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown4));
-		NDR_CHECK(ndr_push_hyper(ndr, NDR_SCALARS, r->h1));
+		NDR_CHECK(ndr_push_drsuapi_DsExtendedOperation(ndr, NDR_SCALARS, r->extended_op));
+		NDR_CHECK(ndr_push_hyper(ndr, NDR_SCALARS, r->fsmo_info));
 	}
 	if (ndr_flags & NDR_BUFFERS) {
 		NDR_CHECK(ndr_push_drsuapi_DsReplicaObjectIdentifier(ndr, NDR_SCALARS|NDR_BUFFERS, r->naming_context));
@@ -846,8 +947,8 @@ static enum ndr_err_code ndr_pull_drsuapi_DsGetNCChangesRequest5(struct ndr_pull
 		NDR_CHECK(ndr_pull_drsuapi_DsReplicaNeighbourFlags(ndr, NDR_SCALARS, &r->replica_flags));
 		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->max_object_count));
 		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->max_ndr_size));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown4));
-		NDR_CHECK(ndr_pull_hyper(ndr, NDR_SCALARS, &r->h1));
+		NDR_CHECK(ndr_pull_drsuapi_DsExtendedOperation(ndr, NDR_SCALARS, &r->extended_op));
+		NDR_CHECK(ndr_pull_hyper(ndr, NDR_SCALARS, &r->fsmo_info));
 	}
 	if (ndr_flags & NDR_BUFFERS) {
 		_mem_save_naming_context_0 = NDR_PULL_GET_MEM_CTX(ndr);
@@ -884,8 +985,8 @@ _PUBLIC_ void ndr_print_drsuapi_DsGetNCChangesRequest5(struct ndr_print *ndr, co
 	ndr_print_drsuapi_DsReplicaNeighbourFlags(ndr, "replica_flags", r->replica_flags);
 	ndr_print_uint32(ndr, "max_object_count", r->max_object_count);
 	ndr_print_uint32(ndr, "max_ndr_size", r->max_ndr_size);
-	ndr_print_uint32(ndr, "unknown4", r->unknown4);
-	ndr_print_hyper(ndr, "h1", r->h1);
+	ndr_print_drsuapi_DsExtendedOperation(ndr, "extended_op", r->extended_op);
+	ndr_print_hyper(ndr, "fsmo_info", r->fsmo_info);
 	ndr->depth--;
 }
 
@@ -1126,6 +1227,74 @@ _PUBLIC_ void ndr_print_drsuapi_DsAttributeId(struct ndr_print *ndr, const char
 	}
 }
 
+static enum ndr_err_code ndr_push_drsuapi_DsPartialAttributeSet(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsPartialAttributeSet *r)
+{
+	uint32_t cntr_attids_0;
+	if (ndr_flags & NDR_SCALARS) {
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_attids));
+		NDR_CHECK(ndr_push_align(ndr, 4));
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 1));
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_attids));
+		for (cntr_attids_0 = 0; cntr_attids_0 < r->num_attids; cntr_attids_0++) {
+			NDR_CHECK(ndr_push_drsuapi_DsAttributeId(ndr, NDR_SCALARS, r->attids[cntr_attids_0]));
+		}
+	}
+	if (ndr_flags & NDR_BUFFERS) {
+	}
+	return NDR_ERR_SUCCESS;
+}
+
+static enum ndr_err_code ndr_pull_drsuapi_DsPartialAttributeSet(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsPartialAttributeSet *r)
+{
+	uint32_t cntr_attids_0;
+	TALLOC_CTX *_mem_save_attids_0;
+	if (ndr_flags & NDR_SCALARS) {
+		NDR_CHECK(ndr_pull_array_size(ndr, &r->attids));
+		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->reserved1));
+		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->num_attids));
+		if (r->num_attids < 1 || r->num_attids > 0x100000) {
+			return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
+		}
+		NDR_PULL_ALLOC_N(ndr, r->attids, ndr_get_array_size(ndr, &r->attids));
+		_mem_save_attids_0 = NDR_PULL_GET_MEM_CTX(ndr);
+		NDR_PULL_SET_MEM_CTX(ndr, r->attids, 0);
+		for (cntr_attids_0 = 0; cntr_attids_0 < r->num_attids; cntr_attids_0++) {
+			NDR_CHECK(ndr_pull_drsuapi_DsAttributeId(ndr, NDR_SCALARS, &r->attids[cntr_attids_0]));
+		}
+		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_attids_0, 0);
+		if (r->attids) {
+			NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->attids, r->num_attids));
+		}
+	}
+	if (ndr_flags & NDR_BUFFERS) {
+	}
+	return NDR_ERR_SUCCESS;
+}
+
+_PUBLIC_ void ndr_print_drsuapi_DsPartialAttributeSet(struct ndr_print *ndr, const char *name, const struct drsuapi_DsPartialAttributeSet *r)
+{
+	uint32_t cntr_attids_0;
+	ndr_print_struct(ndr, name, "drsuapi_DsPartialAttributeSet");
+	ndr->depth++;
+	ndr_print_uint32(ndr, "version", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?1:r->version);
+	ndr_print_uint32(ndr, "reserved1", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?0:r->reserved1);
+	ndr_print_uint32(ndr, "num_attids", r->num_attids);
+	ndr->print(ndr, "%s: ARRAY(%d)", "attids", r->num_attids);
+	ndr->depth++;
+	for (cntr_attids_0=0;cntr_attids_0<r->num_attids;cntr_attids_0++) {
+		char *idx_0=NULL;
+		if (asprintf(&idx_0, "[%d]", cntr_attids_0) != -1) {


-- 
Samba Shared Repository


More information about the samba-cvs mailing list