[SCM] Samba Shared Repository - branch master updated

kamenim at samba.org kamenim at samba.org
Wed Mar 24 06:38:15 MDT 2010


The branch, master has been updated
       via  ef6976d... idl: drsuapi.idl - fix few more comments
       via  9ad8f80... idl: Regenerate DRSUAPI idl files
       via  aa572a4... s4/drs: Pretty print for drsuapi_SecBufferType
       via  842d756... s4/idl: DsAddEntry V3 request description
       via  db02ca6... s4/drs: Implement DsAddEntry V3 error handling
       via  6b3ff0d... s4/idl: Remove drsuapi_DsAddEntryExtraErrorBuffer - it is not used anymore
       via  3efad5a... s4/idl: Complete drsuapi_DsAddEntryErrorInfo description
       via  0663799... s4/idl: Add DsAddEntry Referral error definition
       via  61e80fe... s4/idl: Add DsAddEntry Name resolution error definition
       via  04f4ea6... s4/drs: Refactor error handling for DsAddEntry V3 replies
       via  fbaf3b3... s4/drs: pretty print for drsuapi_DsAddEntry_AttrErrListItem_V1
       via  98cbcf8... s4/idl: redefine drsuapi_DsAddEntryErrorInfo1
       via  00fce79... s4/drs: drsuapi_DsAddEntry_ErrData propagate structure def in source code
       via  7b43416... s4/idl: drsuapi_DsAddEntryError refactored
       via  427a1f3... s4/drs: DsAddEntry - extending error handling for V2 replies
       via  fbc1528... s4/idl: DsAddEntry - refactor DsAddEntryCtr2 structure
       via  58ddf31... s4/drs: drsuapi_DsAddEntryErrorInfoX changes propagated to source code
       via  4cdf462... s4/idl: Update drsuapi_DsAddEntryErrorInfoX definition
       via  818719f... s4/idl: DIRERR error codes definition
       via  05db936... s4/drs: DsAddEntry - Propagating unsigned switches to source code
       via  a4ed8dc... s4/idl: DsAddEntry - switch types should be unsigned
      from  fcad135... s4-smbtorture: add missing checks for WERROR results in RPC-SAMBA3 tests.

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


- Log -----------------------------------------------------------------
commit ef6976dad3234b57016f8dce3f1b8e93d3ddb521
Author: Kamen Mazdrashki <kamen.mazdrashki at postpath.com>
Date:   Wed Mar 17 03:27:05 2010 +0200

    idl: drsuapi.idl - fix few more comments

commit 9ad8f808f719af1b680013cc26c737730cb53adb
Author: Kamen Mazdrashki <kamen.mazdrashki at postpath.com>
Date:   Wed Mar 17 03:09:09 2010 +0200

    idl: Regenerate DRSUAPI idl files

commit aa572a43342c4bb16f5769a9272bef2c6193e58f
Author: Kamen Mazdrashki <kamen.mazdrashki at postpath.com>
Date:   Wed Mar 17 03:08:56 2010 +0200

    s4/drs: Pretty print for drsuapi_SecBufferType
    
    It is a type and mask combined in one DRS field so
    we have to make a custom ndr_print implementation for this type

commit 842d75613bd2efcefa8b01eafae9fa9e43a3aa45
Author: Kamen Mazdrashki <kamen.mazdrashki at postpath.com>
Date:   Wed Mar 17 03:07:01 2010 +0200

    s4/idl: DsAddEntry V3 request description

commit db02ca65a01f218cb5ea2282ad00936409f3cc54
Author: Kamen Mazdrashki <kamen.mazdrashki at postpath.com>
Date:   Mon Mar 15 13:57:41 2010 +0200

    s4/drs: Implement DsAddEntry V3 error handling

commit 6b3ff0de465605f8fe2409a91c7b7977efb413dc
Author: Kamen Mazdrashki <kamen.mazdrashki at postpath.com>
Date:   Wed Mar 17 01:20:31 2010 +0200

    s4/idl: Remove drsuapi_DsAddEntryExtraErrorBuffer - it is not used anymore

commit 3efad5a6d85ed5ee6db93d7a14e4541bf6bcbf16
Author: Kamen Mazdrashki <kamen.mazdrashki at postpath.com>
Date:   Tue Mar 16 21:58:22 2010 +0200

    s4/idl: Complete drsuapi_DsAddEntryErrorInfo description
    
    Members for Security, Service, Update and System errors renamed
    to be more descriptive.
    
    All those error types share same description.

commit 0663799275a88739d4813422b3f3f8960ef402f9
Author: Kamen Mazdrashki <kamen.mazdrashki at postpath.com>
Date:   Tue Mar 16 01:30:05 2010 +0200

    s4/idl: Add DsAddEntry Referral error definition

commit 61e80fe3eb58179f3ef33ac930b231824f3b15e1
Author: Kamen Mazdrashki <kamen.mazdrashki at postpath.com>
Date:   Sun Mar 14 16:07:49 2010 +0200

    s4/idl: Add DsAddEntry Name resolution error definition

commit 04f4ea6ae22f5821ccc80dab04dc2fa17c946f1f
Author: Kamen Mazdrashki <kamen.mazdrashki at postpath.com>
Date:   Fri Mar 12 17:05:58 2010 +0200

    s4/drs: Refactor error handling for DsAddEntry V3 replies
    
    Dumping for specific error classes are to be implemented properly
    in the near future.

commit fbaf3b3799f6c177eb7b2210b3417fb13b2b97e1
Author: Kamen Mazdrashki <kamen.mazdrashki at postpath.com>
Date:   Fri Mar 12 15:06:19 2010 +0200

    s4/drs: pretty print for drsuapi_DsAddEntry_AttrErrListItem_V1

commit 98cbcf809f9a5a5571316a9119c75655924f46f0
Author: Kamen Mazdrashki <kamen.mazdrashki at postpath.com>
Date:   Fri Mar 12 14:55:05 2010 +0200

    s4/idl: redefine drsuapi_DsAddEntryErrorInfo1
    
    This actually describes Attribute error during DsAddEntry execution.
    
    Structure is renamed to drsuapi_DsAddEntryErrorInfo_Attr.
    And structure to define Attribute error data are all
    prefixed with drsuapi_DsAddEntry_AttrErr

commit 00fce797e889eb7b9d8310e18d5264cad5403dd2
Author: Kamen Mazdrashki <kamen.mazdrashki at postpath.com>
Date:   Wed Mar 10 16:37:38 2010 +0200

    s4/drs: drsuapi_DsAddEntry_ErrData propagate structure def in source code

commit 7b4341637cdd9e4797303197e8c2e1e405ab20e1
Author: Kamen Mazdrashki <kamen.mazdrashki at postpath.com>
Date:   Fri Mar 12 14:30:05 2010 +0200

    s4/idl: drsuapi_DsAddEntryError refactored
    
    Structure description and name was changed to be aligned with
    WSPP definition.
    
    Ref: [MS-DRSR] 4.1.1.1.23

commit 427a1f3c6269105256f5d0b0cb642465e728314a
Author: Kamen Mazdrashki <kamen.mazdrashki at postpath.com>
Date:   Fri Mar 12 13:42:05 2010 +0200

    s4/drs: DsAddEntry - extending error handling for V2 replies
    
    After having more complete definition for DsAddEntryReply V2
    structure, we can now handle error state in more robust way,
    not just counting on number of objects returned.

commit fbc1528649b378c9fd004d092b89cb7db545fc61
Author: Kamen Mazdrashki <kamen.mazdrashki at postpath.com>
Date:   Tue Mar 9 02:59:34 2010 +0200

    s4/idl: DsAddEntry - refactor DsAddEntryCtr2 structure
    
    Reply structure definition was aligned with WSPP documentation
    Ref: [MS-DRSR], section 4.1.1.1.7

commit 58ddf31ad1aad26b4a1bff885c9e7a66a51cd3f6
Author: Kamen Mazdrashki <kamen.mazdrashki at postpath.com>
Date:   Mon Mar 8 03:52:14 2010 +0200

    s4/drs: drsuapi_DsAddEntryErrorInfoX changes propagated to source code

commit 4cdf4627a12751b821932e298450e80628f16158
Author: Kamen Mazdrashki <kamen.mazdrashki at postpath.com>
Date:   Mon Mar 8 03:51:37 2010 +0200

    s4/idl: Update drsuapi_DsAddEntryErrorInfoX definition
    
    drsuapi_DsAddEntryErrorInfoX is an extended error
    description used by most of the error infos returned
    by DsAddEntry RPC method.

commit 818719f7ba5b386bc0b191227d68c1a7ebc8843c
Author: Kamen Mazdrashki <kamen.mazdrashki at postpath.com>
Date:   Fri Mar 12 13:39:52 2010 +0200

    s4/idl: DIRERR error codes definition
    
    DIRERR codes specify class of error returned from
    DsAddEntry method call.
    
    Ref: [MS-DRSR], section 4.1.1.1.25

commit 05db9365b62289298984e3b30c7a74bfbbf07685
Author: Kamen Mazdrashki <kamen.mazdrashki at postpath.com>
Date:   Sun Mar 7 21:46:39 2010 +0200

    s4/drs: DsAddEntry - Propagating unsigned switches to source code

commit a4ed8dc1fd51ff0713679aea7e49e842f26fb0dd
Author: Kamen Mazdrashki <kamen.mazdrashki at postpath.com>
Date:   Sun Mar 7 21:36:22 2010 +0200

    s4/idl: DsAddEntry - switch types should be unsigned

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

Summary of changes:
 librpc/gen_ndr/cli_drsuapi.c          |    8 +-
 librpc/gen_ndr/cli_drsuapi.h          |    8 +-
 librpc/gen_ndr/drsuapi.h              |  216 ++++++--
 librpc/gen_ndr/ndr_drsuapi.c          | 1023 +++++++++++++++++++++++++++------
 librpc/gen_ndr/ndr_drsuapi.h          |   23 +-
 librpc/idl/drsuapi.idl                |  203 +++++--
 librpc/ndr/ndr_drsuapi.c              |   34 ++
 source4/libnet/libnet_become_dc.c     |  138 ++++-
 source4/rpc_server/drsuapi/addentry.c |    8 +-
 9 files changed, 1362 insertions(+), 299 deletions(-)


Changeset truncated at 500 lines:

diff --git a/librpc/gen_ndr/cli_drsuapi.c b/librpc/gen_ndr/cli_drsuapi.c
index 2ecf006..6460589 100644
--- a/librpc/gen_ndr/cli_drsuapi.c
+++ b/librpc/gen_ndr/cli_drsuapi.c
@@ -2609,9 +2609,9 @@ struct tevent_req *rpccli_drsuapi_DsAddEntry_send(TALLOC_CTX *mem_ctx,
 						  struct tevent_context *ev,
 						  struct rpc_pipe_client *cli,
 						  struct policy_handle *_bind_handle /* [in] [ref] */,
-						  int32_t _level /* [in]  */,
+						  uint32_t _level /* [in]  */,
 						  union drsuapi_DsAddEntryRequest *_req /* [in] [ref,switch_is(level)] */,
-						  int32_t *_level_out /* [out] [ref] */,
+						  uint32_t *_level_out /* [out] [ref] */,
 						  union drsuapi_DsAddEntryCtr *_ctr /* [out] [ref,switch_is(*level_out)] */)
 {
 	struct tevent_req *req;
@@ -2719,9 +2719,9 @@ NTSTATUS rpccli_drsuapi_DsAddEntry_recv(struct tevent_req *req,
 NTSTATUS rpccli_drsuapi_DsAddEntry(struct rpc_pipe_client *cli,
 				   TALLOC_CTX *mem_ctx,
 				   struct policy_handle *bind_handle /* [in] [ref] */,
-				   int32_t level /* [in]  */,
+				   uint32_t level /* [in]  */,
 				   union drsuapi_DsAddEntryRequest *req /* [in] [ref,switch_is(level)] */,
-				   int32_t *level_out /* [out] [ref] */,
+				   uint32_t *level_out /* [out] [ref] */,
 				   union drsuapi_DsAddEntryCtr *ctr /* [out] [ref,switch_is(*level_out)] */,
 				   WERROR *werror)
 {
diff --git a/librpc/gen_ndr/cli_drsuapi.h b/librpc/gen_ndr/cli_drsuapi.h
index 9c30ff0..7474b9e 100644
--- a/librpc/gen_ndr/cli_drsuapi.h
+++ b/librpc/gen_ndr/cli_drsuapi.h
@@ -266,9 +266,9 @@ struct tevent_req *rpccli_drsuapi_DsAddEntry_send(TALLOC_CTX *mem_ctx,
 						  struct tevent_context *ev,
 						  struct rpc_pipe_client *cli,
 						  struct policy_handle *_bind_handle /* [in] [ref] */,
-						  int32_t _level /* [in]  */,
+						  uint32_t _level /* [in]  */,
 						  union drsuapi_DsAddEntryRequest *_req /* [in] [ref,switch_is(level)] */,
-						  int32_t *_level_out /* [out] [ref] */,
+						  uint32_t *_level_out /* [out] [ref] */,
 						  union drsuapi_DsAddEntryCtr *_ctr /* [out] [ref,switch_is(*level_out)] */);
 NTSTATUS rpccli_drsuapi_DsAddEntry_recv(struct tevent_req *req,
 					TALLOC_CTX *mem_ctx,
@@ -276,9 +276,9 @@ NTSTATUS rpccli_drsuapi_DsAddEntry_recv(struct tevent_req *req,
 NTSTATUS rpccli_drsuapi_DsAddEntry(struct rpc_pipe_client *cli,
 				   TALLOC_CTX *mem_ctx,
 				   struct policy_handle *bind_handle /* [in] [ref] */,
-				   int32_t level /* [in]  */,
+				   uint32_t level /* [in]  */,
 				   union drsuapi_DsAddEntryRequest *req /* [in] [ref,switch_is(level)] */,
-				   int32_t *level_out /* [out] [ref] */,
+				   uint32_t *level_out /* [out] [ref] */,
 				   union drsuapi_DsAddEntryCtr *ctr /* [out] [ref,switch_is(*level_out)] */,
 				   WERROR *werror);
 struct tevent_req *rpccli_drsuapi_DsExecuteKCC_send(TALLOC_CTX *mem_ctx,
diff --git a/librpc/gen_ndr/drsuapi.h b/librpc/gen_ndr/drsuapi.h
index f542505..bc36705 100644
--- a/librpc/gen_ndr/drsuapi.h
+++ b/librpc/gen_ndr/drsuapi.h
@@ -6,6 +6,7 @@
 
 #include "librpc/gen_ndr/security.h"
 #include "librpc/gen_ndr/misc.h"
+#include "librpc/gen_ndr/lsa.h"
 #include "librpc/gen_ndr/samr.h"
 #ifndef _HEADER_drsuapi
 #define _HEADER_drsuapi
@@ -1102,57 +1103,201 @@ struct drsuapi_DsReplicaObjectListItem {
 	struct drsuapi_DsReplicaObject object;
 }/* [noprint,public] */;
 
+enum drsuapi_DsAddEntry_DirErr
+#ifndef USE_UINT_ENUMS
+ {
+	DRSUAPI_DIRERR_OK=(int)(0),
+	DRSUAPI_DIRERR_ATTRIBUTE=(int)(1),
+	DRSUAPI_DIRERR_NAME=(int)(2),
+	DRSUAPI_DIRERR_REFERRAL=(int)(3),
+	DRSUAPI_DIRERR_SECURITY=(int)(4),
+	DRSUAPI_DIRERR_SERVICE=(int)(5),
+	DRSUAPI_DIRERR_UPDATE=(int)(6),
+	DRSUAPI_DIRERR_SYSTEM=(int)(7)
+}
+#else
+ { __donnot_use_enum_drsuapi_DsAddEntry_DirErr=0x7FFFFFFF}
+#define DRSUAPI_DIRERR_OK ( 0 )
+#define DRSUAPI_DIRERR_ATTRIBUTE ( 1 )
+#define DRSUAPI_DIRERR_NAME ( 2 )
+#define DRSUAPI_DIRERR_REFERRAL ( 3 )
+#define DRSUAPI_DIRERR_SECURITY ( 4 )
+#define DRSUAPI_DIRERR_SERVICE ( 5 )
+#define DRSUAPI_DIRERR_UPDATE ( 6 )
+#define DRSUAPI_DIRERR_SYSTEM ( 7 )
+#endif
+;
+
 struct drsuapi_DsAddEntryRequest2 {
 	struct drsuapi_DsReplicaObjectListItem first_object;
 };
 
+enum drsuapi_SecBufferType
+#ifndef USE_UINT_ENUMS
+ {
+	DRSUAPI_SECBUFFER_EMPTY=(int)(0x00000000),
+	DRSUAPI_SECBUFFER_DATA=(int)(0x00000001),
+	DRSUAPI_SECBUFFER_TOKEN=(int)(0x00000002),
+	DRSUAPI_SECBUFFER_PKG_PARAMS=(int)(0x00000003),
+	DRSUAPI_SECBUFFER_MISSING=(int)(0x00000004),
+	DRSUAPI_SECBUFFER_EXTRA=(int)(0x00000005),
+	DRSUAPI_SECBUFFER_STREAM_TRAILER=(int)(0x00000006),
+	DRSUAPI_SECBUFFER_STREAM_HEADER=(int)(0x00000007),
+	DRSUAPI_SECBUFFER_READONLY=(int)(0x80000000)
+}
+#else
+ { __donnot_use_enum_drsuapi_SecBufferType=0x7FFFFFFF}
+#define DRSUAPI_SECBUFFER_EMPTY ( 0x00000000 )
+#define DRSUAPI_SECBUFFER_DATA ( 0x00000001 )
+#define DRSUAPI_SECBUFFER_TOKEN ( 0x00000002 )
+#define DRSUAPI_SECBUFFER_PKG_PARAMS ( 0x00000003 )
+#define DRSUAPI_SECBUFFER_MISSING ( 0x00000004 )
+#define DRSUAPI_SECBUFFER_EXTRA ( 0x00000005 )
+#define DRSUAPI_SECBUFFER_STREAM_TRAILER ( 0x00000006 )
+#define DRSUAPI_SECBUFFER_STREAM_HEADER ( 0x00000007 )
+#define DRSUAPI_SECBUFFER_READONLY ( 0x80000000 )
+#endif
+;
+
+struct drsuapi_SecBuffer {
+	uint32_t buf_size;/* [range(0,10000)] */
+	enum drsuapi_SecBufferType buf_type;
+	uint8_t *buffer;/* [unique,size_is(buf_size)] */
+};
+
+struct drsuapi_SecBufferDesc {
+	uint32_t version;/* [value(0)] */
+	uint32_t buff_count;/* [range(0,10000)] */
+	struct drsuapi_SecBuffer *buffers;/* [unique,size_is(buff_count)] */
+};
+
+struct drsuapi_DsAddEntryRequest3 {
+	struct drsuapi_DsReplicaObjectListItem first_object;
+	struct drsuapi_SecBufferDesc *client_creds;/* [unique] */
+};
+
 union drsuapi_DsAddEntryRequest {
 	struct drsuapi_DsAddEntryRequest2 req2;/* [case(2)] */
-}/* [switch_type(int32)] */;
+	struct drsuapi_DsAddEntryRequest3 req3;/* [case(3)] */
+}/* [switch_type(uint32)] */;
 
 struct drsuapi_DsAddEntryErrorInfoX {
-	uint32_t unknown1;
-	WERROR status;
-	uint32_t unknown2;
-	uint16_t unknown3;
+	uint32_t dsid;
+	WERROR extended_err;
+	uint32_t extended_data;
+	uint16_t problem;
 };
 
-struct drsuapi_DsAddEntryExtraErrorBuffer {
-	uint32_t size;/* [range(0,10485760)] */
-	uint8_t *data;/* [unique,size_is(size)] */
+struct drsuapi_DsAddEntry_AttrErr_V1 {
+	uint32_t dsid;
+	WERROR extended_err;
+	uint32_t extended_data;
+	uint16_t problem;
+	enum drsuapi_DsAttributeId attid;
+	uint32_t is_val_returned;
+	struct drsuapi_DsAttributeValue attr_val;
 };
 
-struct drsuapi_DsAddEntryExtraError1 {
-	struct drsuapi_DsAddEntryErrorInfoX error;
-	enum drsuapi_DsAttributeId attid;
-	uint32_t unknown2;
-	struct drsuapi_DsAddEntryExtraErrorBuffer buffer;
+struct drsuapi_DsAddEntry_AttrErrListItem_V1 {
+	struct drsuapi_DsAddEntry_AttrErrListItem_V1 *next;/* [unique] */
+	struct drsuapi_DsAddEntry_AttrErr_V1 err_data;
+}/* [noprint] */;
+
+struct drsuapi_DsAddEntryErrorInfo_Attr_V1 {
+	struct drsuapi_DsReplicaObjectIdentifier *id;/* [unique] */
+	uint32_t count;
+	struct drsuapi_DsAddEntry_AttrErrListItem_V1 first;
 };
 
-struct drsuapi_DsAddEntryErrorListItem1 {
-	struct drsuapi_DsAddEntryErrorListItem1 *next;/* [unique] */
-	struct drsuapi_DsAddEntryExtraError1 error;
+struct drsuapi_DsAddEntryErrorInfo_Name_V1 {
+	uint32_t dsid;
+	WERROR extended_err;
+	uint32_t extended_data;
+	uint16_t problem;
+	struct drsuapi_DsReplicaObjectIdentifier *id_matched;/* [unique] */
 };
 
-struct drsuapi_DsAddEntryErrorInfo1 {
-	struct drsuapi_DsReplicaObjectIdentifier *id;/* [unique] */
-	WERROR status;
-	struct drsuapi_DsAddEntryErrorListItem1 first;
+struct drsuapi_NameResOp_V1 {
+	uint8_t name_res;/* [value(83)] */
+	uint8_t unused_pad;/* [value(0)] */
+	uint16_t next_rdn;/* [value(0)] */
+};
+
+enum drsuapi_DsAddEntry_RefType
+#ifndef USE_UINT_ENUMS
+ {
+	DRSUAPI_CH_REFTYPE_SUPERIOR=(int)(0x0000),
+	DRSUAPI_CH_REFTYPE_SUBORDINATE=(int)(0x0001),
+	DRSUAPI_CH_REFTYPE_NSSR=(int)(0x0002),
+	DRSUAPI_CH_REFTYPE_CROSS=(int)(0x0003)
+}
+#else
+ { __donnot_use_enum_drsuapi_DsAddEntry_RefType=0x7FFFFFFF}
+#define DRSUAPI_CH_REFTYPE_SUPERIOR ( 0x0000 )
+#define DRSUAPI_CH_REFTYPE_SUBORDINATE ( 0x0001 )
+#define DRSUAPI_CH_REFTYPE_NSSR ( 0x0002 )
+#define DRSUAPI_CH_REFTYPE_CROSS ( 0x0003 )
+#endif
+;
+
+enum drsuapi_DsAddEntry_ChoiceType
+#ifndef USE_UINT_ENUMS
+ {
+	DRSUAPI_SE_CHOICE_BASE_ONLY=(int)(0x00),
+	DRSUAPI_SE_CHOICE_IMMED_CHLDRN=(int)(0x01),
+	DRSUAPI_SE_CHOICE_WHOLE_SUBTREE=(int)(0x02)
+}
+#else
+ { __donnot_use_enum_drsuapi_DsAddEntry_ChoiceType=0x7FFFFFFF}
+#define DRSUAPI_SE_CHOICE_BASE_ONLY ( 0x00 )
+#define DRSUAPI_SE_CHOICE_IMMED_CHLDRN ( 0x01 )
+#define DRSUAPI_SE_CHOICE_WHOLE_SUBTREE ( 0x02 )
+#endif
+;
+
+struct drsuapi_DsaAddressListItem_V1 {
+	struct drsuapi_DsaAddressListItem_V1 *next;/* [unique] */
+	struct lsa_String *address;/* [unique] */
+};
+
+struct drsuapi_DsAddEntry_RefErrListItem_V1 {
+	struct drsuapi_DsReplicaObjectIdentifier *id_target;/* [unique] */
+	struct drsuapi_NameResOp_V1 op_state;
+	uint16_t rdn_alias;/* [value(0)] */
+	uint16_t rdn_internal;/* [value(0)] */
+	enum drsuapi_DsAddEntry_RefType ref_type;
+	uint16_t addr_list_count;
+	struct drsuapi_DsaAddressListItem_V1 *addr_list;/* [unique] */
+	struct drsuapi_DsAddEntry_RefErrListItem_V1 *next;/* [unique] */
+	uint32_t is_choice_set;
+	enum drsuapi_DsAddEntry_ChoiceType choice;
+};
+
+struct drsuapi_DsAddEntryErrorInfo_Referr_V1 {
+	uint32_t dsid;
+	WERROR extended_err;
+	uint32_t extended_data;
+	struct drsuapi_DsAddEntry_RefErrListItem_V1 refer;
 };
 
 union drsuapi_DsAddEntryErrorInfo {
-	struct drsuapi_DsAddEntryErrorInfo1 error1;/* [case] */
-	struct drsuapi_DsAddEntryErrorInfoX errorX;/* [case(4)] */
+	struct drsuapi_DsAddEntryErrorInfo_Attr_V1 attr_err;/* [case] */
+	struct drsuapi_DsAddEntryErrorInfo_Name_V1 name_err;/* [case(2)] */
+	struct drsuapi_DsAddEntryErrorInfo_Referr_V1 referral_err;/* [case(3)] */
+	struct drsuapi_DsAddEntryErrorInfoX security_err;/* [case(4)] */
+	struct drsuapi_DsAddEntryErrorInfoX service_err;/* [case(5)] */
+	struct drsuapi_DsAddEntryErrorInfoX update_err;/* [case(6)] */
+	struct drsuapi_DsAddEntryErrorInfoX system_err;/* [case(7)] */
 }/* [switch_type(uint32)] */;
 
-struct drsuapi_DsAddEntryError1 {
+struct drsuapi_DsAddEntry_ErrData_V1 {
 	WERROR status;
-	uint32_t level;
-	union drsuapi_DsAddEntryErrorInfo *info;/* [unique,switch_is(level)] */
+	enum drsuapi_DsAddEntry_DirErr dir_err;
+	union drsuapi_DsAddEntryErrorInfo *info;/* [unique,switch_is(dir_err)] */
 };
 
-union drsuapi_DsAddEntryError {
-	struct drsuapi_DsAddEntryError1 info1;/* [case] */
+union drsuapi_DsAddEntry_ErrData {
+	struct drsuapi_DsAddEntry_ErrData_V1 v1;/* [case] */
 }/* [switch_type(uint32)] */;
 
 struct drsuapi_DsReplicaObjectIdentifier2 {
@@ -1162,16 +1307,19 @@ struct drsuapi_DsReplicaObjectIdentifier2 {
 
 struct drsuapi_DsAddEntryCtr2 {
 	struct drsuapi_DsReplicaObjectIdentifier *id;/* [unique] */
-	uint32_t unknown1;
-	struct drsuapi_DsAddEntryErrorInfoX error;
+	enum drsuapi_DsAddEntry_DirErr dir_err;
+	uint32_t dsid;
+	WERROR extended_err;
+	uint32_t extended_data;
+	uint16_t problem;
 	uint32_t count;/* [range(0,10000)] */
 	struct drsuapi_DsReplicaObjectIdentifier2 *objects;/* [unique,size_is(count)] */
 };
 
 struct drsuapi_DsAddEntryCtr3 {
 	struct drsuapi_DsReplicaObjectIdentifier *id;/* [unique] */
-	uint32_t level;
-	union drsuapi_DsAddEntryError *error;/* [unique,switch_is(level)] */
+	uint32_t err_ver;
+	union drsuapi_DsAddEntry_ErrData *err_data;/* [unique,switch_is(err_ver)] */
 	uint32_t count;/* [range(0,10000)] */
 	struct drsuapi_DsReplicaObjectIdentifier2 *objects;/* [unique,size_is(count)] */
 };
@@ -1179,7 +1327,7 @@ struct drsuapi_DsAddEntryCtr3 {
 union drsuapi_DsAddEntryCtr {
 	struct drsuapi_DsAddEntryCtr2 ctr2;/* [case(2)] */
 	struct drsuapi_DsAddEntryCtr3 ctr3;/* [case(3)] */
-}/* [switch_type(int32)] */;
+}/* [switch_type(uint32)] */;
 
 /* bitmap drsuapi_DsExecuteKCCFlags */
 #define DRSUAPI_DS_EXECUTE_KCC_ASYNCHRONOUS_OPERATION ( 0x00000001 )
@@ -1774,12 +1922,12 @@ struct drsuapi_DsGetDomainControllerInfo {
 struct drsuapi_DsAddEntry {
 	struct {
 		struct policy_handle *bind_handle;/* [ref] */
-		int32_t level;
+		uint32_t level;
 		union drsuapi_DsAddEntryRequest *req;/* [ref,switch_is(level)] */
 	} in;
 
 	struct {
-		int32_t *level_out;/* [ref] */
+		uint32_t *level_out;/* [ref] */
 		union drsuapi_DsAddEntryCtr *ctr;/* [ref,switch_is(*level_out)] */
 		WERROR result;
 	} out;
diff --git a/librpc/gen_ndr/ndr_drsuapi.c b/librpc/gen_ndr/ndr_drsuapi.c
index 2400766..d233afe 100644
--- a/librpc/gen_ndr/ndr_drsuapi.c
+++ b/librpc/gen_ndr/ndr_drsuapi.c
@@ -5,6 +5,7 @@
 
 #include "librpc/gen_ndr/ndr_security.h"
 #include "librpc/gen_ndr/ndr_misc.h"
+#include "librpc/gen_ndr/ndr_lsa.h"
 #include "librpc/gen_ndr/ndr_samr.h"
 #include "librpc/ndr/ndr_compression.h"
 _PUBLIC_ enum ndr_err_code ndr_push_drsuapi_DrsOptions(struct ndr_push *ndr, int ndr_flags, uint32_t r)
@@ -8311,6 +8312,37 @@ _PUBLIC_ enum ndr_err_code ndr_pull_drsuapi_DsReplicaObjectListItem(struct ndr_p
 	return NDR_ERR_SUCCESS;
 }
 
+static enum ndr_err_code ndr_push_drsuapi_DsAddEntry_DirErr(struct ndr_push *ndr, int ndr_flags, enum drsuapi_DsAddEntry_DirErr r)
+{
+	NDR_CHECK(ndr_push_enum_uint32(ndr, NDR_SCALARS, r));
+	return NDR_ERR_SUCCESS;
+}
+
+static enum ndr_err_code ndr_pull_drsuapi_DsAddEntry_DirErr(struct ndr_pull *ndr, int ndr_flags, enum drsuapi_DsAddEntry_DirErr *r)
+{
+	uint32_t v;
+	NDR_CHECK(ndr_pull_enum_uint32(ndr, NDR_SCALARS, &v));
+	*r = v;
+	return NDR_ERR_SUCCESS;
+}
+
+_PUBLIC_ void ndr_print_drsuapi_DsAddEntry_DirErr(struct ndr_print *ndr, const char *name, enum drsuapi_DsAddEntry_DirErr r)
+{
+	const char *val = NULL;
+
+	switch (r) {
+		case DRSUAPI_DIRERR_OK: val = "DRSUAPI_DIRERR_OK"; break;
+		case DRSUAPI_DIRERR_ATTRIBUTE: val = "DRSUAPI_DIRERR_ATTRIBUTE"; break;
+		case DRSUAPI_DIRERR_NAME: val = "DRSUAPI_DIRERR_NAME"; break;
+		case DRSUAPI_DIRERR_REFERRAL: val = "DRSUAPI_DIRERR_REFERRAL"; break;
+		case DRSUAPI_DIRERR_SECURITY: val = "DRSUAPI_DIRERR_SECURITY"; break;
+		case DRSUAPI_DIRERR_SERVICE: val = "DRSUAPI_DIRERR_SERVICE"; break;
+		case DRSUAPI_DIRERR_UPDATE: val = "DRSUAPI_DIRERR_UPDATE"; break;
+		case DRSUAPI_DIRERR_SYSTEM: val = "DRSUAPI_DIRERR_SYSTEM"; break;
+	}
+	ndr_print_enum(ndr, name, "ENUM", val, r);
+}
+
 static enum ndr_err_code ndr_push_drsuapi_DsAddEntryRequest2(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsAddEntryRequest2 *r)
 {
 	if (ndr_flags & NDR_SCALARS) {
@@ -8345,17 +8377,255 @@ _PUBLIC_ void ndr_print_drsuapi_DsAddEntryRequest2(struct ndr_print *ndr, const
 	ndr->depth--;
 }
 
+static enum ndr_err_code ndr_push_drsuapi_SecBufferType(struct ndr_push *ndr, int ndr_flags, enum drsuapi_SecBufferType r)
+{
+	NDR_CHECK(ndr_push_enum_uint32(ndr, NDR_SCALARS, r));
+	return NDR_ERR_SUCCESS;
+}
+
+static enum ndr_err_code ndr_pull_drsuapi_SecBufferType(struct ndr_pull *ndr, int ndr_flags, enum drsuapi_SecBufferType *r)
+{
+	uint32_t v;
+	NDR_CHECK(ndr_pull_enum_uint32(ndr, NDR_SCALARS, &v));
+	*r = v;
+	return NDR_ERR_SUCCESS;
+}
+
+static enum ndr_err_code ndr_push_drsuapi_SecBuffer(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_SecBuffer *r)
+{
+	if (ndr_flags & NDR_SCALARS) {
+		NDR_CHECK(ndr_push_align(ndr, 5));
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->buf_size));
+		NDR_CHECK(ndr_push_drsuapi_SecBufferType(ndr, NDR_SCALARS, r->buf_type));
+		NDR_CHECK(ndr_push_unique_ptr(ndr, r->buffer));
+		NDR_CHECK(ndr_push_trailer_align(ndr, 5));
+	}
+	if (ndr_flags & NDR_BUFFERS) {
+		if (r->buffer) {
+			NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, r->buf_size));
+			NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->buffer, r->buf_size));
+		}
+	}
+	return NDR_ERR_SUCCESS;
+}
+
+static enum ndr_err_code ndr_pull_drsuapi_SecBuffer(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_SecBuffer *r)
+{
+	uint32_t _ptr_buffer;
+	TALLOC_CTX *_mem_save_buffer_0;
+	if (ndr_flags & NDR_SCALARS) {
+		NDR_CHECK(ndr_pull_align(ndr, 5));
+		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->buf_size));
+		if (r->buf_size > 10000) {
+			return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
+		}
+		NDR_CHECK(ndr_pull_drsuapi_SecBufferType(ndr, NDR_SCALARS, &r->buf_type));
+		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_buffer));
+		if (_ptr_buffer) {
+			NDR_PULL_ALLOC(ndr, r->buffer);
+		} else {
+			r->buffer = NULL;
+		}
+		NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
+	}
+	if (ndr_flags & NDR_BUFFERS) {
+		if (r->buffer) {
+			_mem_save_buffer_0 = NDR_PULL_GET_MEM_CTX(ndr);
+			NDR_PULL_SET_MEM_CTX(ndr, r->buffer, 0);
+			NDR_CHECK(ndr_pull_array_size(ndr, &r->buffer));
+			NDR_PULL_ALLOC_N(ndr, r->buffer, ndr_get_array_size(ndr, &r->buffer));
+			NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->buffer, ndr_get_array_size(ndr, &r->buffer)));
+			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_buffer_0, 0);
+		}
+		if (r->buffer) {
+			NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->buffer, r->buf_size));
+		}
+	}
+	return NDR_ERR_SUCCESS;
+}
+
+_PUBLIC_ void ndr_print_drsuapi_SecBuffer(struct ndr_print *ndr, const char *name, const struct drsuapi_SecBuffer *r)
+{
+	ndr_print_struct(ndr, name, "drsuapi_SecBuffer");
+	ndr->depth++;
+	ndr_print_uint32(ndr, "buf_size", r->buf_size);
+	ndr_print_drsuapi_SecBufferType(ndr, "buf_type", r->buf_type);
+	ndr_print_ptr(ndr, "buffer", r->buffer);
+	ndr->depth++;
+	if (r->buffer) {
+		ndr_print_array_uint8(ndr, "buffer", r->buffer, r->buf_size);
+	}
+	ndr->depth--;
+	ndr->depth--;
+}
+
+static enum ndr_err_code ndr_push_drsuapi_SecBufferDesc(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_SecBufferDesc *r)
+{
+	uint32_t cntr_buffers_1;
+	if (ndr_flags & NDR_SCALARS) {
+		NDR_CHECK(ndr_push_align(ndr, 5));
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->buff_count));
+		NDR_CHECK(ndr_push_unique_ptr(ndr, r->buffers));
+		NDR_CHECK(ndr_push_trailer_align(ndr, 5));
+	}
+	if (ndr_flags & NDR_BUFFERS) {
+		if (r->buffers) {
+			NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, r->buff_count));
+			for (cntr_buffers_1 = 0; cntr_buffers_1 < r->buff_count; cntr_buffers_1++) {
+				NDR_CHECK(ndr_push_drsuapi_SecBuffer(ndr, NDR_SCALARS, &r->buffers[cntr_buffers_1]));
+			}
+			for (cntr_buffers_1 = 0; cntr_buffers_1 < r->buff_count; cntr_buffers_1++) {
+				NDR_CHECK(ndr_push_drsuapi_SecBuffer(ndr, NDR_BUFFERS, &r->buffers[cntr_buffers_1]));
+			}


-- 
Samba Shared Repository


More information about the samba-cvs mailing list