drsuapi sync from samba...
authorStefan Metzmacher <metze@samba.org>
Sun, 20 Mar 2022 15:08:16 +0000 (16:08 +0100)
committerStefan Metzmacher <metze@samba.org>
Thu, 3 Nov 2022 10:32:44 +0000 (11:32 +0100)
epan/dissectors/packet-dcerpc-drsuapi.c
epan/dissectors/packet-dcerpc-drsuapi.h
epan/dissectors/pidl/drsuapi/drsuapi.cnf
epan/dissectors/pidl/drsuapi/drsuapi.idl

index f88ce8bf669208d352b406c234eec7a61b685d40..a229a69a79dbc5f6f9c9b745a2948b3825e3f6be 100644 (file)
@@ -41,6 +41,15 @@ static gint ett_drsuapi_drsuapi_DrsOptions = -1;
 static gint ett_drsuapi_drsuapi_DrsMoreOptions = -1;
 static gint ett_drsuapi_drsuapi_DrsUpdate = -1;
 static gint ett_drsuapi_drsuapi_VAR_SIZE_BUFFER_WITH_VERSION = -1;
+static gint ett_drsuapi_drsuapi_SupportedExtensions = -1;
+static gint ett_drsuapi_drsuapi_SupportedExtensionsExt = -1;
+static gint ett_drsuapi_drsuapi_DsBindInfo24 = -1;
+static gint ett_drsuapi_drsuapi_DsBindInfo28 = -1;
+static gint ett_drsuapi_drsuapi_DsBindInfo32 = -1;
+static gint ett_drsuapi_drsuapi_DsBindInfo48 = -1;
+static gint ett_drsuapi_drsuapi_DsBindInfo52 = -1;
+static gint ett_drsuapi_drsuapi_DsBindInfoFallBack = -1;
+static gint ett_drsuapi_drsuapi_DsBindInfo = -1;
 static gint ett_drsuapi_drsuapi_DsBindInfoCtr = -1;
 static gint ett_drsuapi_drsuapi_DsReplicaObjectIdentifier = -1;
 static gint ett_drsuapi_drsuapi_DsReplicaSyncRequest1 = -1;
@@ -183,11 +192,48 @@ static gint ett_drsuapi_drsuapi_QuerySitesByCostCtr1 = -1;
 static gint ett_drsuapi_drsuapi_QuerySitesByCostCtr = -1;
 static gint ett_drsuapi_drsuapi_QuerySitesByCostRequest1 = -1;
 static gint ett_drsuapi_drsuapi_QuerySitesByCostRequest = -1;
+static gint ett_drsuapi_drsuapi_InitDemotionRequest1 = -1;
+static gint ett_drsuapi_drsuapi_InitDemotionRequest = -1;
+static gint ett_drsuapi_drsuapi_InitDemotionCtr1 = -1;
+static gint ett_drsuapi_drsuapi_InitDemotionCtr = -1;
+static gint ett_drsuapi_drsuapi_ReplicaDemotionRequest1 = -1;
+static gint ett_drsuapi_drsuapi_ReplicaDemotionRequest = -1;
+static gint ett_drsuapi_drsuapi_ReplicaDemotionCtr1 = -1;
+static gint ett_drsuapi_drsuapi_ReplicaDemotionCtr = -1;
+static gint ett_drsuapi_drsuapi_FinishDemotionRequest1 = -1;
+static gint ett_drsuapi_drsuapi_FinishDemotionRequest = -1;
+static gint ett_drsuapi_drsuapi_FinishDemotionCtr1 = -1;
+static gint ett_drsuapi_drsuapi_FinishDemotionCtr = -1;
+static gint ett_drsuapi_drsuapi_AddCloneDCRequest1 = -1;
+static gint ett_drsuapi_drsuapi_AddCloneDCRequest = -1;
+static gint ett_drsuapi_drsuapi_AddCloneDCCtr1 = -1;
+static gint ett_drsuapi_drsuapi_AddCloneDCCtr = -1;
+static gint ett_drsuapi_drsuapi_WriteNgcKeyRequest1 = -1;
+static gint ett_drsuapi_drsuapi_WriteNgcKeyRequest = -1;
+static gint ett_drsuapi_drsuapi_WriteNgcKeyCtr1 = -1;
+static gint ett_drsuapi_drsuapi_WriteNgcKeyCtr = -1;
+static gint ett_drsuapi_drsuapi_ReadNgcKeyRequest1 = -1;
+static gint ett_drsuapi_drsuapi_ReadNgcKeyRequest = -1;
+static gint ett_drsuapi_drsuapi_ReadNgcKeyCtr1 = -1;
+static gint ett_drsuapi_drsuapi_ReadNgcKeyCtr = -1;
 
 
 /* Header field declarations */
 static gint hf_DsReplicaObjectIdentifier_dn = -1;
 static gint hf_drsuapi_String_name = -1;
+static gint hf_drsuapi_drsuapi_AddCloneDCCtr1_clone_dc_name = -1;
+static gint hf_drsuapi_drsuapi_AddCloneDCCtr1_new_dc_account_password = -1;
+static gint hf_drsuapi_drsuapi_AddCloneDCCtr1_password_length = -1;
+static gint hf_drsuapi_drsuapi_AddCloneDCCtr1_site = -1;
+static gint hf_drsuapi_drsuapi_AddCloneDCCtr_ctr1 = -1;
+static gint hf_drsuapi_drsuapi_AddCloneDCRequest1_clone_dc_name = -1;
+static gint hf_drsuapi_drsuapi_AddCloneDCRequest1_site = -1;
+static gint hf_drsuapi_drsuapi_AddCloneDCRequest_req1 = -1;
+static gint hf_drsuapi_drsuapi_AddCloneDC_bind_handle = -1;
+static gint hf_drsuapi_drsuapi_AddCloneDC_ctr = -1;
+static gint hf_drsuapi_drsuapi_AddCloneDC_in_version = -1;
+static gint hf_drsuapi_drsuapi_AddCloneDC_out_version = -1;
+static gint hf_drsuapi_drsuapi_AddCloneDC_req = -1;
 static gint hf_drsuapi_drsuapi_DrsMoreOptions_DRSUAPI_DRS_GET_TGT = -1;
 static gint hf_drsuapi_drsuapi_DrsOptions_DRSUAPI_DRS_ADD_REF = -1;
 static gint hf_drsuapi_drsuapi_DrsOptions_DRSUAPI_DRS_ASYNC_OP = -1;
@@ -306,8 +352,41 @@ static gint hf_drsuapi_drsuapi_DsAttributeValueCtr_num_values = -1;
 static gint hf_drsuapi_drsuapi_DsAttributeValueCtr_values = -1;
 static gint hf_drsuapi_drsuapi_DsAttributeValue___ndr_size = -1;
 static gint hf_drsuapi_drsuapi_DsAttributeValue_blob = -1;
-static gint hf_drsuapi_drsuapi_DsBindInfoCtr_data = -1;
+static gint hf_drsuapi_drsuapi_DsBindInfo24_pid = -1;
+static gint hf_drsuapi_drsuapi_DsBindInfo24_site_guid = -1;
+static gint hf_drsuapi_drsuapi_DsBindInfo24_supported_extensions = -1;
+static gint hf_drsuapi_drsuapi_DsBindInfo28_pid = -1;
+static gint hf_drsuapi_drsuapi_DsBindInfo28_repl_epoch = -1;
+static gint hf_drsuapi_drsuapi_DsBindInfo28_site_guid = -1;
+static gint hf_drsuapi_drsuapi_DsBindInfo28_supported_extensions = -1;
+static gint hf_drsuapi_drsuapi_DsBindInfo32_pid = -1;
+static gint hf_drsuapi_drsuapi_DsBindInfo32_repl_epoch = -1;
+static gint hf_drsuapi_drsuapi_DsBindInfo32_site_guid = -1;
+static gint hf_drsuapi_drsuapi_DsBindInfo32_supported_extensions = -1;
+static gint hf_drsuapi_drsuapi_DsBindInfo32_supported_extensions_ext = -1;
+static gint hf_drsuapi_drsuapi_DsBindInfo48_config_dn_guid = -1;
+static gint hf_drsuapi_drsuapi_DsBindInfo48_pid = -1;
+static gint hf_drsuapi_drsuapi_DsBindInfo48_repl_epoch = -1;
+static gint hf_drsuapi_drsuapi_DsBindInfo48_site_guid = -1;
+static gint hf_drsuapi_drsuapi_DsBindInfo48_supported_extensions = -1;
+static gint hf_drsuapi_drsuapi_DsBindInfo48_supported_extensions_ext = -1;
+static gint hf_drsuapi_drsuapi_DsBindInfo52_config_dn_guid = -1;
+static gint hf_drsuapi_drsuapi_DsBindInfo52_pid = -1;
+static gint hf_drsuapi_drsuapi_DsBindInfo52_repl_epoch = -1;
+static gint hf_drsuapi_drsuapi_DsBindInfo52_site_guid = -1;
+static gint hf_drsuapi_drsuapi_DsBindInfo52_supported_capabilities_ext = -1;
+static gint hf_drsuapi_drsuapi_DsBindInfo52_supported_extensions = -1;
+static gint hf_drsuapi_drsuapi_DsBindInfo52_supported_extensions_ext = -1;
+static gint hf_drsuapi_drsuapi_DsBindInfoCtr___ndr_length = -1;
+static gint hf_drsuapi_drsuapi_DsBindInfoCtr_info = -1;
 static gint hf_drsuapi_drsuapi_DsBindInfoCtr_length = -1;
+static gint hf_drsuapi_drsuapi_DsBindInfoFallBack_info = -1;
+static gint hf_drsuapi_drsuapi_DsBindInfo_Fallback = -1;
+static gint hf_drsuapi_drsuapi_DsBindInfo_info24 = -1;
+static gint hf_drsuapi_drsuapi_DsBindInfo_info28 = -1;
+static gint hf_drsuapi_drsuapi_DsBindInfo_info32 = -1;
+static gint hf_drsuapi_drsuapi_DsBindInfo_info48 = -1;
+static gint hf_drsuapi_drsuapi_DsBindInfo_info52 = -1;
 static gint hf_drsuapi_drsuapi_DsBind_bind_guid = -1;
 static gint hf_drsuapi_drsuapi_DsBind_bind_handle = -1;
 static gint hf_drsuapi_drsuapi_DsBind_bind_info = -1;
@@ -911,6 +990,28 @@ static gint hf_drsuapi_drsuapi_DsWriteAccountSpn_req = -1;
 static gint hf_drsuapi_drsuapi_DsWriteAccountSpn_res = -1;
 static gint hf_drsuapi_drsuapi_DsaAddressListItem_V1_address = -1;
 static gint hf_drsuapi_drsuapi_DsaAddressListItem_V1_next = -1;
+static gint hf_drsuapi_drsuapi_FinishDemotionCtr1_op_error = -1;
+static gint hf_drsuapi_drsuapi_FinishDemotionCtr1_op_failed = -1;
+static gint hf_drsuapi_drsuapi_FinishDemotionCtr1_operations_done = -1;
+static gint hf_drsuapi_drsuapi_FinishDemotionCtr_ctr1 = -1;
+static gint hf_drsuapi_drsuapi_FinishDemotionRequest1_operations = -1;
+static gint hf_drsuapi_drsuapi_FinishDemotionRequest1_script_base = -1;
+static gint hf_drsuapi_drsuapi_FinishDemotionRequest1_uuid_helper_dest = -1;
+static gint hf_drsuapi_drsuapi_FinishDemotionRequest_req1 = -1;
+static gint hf_drsuapi_drsuapi_FinishDemotion_bind_handle = -1;
+static gint hf_drsuapi_drsuapi_FinishDemotion_ctr = -1;
+static gint hf_drsuapi_drsuapi_FinishDemotion_in_version = -1;
+static gint hf_drsuapi_drsuapi_FinishDemotion_out_version = -1;
+static gint hf_drsuapi_drsuapi_FinishDemotion_req = -1;
+static gint hf_drsuapi_drsuapi_InitDemotionCtr1_op_error = -1;
+static gint hf_drsuapi_drsuapi_InitDemotionCtr_ctr1 = -1;
+static gint hf_drsuapi_drsuapi_InitDemotionRequest1_reserved = -1;
+static gint hf_drsuapi_drsuapi_InitDemotionRequest_req1 = -1;
+static gint hf_drsuapi_drsuapi_InitDemotion_bind_handle = -1;
+static gint hf_drsuapi_drsuapi_InitDemotion_ctr = -1;
+static gint hf_drsuapi_drsuapi_InitDemotion_in_version = -1;
+static gint hf_drsuapi_drsuapi_InitDemotion_out_version = -1;
+static gint hf_drsuapi_drsuapi_InitDemotion_req = -1;
 static gint hf_drsuapi_drsuapi_NameResOp_V1_name_res = -1;
 static gint hf_drsuapi_drsuapi_NameResOp_V1_next_rdn = -1;
 static gint hf_drsuapi_drsuapi_NameResOp_V1_unused_pad = -1;
@@ -928,16 +1029,88 @@ static gint hf_drsuapi_drsuapi_QuerySitesByCost_ctr = -1;
 static gint hf_drsuapi_drsuapi_QuerySitesByCost_level = -1;
 static gint hf_drsuapi_drsuapi_QuerySitesByCost_level_out = -1;
 static gint hf_drsuapi_drsuapi_QuerySitesByCost_req = -1;
+static gint hf_drsuapi_drsuapi_ReadNgcKeyCtr1_ngc_key = -1;
+static gint hf_drsuapi_drsuapi_ReadNgcKeyCtr1_ngc_key_size = -1;
+static gint hf_drsuapi_drsuapi_ReadNgcKeyCtr1_ret_val = -1;
+static gint hf_drsuapi_drsuapi_ReadNgcKeyCtr_ctr1 = -1;
+static gint hf_drsuapi_drsuapi_ReadNgcKeyRequest1_account = -1;
+static gint hf_drsuapi_drsuapi_ReadNgcKeyRequest_req1 = -1;
+static gint hf_drsuapi_drsuapi_ReadNgcKey_bind_handle = -1;
+static gint hf_drsuapi_drsuapi_ReadNgcKey_ctr = -1;
+static gint hf_drsuapi_drsuapi_ReadNgcKey_in_version = -1;
+static gint hf_drsuapi_drsuapi_ReadNgcKey_out_version = -1;
+static gint hf_drsuapi_drsuapi_ReadNgcKey_req = -1;
+static gint hf_drsuapi_drsuapi_ReplicaDemotionCtr1_op_error = -1;
+static gint hf_drsuapi_drsuapi_ReplicaDemotionCtr_ctr1 = -1;
+static gint hf_drsuapi_drsuapi_ReplicaDemotionRequest1_flags = -1;
+static gint hf_drsuapi_drsuapi_ReplicaDemotionRequest1_naming_context = -1;
+static gint hf_drsuapi_drsuapi_ReplicaDemotionRequest1_uuid_helper_dest = -1;
+static gint hf_drsuapi_drsuapi_ReplicaDemotionRequest_req1 = -1;
+static gint hf_drsuapi_drsuapi_ReplicaDemotion_bind_handle = -1;
+static gint hf_drsuapi_drsuapi_ReplicaDemotion_ctr = -1;
+static gint hf_drsuapi_drsuapi_ReplicaDemotion_in_version = -1;
+static gint hf_drsuapi_drsuapi_ReplicaDemotion_out_version = -1;
+static gint hf_drsuapi_drsuapi_ReplicaDemotion_req = -1;
 static gint hf_drsuapi_drsuapi_SecBufferDesc_buff_count = -1;
 static gint hf_drsuapi_drsuapi_SecBufferDesc_buffers = -1;
 static gint hf_drsuapi_drsuapi_SecBufferDesc_version = -1;
 static gint hf_drsuapi_drsuapi_SecBuffer_buf_size = -1;
 static gint hf_drsuapi_drsuapi_SecBuffer_buf_type = -1;
 static gint hf_drsuapi_drsuapi_SecBuffer_buffer = -1;
+static gint hf_drsuapi_drsuapi_SupportedExtensionsExt_DRSUAPI_SUPPORTED_EXTENSION_ADAM = -1;
+static gint hf_drsuapi_drsuapi_SupportedExtensionsExt_DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V9 = -1;
+static gint hf_drsuapi_drsuapi_SupportedExtensionsExt_DRSUAPI_SUPPORTED_EXTENSION_LH_BETA2 = -1;
+static gint hf_drsuapi_drsuapi_SupportedExtensionsExt_DRSUAPI_SUPPORTED_EXTENSION_RECYCLE_BIN = -1;
+static gint hf_drsuapi_drsuapi_SupportedExtensionsExt_DRSUAPI_SUPPORTED_EXTENSION_RPC_CORRELATIONID_1 = -1;
+static gint hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_ADDENTRY = -1;
+static gint hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_ADDENTRYREPLY_V3 = -1;
+static gint hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_ADDENTRY_V2 = -1;
+static gint hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_ADD_SID_HISTORY = -1;
+static gint hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_ASYNC_REPLICATION = -1;
+static gint hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_BASE = -1;
+static gint hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_CRYPTO_BIND = -1;
+static gint hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V01 = -1;
+static gint hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V1 = -1;
+static gint hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V2 = -1;
+static gint hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V5 = -1;
+static gint hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V6 = -1;
+static gint hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V7 = -1;
+static gint hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V10 = -1;
+static gint hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V5 = -1;
+static gint hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V6 = -1;
+static gint hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V8 = -1;
+static gint hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_GETCHG_COMPRESS = -1;
+static gint hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_GET_MEMBERSHIPS2 = -1;
+static gint hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_GET_REPL_INFO = -1;
+static gint hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_INSTANCE_TYPE_NOT_REQ_ON_MOD = -1;
+static gint hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_KCC_EXECUTE = -1;
+static gint hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_LINKED_VALUE_REPLICATION = -1;
+static gint hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_MOVEREQ_V2 = -1;
+static gint hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_NONDOMAIN_NCS = -1;
+static gint hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_POST_BETA3 = -1;
+static gint hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_REMOVEAPI = -1;
+static gint hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_RESERVED_PART2 = -1;
+static gint hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_RESERVED_PART3 = -1;
+static gint hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_RESTORE_USN_OPTIMIZATION = -1;
+static gint hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_STRONG_ENCRYPTION = -1;
+static gint hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_TRANSITIVE_MEMBERSHIP = -1;
+static gint hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_VERIFY_OBJECT = -1;
+static gint hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_XPRESS_COMPRESS = -1;
 static gint hf_drsuapi_drsuapi_VAR_SIZE_BUFFER_WITH_VERSION_buffer = -1;
 static gint hf_drsuapi_drsuapi_VAR_SIZE_BUFFER_WITH_VERSION_buffer_size = -1;
 static gint hf_drsuapi_drsuapi_VAR_SIZE_BUFFER_WITH_VERSION_padding = -1;
 static gint hf_drsuapi_drsuapi_VAR_SIZE_BUFFER_WITH_VERSION_version = -1;
+static gint hf_drsuapi_drsuapi_WriteNgcKeyCtr1_ret_val = -1;
+static gint hf_drsuapi_drsuapi_WriteNgcKeyCtr_ctr1 = -1;
+static gint hf_drsuapi_drsuapi_WriteNgcKeyRequest1_account = -1;
+static gint hf_drsuapi_drsuapi_WriteNgcKeyRequest1_ngc_key = -1;
+static gint hf_drsuapi_drsuapi_WriteNgcKeyRequest1_ngc_key_size = -1;
+static gint hf_drsuapi_drsuapi_WriteNgcKeyRequest_req1 = -1;
+static gint hf_drsuapi_drsuapi_WriteNgcKey_bind_handle = -1;
+static gint hf_drsuapi_drsuapi_WriteNgcKey_ctr = -1;
+static gint hf_drsuapi_drsuapi_WriteNgcKey_in_version = -1;
+static gint hf_drsuapi_drsuapi_WriteNgcKey_out_version = -1;
+static gint hf_drsuapi_drsuapi_WriteNgcKey_req = -1;
 static gint hf_drsuapi_lsa_String_length = -1;
 static gint hf_drsuapi_lsa_String_size = -1;
 static gint hf_drsuapi_lsa_String_string = -1;
@@ -1271,9 +1444,190 @@ static int drsuapi_dissect_element_VAR_SIZE_BUFFER_WITH_VERSION_buffer_size(tvbu
 static int drsuapi_dissect_element_VAR_SIZE_BUFFER_WITH_VERSION_padding(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
 static int drsuapi_dissect_element_VAR_SIZE_BUFFER_WITH_VERSION_buffer(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
 static int drsuapi_dissect_element_VAR_SIZE_BUFFER_WITH_VERSION_buffer_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
-static int drsuapi_dissect_element_DsBindInfoCtr_length(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
-static int drsuapi_dissect_element_DsBindInfoCtr_data(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
-static int drsuapi_dissect_element_DsBindInfoCtr_data_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static const true_false_string drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_BASE_tfs = {
+   "DRSUAPI_SUPPORTED_EXTENSION_BASE is SET",
+   "DRSUAPI_SUPPORTED_EXTENSION_BASE is NOT SET",
+};
+static const true_false_string drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_ASYNC_REPLICATION_tfs = {
+   "DRSUAPI_SUPPORTED_EXTENSION_ASYNC_REPLICATION is SET",
+   "DRSUAPI_SUPPORTED_EXTENSION_ASYNC_REPLICATION is NOT SET",
+};
+static const true_false_string drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_REMOVEAPI_tfs = {
+   "DRSUAPI_SUPPORTED_EXTENSION_REMOVEAPI is SET",
+   "DRSUAPI_SUPPORTED_EXTENSION_REMOVEAPI is NOT SET",
+};
+static const true_false_string drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_MOVEREQ_V2_tfs = {
+   "DRSUAPI_SUPPORTED_EXTENSION_MOVEREQ_V2 is SET",
+   "DRSUAPI_SUPPORTED_EXTENSION_MOVEREQ_V2 is NOT SET",
+};
+static const true_false_string drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_GETCHG_COMPRESS_tfs = {
+   "DRSUAPI_SUPPORTED_EXTENSION_GETCHG_COMPRESS is SET",
+   "DRSUAPI_SUPPORTED_EXTENSION_GETCHG_COMPRESS is NOT SET",
+};
+static const true_false_string drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V1_tfs = {
+   "DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V1 is SET",
+   "DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V1 is NOT SET",
+};
+static const true_false_string drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_RESTORE_USN_OPTIMIZATION_tfs = {
+   "DRSUAPI_SUPPORTED_EXTENSION_RESTORE_USN_OPTIMIZATION is SET",
+   "DRSUAPI_SUPPORTED_EXTENSION_RESTORE_USN_OPTIMIZATION is NOT SET",
+};
+static const true_false_string drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_ADDENTRY_tfs = {
+   "DRSUAPI_SUPPORTED_EXTENSION_ADDENTRY is SET",
+   "DRSUAPI_SUPPORTED_EXTENSION_ADDENTRY is NOT SET",
+};
+static const true_false_string drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_KCC_EXECUTE_tfs = {
+   "DRSUAPI_SUPPORTED_EXTENSION_KCC_EXECUTE is SET",
+   "DRSUAPI_SUPPORTED_EXTENSION_KCC_EXECUTE is NOT SET",
+};
+static const true_false_string drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_ADDENTRY_V2_tfs = {
+   "DRSUAPI_SUPPORTED_EXTENSION_ADDENTRY_V2 is SET",
+   "DRSUAPI_SUPPORTED_EXTENSION_ADDENTRY_V2 is NOT SET",
+};
+static const true_false_string drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_LINKED_VALUE_REPLICATION_tfs = {
+   "DRSUAPI_SUPPORTED_EXTENSION_LINKED_VALUE_REPLICATION is SET",
+   "DRSUAPI_SUPPORTED_EXTENSION_LINKED_VALUE_REPLICATION is NOT SET",
+};
+static const true_false_string drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V2_tfs = {
+   "DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V2 is SET",
+   "DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V2 is NOT SET",
+};
+static const true_false_string drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_INSTANCE_TYPE_NOT_REQ_ON_MOD_tfs = {
+   "DRSUAPI_SUPPORTED_EXTENSION_INSTANCE_TYPE_NOT_REQ_ON_MOD is SET",
+   "DRSUAPI_SUPPORTED_EXTENSION_INSTANCE_TYPE_NOT_REQ_ON_MOD is NOT SET",
+};
+static const true_false_string drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_CRYPTO_BIND_tfs = {
+   "DRSUAPI_SUPPORTED_EXTENSION_CRYPTO_BIND is SET",
+   "DRSUAPI_SUPPORTED_EXTENSION_CRYPTO_BIND is NOT SET",
+};
+static const true_false_string drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_GET_REPL_INFO_tfs = {
+   "DRSUAPI_SUPPORTED_EXTENSION_GET_REPL_INFO is SET",
+   "DRSUAPI_SUPPORTED_EXTENSION_GET_REPL_INFO is NOT SET",
+};
+static const true_false_string drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_STRONG_ENCRYPTION_tfs = {
+   "DRSUAPI_SUPPORTED_EXTENSION_STRONG_ENCRYPTION is SET",
+   "DRSUAPI_SUPPORTED_EXTENSION_STRONG_ENCRYPTION is NOT SET",
+};
+static const true_false_string drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V01_tfs = {
+   "DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V01 is SET",
+   "DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V01 is NOT SET",
+};
+static const true_false_string drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_TRANSITIVE_MEMBERSHIP_tfs = {
+   "DRSUAPI_SUPPORTED_EXTENSION_TRANSITIVE_MEMBERSHIP is SET",
+   "DRSUAPI_SUPPORTED_EXTENSION_TRANSITIVE_MEMBERSHIP is NOT SET",
+};
+static const true_false_string drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_ADD_SID_HISTORY_tfs = {
+   "DRSUAPI_SUPPORTED_EXTENSION_ADD_SID_HISTORY is SET",
+   "DRSUAPI_SUPPORTED_EXTENSION_ADD_SID_HISTORY is NOT SET",
+};
+static const true_false_string drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_POST_BETA3_tfs = {
+   "DRSUAPI_SUPPORTED_EXTENSION_POST_BETA3 is SET",
+   "DRSUAPI_SUPPORTED_EXTENSION_POST_BETA3 is NOT SET",
+};
+static const true_false_string drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V5_tfs = {
+   "DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V5 is SET",
+   "DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V5 is NOT SET",
+};
+static const true_false_string drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_GET_MEMBERSHIPS2_tfs = {
+   "DRSUAPI_SUPPORTED_EXTENSION_GET_MEMBERSHIPS2 is SET",
+   "DRSUAPI_SUPPORTED_EXTENSION_GET_MEMBERSHIPS2 is NOT SET",
+};
+static const true_false_string drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V6_tfs = {
+   "DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V6 is SET",
+   "DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V6 is NOT SET",
+};
+static const true_false_string drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_NONDOMAIN_NCS_tfs = {
+   "DRSUAPI_SUPPORTED_EXTENSION_NONDOMAIN_NCS is SET",
+   "DRSUAPI_SUPPORTED_EXTENSION_NONDOMAIN_NCS is NOT SET",
+};
+static const true_false_string drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V8_tfs = {
+   "DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V8 is SET",
+   "DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V8 is NOT SET",
+};
+static const true_false_string drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V5_tfs = {
+   "DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V5 is SET",
+   "DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V5 is NOT SET",
+};
+static const true_false_string drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V6_tfs = {
+   "DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V6 is SET",
+   "DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V6 is NOT SET",
+};
+static const true_false_string drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_ADDENTRYREPLY_V3_tfs = {
+   "DRSUAPI_SUPPORTED_EXTENSION_ADDENTRYREPLY_V3 is SET",
+   "DRSUAPI_SUPPORTED_EXTENSION_ADDENTRYREPLY_V3 is NOT SET",
+};
+static const true_false_string drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V7_tfs = {
+   "DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V7 is SET",
+   "DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V7 is NOT SET",
+};
+static const true_false_string drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_VERIFY_OBJECT_tfs = {
+   "DRSUAPI_SUPPORTED_EXTENSION_VERIFY_OBJECT is SET",
+   "DRSUAPI_SUPPORTED_EXTENSION_VERIFY_OBJECT is NOT SET",
+};
+static const true_false_string drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_XPRESS_COMPRESS_tfs = {
+   "DRSUAPI_SUPPORTED_EXTENSION_XPRESS_COMPRESS is SET",
+   "DRSUAPI_SUPPORTED_EXTENSION_XPRESS_COMPRESS is NOT SET",
+};
+static const true_false_string drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V10_tfs = {
+   "DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V10 is SET",
+   "DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V10 is NOT SET",
+};
+static const true_false_string drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_RESERVED_PART2_tfs = {
+   "DRSUAPI_SUPPORTED_EXTENSION_RESERVED_PART2 is SET",
+   "DRSUAPI_SUPPORTED_EXTENSION_RESERVED_PART2 is NOT SET",
+};
+static const true_false_string drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_RESERVED_PART3_tfs = {
+   "DRSUAPI_SUPPORTED_EXTENSION_RESERVED_PART3 is SET",
+   "DRSUAPI_SUPPORTED_EXTENSION_RESERVED_PART3 is NOT SET",
+};
+static const true_false_string drsuapi_SupportedExtensionsExt_DRSUAPI_SUPPORTED_EXTENSION_ADAM_tfs = {
+   "DRSUAPI_SUPPORTED_EXTENSION_ADAM is SET",
+   "DRSUAPI_SUPPORTED_EXTENSION_ADAM is NOT SET",
+};
+static const true_false_string drsuapi_SupportedExtensionsExt_DRSUAPI_SUPPORTED_EXTENSION_LH_BETA2_tfs = {
+   "DRSUAPI_SUPPORTED_EXTENSION_LH_BETA2 is SET",
+   "DRSUAPI_SUPPORTED_EXTENSION_LH_BETA2 is NOT SET",
+};
+static const true_false_string drsuapi_SupportedExtensionsExt_DRSUAPI_SUPPORTED_EXTENSION_RECYCLE_BIN_tfs = {
+   "DRSUAPI_SUPPORTED_EXTENSION_RECYCLE_BIN is SET",
+   "DRSUAPI_SUPPORTED_EXTENSION_RECYCLE_BIN is NOT SET",
+};
+static const true_false_string drsuapi_SupportedExtensionsExt_DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V9_tfs = {
+   "DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V9 is SET",
+   "DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V9 is NOT SET",
+};
+static const true_false_string drsuapi_SupportedExtensionsExt_DRSUAPI_SUPPORTED_EXTENSION_RPC_CORRELATIONID_1_tfs = {
+   "DRSUAPI_SUPPORTED_EXTENSION_RPC_CORRELATIONID_1 is SET",
+   "DRSUAPI_SUPPORTED_EXTENSION_RPC_CORRELATIONID_1 is NOT SET",
+};
+static int drsuapi_dissect_element_DsBindInfo24_supported_extensions(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_DsBindInfo24_site_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_DsBindInfo24_pid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_DsBindInfo28_supported_extensions(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_DsBindInfo28_site_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_DsBindInfo28_pid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_DsBindInfo28_repl_epoch(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_DsBindInfo32_supported_extensions(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_DsBindInfo32_site_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_DsBindInfo32_pid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_DsBindInfo32_repl_epoch(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_DsBindInfo32_supported_extensions_ext(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_DsBindInfo48_supported_extensions(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_DsBindInfo48_site_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_DsBindInfo48_pid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_DsBindInfo48_repl_epoch(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_DsBindInfo48_supported_extensions_ext(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_DsBindInfo48_config_dn_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_DsBindInfo52_supported_extensions(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_DsBindInfo52_site_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_DsBindInfo52_pid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_DsBindInfo52_repl_epoch(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_DsBindInfo52_supported_extensions_ext(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_DsBindInfo52_config_dn_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_DsBindInfo52_supported_capabilities_ext(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_DsBindInfoFallBack_info(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_DsBindInfoCtr___ndr_length(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_DsBindInfoCtr_info(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, guint3264 *length);
 static int drsuapi_dissect_element_DsReplicaObjectIdentifier___ndr_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
 static int drsuapi_dissect_element_DsReplicaObjectIdentifier___ndr_size_sid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
 static int drsuapi_dissect_element_DsReplicaObjectIdentifier_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
@@ -2439,6 +2793,58 @@ static int drsuapi_dissect_element_QuerySitesByCostRequest1_site_to__(tvbuff_t *
 static int drsuapi_dissect_element_QuerySitesByCostRequest1_site_to___(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
 static int drsuapi_dissect_element_QuerySitesByCostRequest1_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
 static int drsuapi_dissect_element_QuerySitesByCostRequest_req1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_InitDemotionRequest1_reserved(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_InitDemotionRequest_req1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_InitDemotionCtr1_op_error(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_InitDemotionCtr_ctr1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_ReplicaDemotionRequest1_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_ReplicaDemotionRequest1_uuid_helper_dest(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_ReplicaDemotionRequest1_naming_context(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_ReplicaDemotionRequest1_naming_context_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_ReplicaDemotionRequest_req1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_ReplicaDemotionCtr1_op_error(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_ReplicaDemotionCtr_ctr1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_FinishDemotionRequest1_operations(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_FinishDemotionRequest1_uuid_helper_dest(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_FinishDemotionRequest1_script_base(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_FinishDemotionRequest1_script_base_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_FinishDemotionRequest_req1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_FinishDemotionCtr1_operations_done(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_FinishDemotionCtr1_op_failed(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_FinishDemotionCtr1_op_error(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_FinishDemotionCtr_ctr1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_AddCloneDCRequest1_clone_dc_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_AddCloneDCRequest1_clone_dc_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_AddCloneDCRequest1_site(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_AddCloneDCRequest1_site_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_AddCloneDCRequest_req1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_AddCloneDCCtr1_clone_dc_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_AddCloneDCCtr1_clone_dc_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_AddCloneDCCtr1_site(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_AddCloneDCCtr1_site_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_AddCloneDCCtr1_password_length(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_AddCloneDCCtr1_new_dc_account_password(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_AddCloneDCCtr1_new_dc_account_password_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_AddCloneDCCtr1_new_dc_account_password__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_AddCloneDCCtr_ctr1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_WriteNgcKeyRequest1_account(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_WriteNgcKeyRequest1_account_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_WriteNgcKeyRequest1_ngc_key_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_WriteNgcKeyRequest1_ngc_key(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_WriteNgcKeyRequest1_ngc_key_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_WriteNgcKeyRequest1_ngc_key__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_WriteNgcKeyRequest_req1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_WriteNgcKeyCtr1_ret_val(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_WriteNgcKeyCtr_ctr1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_ReadNgcKeyRequest1_account(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_ReadNgcKeyRequest1_account_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_ReadNgcKeyRequest_req1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_ReadNgcKeyCtr1_ret_val(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_ReadNgcKeyCtr1_ngc_key_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_ReadNgcKeyCtr1_ngc_key(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_ReadNgcKeyCtr1_ngc_key_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_ReadNgcKeyCtr1_ngc_key__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_ReadNgcKeyCtr_ctr1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
 static int drsuapi_dissect_element_DsBind_bind_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
 static int drsuapi_dissect_element_DsBind_bind_guid_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
 static int drsuapi_dissect_element_DsBind_bind_info(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
@@ -2572,6 +2978,60 @@ static int drsuapi_dissect_element_QuerySitesByCost_level_out(tvbuff_t *tvb _U_,
 static int drsuapi_dissect_element_QuerySitesByCost_level_out_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
 static int drsuapi_dissect_element_QuerySitesByCost_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
 static int drsuapi_dissect_element_QuerySitesByCost_ctr_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_InitDemotion_bind_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_InitDemotion_bind_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_InitDemotion_in_version(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_InitDemotion_req(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_InitDemotion_req_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_InitDemotion_out_version(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_InitDemotion_out_version_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_InitDemotion_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_InitDemotion_ctr_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_ReplicaDemotion_bind_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_ReplicaDemotion_bind_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_ReplicaDemotion_in_version(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_ReplicaDemotion_req(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_ReplicaDemotion_req_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_ReplicaDemotion_out_version(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_ReplicaDemotion_out_version_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_ReplicaDemotion_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_ReplicaDemotion_ctr_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_FinishDemotion_bind_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_FinishDemotion_bind_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_FinishDemotion_in_version(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_FinishDemotion_req(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_FinishDemotion_req_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_FinishDemotion_out_version(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_FinishDemotion_out_version_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_FinishDemotion_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_FinishDemotion_ctr_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_AddCloneDC_bind_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_AddCloneDC_bind_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_AddCloneDC_in_version(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_AddCloneDC_req(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_AddCloneDC_req_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_AddCloneDC_out_version(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_AddCloneDC_out_version_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_AddCloneDC_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_AddCloneDC_ctr_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_WriteNgcKey_bind_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_WriteNgcKey_bind_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_WriteNgcKey_in_version(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_WriteNgcKey_req(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_WriteNgcKey_req_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_WriteNgcKey_out_version(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_WriteNgcKey_out_version_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_WriteNgcKey_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_WriteNgcKey_ctr_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_ReadNgcKey_bind_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_ReadNgcKey_bind_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_ReadNgcKey_in_version(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_ReadNgcKey_req(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_ReadNgcKey_req_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_ReadNgcKey_out_version(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_ReadNgcKey_out_version_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_ReadNgcKey_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int drsuapi_dissect_element_ReadNgcKey_ctr_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
   #include <wsutil/wsgcrypt.h>
   #include <epan/expert.h>
   #include <epan/strutil.h>
@@ -3474,6 +3934,76 @@ drsuapi_dissect_element_DsReplicaObjectIdentifier_dn(tvbuff_t *tvb _U_, int offs
        proto_item_append_text(tree, ": %s", data);
        return offset;
 }
+/* IDL: struct { */
+/* IDL:        [range(1,10000)] uint32 length; */
+/* IDL:        [size_is(length)] uint8 data[*]; */
+/* IDL: } */
+static int
+drsuapi_dissect_element_DsBindInfoCtr_length_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsBindInfoCtr_length, 0);
+       return offset;
+}
+static int
+drsuapi_dissect_DsBindInfo(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
+static int
+drsuapi_dissect_element_DsBindInfoCtr_data_(tvbuff_t *tvb, int offset, int length, packet_info *pinfo, proto_tree *tree, dcerpc_info *di, guint8 *drep)
+{
+       offset = drsuapi_dissect_DsBindInfo(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsBindInfoCtr_info, length);
+       return offset;
+}
+static int
+drsuapi_dissect_element_DsBindInfoCtr_data(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_ucarray_block(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsBindInfoCtr_data_);
+       return offset;
+}
+int
+drsuapi_dissect_struct_DsBindInfoCtr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+{
+       proto_item *item = NULL;
+       proto_tree *tree = NULL;
+       int old_offset;
+       ALIGN_TO_4_BYTES;
+       old_offset = offset;
+       if (parent_tree) {
+               item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsBindInfoCtr);
+       }
+       offset = drsuapi_dissect_element_DsBindInfoCtr_length_(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsBindInfoCtr_data(tvb, offset, pinfo, tree, di, drep);
+       proto_item_set_len(item, offset-old_offset);
+       if (di->call_data->flags & DCERPC_IS_NDR64) {
+               ALIGN_TO_4_BYTES;
+       }
+       return offset;
+}
+static int
+drsuapi_dissect_DsBindInfo(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+{
+       proto_item *item = NULL;
+       proto_tree *tree = NULL;
+       int old_offset;
+       guint32 length = param;
+       old_offset = offset;
+       if (parent_tree) {
+               tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_DsBindInfo, &item, "drsuapi_DsBindInfo");
+       }
+       if (length >= 52) {
+               drsuapi_dissect_struct_DsBindInfo52(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsBindInfo_info52,0);
+       } else if (length >= 48) {
+               drsuapi_dissect_struct_DsBindInfo48(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsBindInfo_info48,0);
+       } else if (length >= 32) {
+               drsuapi_dissect_struct_DsBindInfo32(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsBindInfo_info32,0);
+       } else if (length >= 28) {
+               drsuapi_dissect_struct_DsBindInfo28(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsBindInfo_info28,0);
+       } else if (length >= 24) {
+               drsuapi_dissect_struct_DsBindInfo24(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsBindInfo_info24,0);
+       }
+       offset += length;
+       proto_item_set_len(item, offset-old_offset);
+       return offset;
+}
 
 
 /* IDL: struct { */
@@ -4508,37 +5038,176 @@ drsuapi_dissect_struct_VAR_SIZE_BUFFER_WITH_VERSION(tvbuff_t *tvb _U_, int offse
 }
 
 
+/* IDL: bitmap { */
+/* IDL:        DRSUAPI_SUPPORTED_EXTENSION_BASE =  0x00000001 , */
+/* IDL:        DRSUAPI_SUPPORTED_EXTENSION_ASYNC_REPLICATION =  0x00000002 , */
+/* IDL:        DRSUAPI_SUPPORTED_EXTENSION_REMOVEAPI =  0x00000004 , */
+/* IDL:        DRSUAPI_SUPPORTED_EXTENSION_MOVEREQ_V2 =  0x00000008 , */
+/* IDL:        DRSUAPI_SUPPORTED_EXTENSION_GETCHG_COMPRESS =  0x00000010 , */
+/* IDL:        DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V1 =  0x00000020 , */
+/* IDL:        DRSUAPI_SUPPORTED_EXTENSION_RESTORE_USN_OPTIMIZATION =  0x00000040 , */
+/* IDL:        DRSUAPI_SUPPORTED_EXTENSION_ADDENTRY =  0x00000080 , */
+/* IDL:        DRSUAPI_SUPPORTED_EXTENSION_KCC_EXECUTE =  0x00000100 , */
+/* IDL:        DRSUAPI_SUPPORTED_EXTENSION_ADDENTRY_V2 =  0x00000200 , */
+/* IDL:        DRSUAPI_SUPPORTED_EXTENSION_LINKED_VALUE_REPLICATION =  0x00000400 , */
+/* IDL:        DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V2 =  0x00000800 , */
+/* IDL:        DRSUAPI_SUPPORTED_EXTENSION_INSTANCE_TYPE_NOT_REQ_ON_MOD =  0x00001000 , */
+/* IDL:        DRSUAPI_SUPPORTED_EXTENSION_CRYPTO_BIND =  0x00002000 , */
+/* IDL:        DRSUAPI_SUPPORTED_EXTENSION_GET_REPL_INFO =  0x00004000 , */
+/* IDL:        DRSUAPI_SUPPORTED_EXTENSION_STRONG_ENCRYPTION =  0x00008000 , */
+/* IDL:        DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V01 =  0x00010000 , */
+/* IDL:        DRSUAPI_SUPPORTED_EXTENSION_TRANSITIVE_MEMBERSHIP =  0x00020000 , */
+/* IDL:        DRSUAPI_SUPPORTED_EXTENSION_ADD_SID_HISTORY =  0x00040000 , */
+/* IDL:        DRSUAPI_SUPPORTED_EXTENSION_POST_BETA3 =  0x00080000 , */
+/* IDL:        DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V5 =  0x00100000 , */
+/* IDL:        DRSUAPI_SUPPORTED_EXTENSION_GET_MEMBERSHIPS2 =  0x00200000 , */
+/* IDL:        DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V6 =  0x00400000 , */
+/* IDL:        DRSUAPI_SUPPORTED_EXTENSION_NONDOMAIN_NCS =  0x00800000 , */
+/* IDL:        DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V8 =  0x01000000 , */
+/* IDL:        DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V5 =  0x02000000 , */
+/* IDL:        DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V6 =  0x04000000 , */
+/* IDL:        DRSUAPI_SUPPORTED_EXTENSION_ADDENTRYREPLY_V3 =  0x08000000 , */
+/* IDL:        DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V7 =  0x08000000 , */
+/* IDL:        DRSUAPI_SUPPORTED_EXTENSION_VERIFY_OBJECT =  0x08000000 , */
+/* IDL:        DRSUAPI_SUPPORTED_EXTENSION_XPRESS_COMPRESS =  0x10000000 , */
+/* IDL:        DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V10 =  0x20000000 , */
+/* IDL:        DRSUAPI_SUPPORTED_EXTENSION_RESERVED_PART2 =  0x40000000 , */
+/* IDL:        DRSUAPI_SUPPORTED_EXTENSION_RESERVED_PART3 =  0x80000000 , */
+/* IDL: } */
+
+int
+drsuapi_dissect_bitmap_SupportedExtensions(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+{
+       proto_item *item;
+       static int * const drsuapi_drsuapi_SupportedExtensions_fields[] = {
+               &hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_BASE,
+               &hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_ASYNC_REPLICATION,
+               &hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_REMOVEAPI,
+               &hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_MOVEREQ_V2,
+               &hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_GETCHG_COMPRESS,
+               &hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V1,
+               &hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_RESTORE_USN_OPTIMIZATION,
+               &hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_ADDENTRY,
+               &hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_KCC_EXECUTE,
+               &hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_ADDENTRY_V2,
+               &hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_LINKED_VALUE_REPLICATION,
+               &hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V2,
+               &hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_INSTANCE_TYPE_NOT_REQ_ON_MOD,
+               &hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_CRYPTO_BIND,
+               &hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_GET_REPL_INFO,
+               &hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_STRONG_ENCRYPTION,
+               &hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V01,
+               &hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_TRANSITIVE_MEMBERSHIP,
+               &hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_ADD_SID_HISTORY,
+               &hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_POST_BETA3,
+               &hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V5,
+               &hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_GET_MEMBERSHIPS2,
+               &hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V6,
+               &hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_NONDOMAIN_NCS,
+               &hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V8,
+               &hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V5,
+               &hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V6,
+               &hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_ADDENTRYREPLY_V3,
+               &hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V7,
+               &hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_VERIFY_OBJECT,
+               &hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_XPRESS_COMPRESS,
+               &hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V10,
+               &hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_RESERVED_PART2,
+               &hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_RESERVED_PART3,
+               NULL
+       };
+       guint32 flags;
+       ALIGN_TO_4_BYTES;
+
+       item = proto_tree_add_bitmask_with_flags(parent_tree, tvb, offset, hf_index,
+                               ett_drsuapi_drsuapi_SupportedExtensions, drsuapi_drsuapi_SupportedExtensions_fields, DREP_ENC_INTEGER(drep), BMT_NO_FALSE);
+
+       offset = dissect_ndr_uint32(tvb, offset, pinfo, parent_tree, di, drep, -1, &flags);
+
+       if (!flags)
+               proto_item_append_text(item, ": (No values set)");
+
+       if (flags & (~0x10fffffff)) {
+               flags &= (~0x10fffffff);
+               proto_item_append_text(item, "Unknown bitmap value 0x%x", flags);
+       }
+
+       return offset;
+}
+
+
+/* IDL: bitmap { */
+/* IDL:        DRSUAPI_SUPPORTED_EXTENSION_ADAM =  0x00000001 , */
+/* IDL:        DRSUAPI_SUPPORTED_EXTENSION_LH_BETA2 =  0x00000002 , */
+/* IDL:        DRSUAPI_SUPPORTED_EXTENSION_RECYCLE_BIN =  0x00000004 , */
+/* IDL:        DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V9 =  0x00000100 , */
+/* IDL:        DRSUAPI_SUPPORTED_EXTENSION_RPC_CORRELATIONID_1 =  0x00000400 , */
+/* IDL: } */
+
+int
+drsuapi_dissect_bitmap_SupportedExtensionsExt(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+{
+       proto_item *item;
+       static int * const drsuapi_drsuapi_SupportedExtensionsExt_fields[] = {
+               &hf_drsuapi_drsuapi_SupportedExtensionsExt_DRSUAPI_SUPPORTED_EXTENSION_ADAM,
+               &hf_drsuapi_drsuapi_SupportedExtensionsExt_DRSUAPI_SUPPORTED_EXTENSION_LH_BETA2,
+               &hf_drsuapi_drsuapi_SupportedExtensionsExt_DRSUAPI_SUPPORTED_EXTENSION_RECYCLE_BIN,
+               &hf_drsuapi_drsuapi_SupportedExtensionsExt_DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V9,
+               &hf_drsuapi_drsuapi_SupportedExtensionsExt_DRSUAPI_SUPPORTED_EXTENSION_RPC_CORRELATIONID_1,
+               NULL
+       };
+       guint32 flags;
+       ALIGN_TO_4_BYTES;
+
+       item = proto_tree_add_bitmask_with_flags(parent_tree, tvb, offset, hf_index,
+                               ett_drsuapi_drsuapi_SupportedExtensionsExt, drsuapi_drsuapi_SupportedExtensionsExt_fields, DREP_ENC_INTEGER(drep), BMT_NO_FALSE);
+
+       offset = dissect_ndr_uint32(tvb, offset, pinfo, parent_tree, di, drep, -1, &flags);
+
+       if (!flags)
+               proto_item_append_text(item, ": (No values set)");
+
+       if (flags & (~0x00000507)) {
+               flags &= (~0x00000507);
+               proto_item_append_text(item, "Unknown bitmap value 0x%x", flags);
+       }
+
+       return offset;
+}
+
+
 /* IDL: struct { */
-/* IDL:        [range(1,10000)] uint32 length; */
-/* IDL:        [size_is(length)] uint8 data[*]; */
+/* IDL:        drsuapi_SupportedExtensions supported_extensions; */
+/* IDL:        GUID site_guid; */
+/* IDL:        uint32 pid; */
 /* IDL: } */
 
 static int
-drsuapi_dissect_element_DsBindInfoCtr_length(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsBindInfo24_supported_extensions(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsBindInfoCtr_length, 0);
+       offset = drsuapi_dissect_bitmap_SupportedExtensions(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsBindInfo24_supported_extensions, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsBindInfoCtr_data(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsBindInfo24_site_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsBindInfoCtr_data_);
+       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsBindInfo24_site_guid, NULL);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsBindInfoCtr_data_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsBindInfo24_pid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsBindInfoCtr_data, 0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsBindInfo24_pid, 0);
 
        return offset;
 }
 
 int
-drsuapi_dissect_struct_DsBindInfoCtr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_struct_DsBindInfo24(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
        proto_item *item = NULL;
        proto_tree *tree = NULL;
@@ -4550,12 +5219,14 @@ drsuapi_dissect_struct_DsBindInfoCtr(tvbuff_t *tvb _U_, int offset _U_, packet_i
 
        if (parent_tree) {
                item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsBindInfoCtr);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsBindInfo24);
        }
 
-       offset = drsuapi_dissect_element_DsBindInfoCtr_length(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsBindInfo24_supported_extensions(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsBindInfoCtr_data(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsBindInfo24_site_guid(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsBindInfo24_pid(tvb, offset, pinfo, tree, di, drep);
 
 
        proto_item_set_len(item, offset-old_offset);
@@ -4570,48 +5241,46 @@ drsuapi_dissect_struct_DsBindInfoCtr(tvbuff_t *tvb _U_, int offset _U_, packet_i
 
 
 /* IDL: struct { */
-/* IDL:        [value(ndr_struct_size_drsuapi_DsReplicaObjectIdentifier(r,ndr->flags))] uint32 __ndr_size; */
-/* IDL:        [value(ndr_size_dom_sid28(&sid,ndr->flags))] uint32 __ndr_size_sid; */
-/* IDL:        GUID guid; */
-/* IDL:        dom_sid28 sid; */
-/* IDL:        [value(strlen_m(dn))] uint32 __ndr_size_dn; */
-/* IDL:        [charset(UTF16)] [size_is(__ndr_size_dn+1)] uint16 dn[*]; */
+/* IDL:        drsuapi_SupportedExtensions supported_extensions; */
+/* IDL:        GUID site_guid; */
+/* IDL:        uint32 pid; */
+/* IDL:        uint32 repl_epoch; */
 /* IDL: } */
 
 static int
-drsuapi_dissect_element_DsReplicaObjectIdentifier___ndr_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsBindInfo28_supported_extensions(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjectIdentifier___ndr_size, 0);
+       offset = drsuapi_dissect_bitmap_SupportedExtensions(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsBindInfo28_supported_extensions, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaObjectIdentifier___ndr_size_sid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsBindInfo28_site_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjectIdentifier___ndr_size_sid, 0);
+       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsBindInfo28_site_guid, NULL);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaObjectIdentifier_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsBindInfo28_pid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjectIdentifier_guid, NULL);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsBindInfo28_pid, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaObjectIdentifier___ndr_size_dn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsBindInfo28_repl_epoch(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjectIdentifier___ndr_size_dn, 0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsBindInfo28_repl_epoch, 0);
 
        return offset;
 }
 
 int
-drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_struct_DsBindInfo28(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
        proto_item *item = NULL;
        proto_tree *tree = NULL;
@@ -4623,20 +5292,16 @@ drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvbuff_t *tvb _U_, int offset _
 
        if (parent_tree) {
                item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaObjectIdentifier);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsBindInfo28);
        }
 
-       offset = drsuapi_dissect_element_DsReplicaObjectIdentifier___ndr_size(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsReplicaObjectIdentifier___ndr_size_sid(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsReplicaObjectIdentifier_guid(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsBindInfo28_supported_extensions(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaObjectIdentifier_sid(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsBindInfo28_site_guid(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaObjectIdentifier___ndr_size_dn(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsBindInfo28_pid(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaObjectIdentifier_dn(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsBindInfo28_repl_epoch(tvb, offset, pinfo, tree, di, drep);
 
 
        proto_item_set_len(item, offset-old_offset);
@@ -4651,93 +5316,85 @@ drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvbuff_t *tvb _U_, int offset _
 
 
 /* IDL: struct { */
-/* IDL:        [ref] drsuapi_DsReplicaObjectIdentifier *naming_context; */
-/* IDL:        GUID source_dsa_guid; */
-/* IDL:        [charset(DOS)] [unique(1)] uint8 *source_dsa_dns; */
-/* IDL:        drsuapi_DrsOptions options; */
+/* IDL:        drsuapi_SupportedExtensions supported_extensions; */
+/* IDL:        GUID site_guid; */
+/* IDL:        uint32 pid; */
+/* IDL:        uint32 repl_epoch; */
+/* IDL:        drsuapi_SupportedExtensionsExt supported_extensions_ext; */
 /* IDL: } */
 
 static int
-drsuapi_dissect_element_DsReplicaSyncRequest1_naming_context(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaSyncRequest1_naming_context_, NDR_POINTER_REF, "Pointer to Naming Context (drsuapi_DsReplicaObjectIdentifier)",hf_drsuapi_drsuapi_DsReplicaSyncRequest1_naming_context);
-
-       return offset;
-}
-
-static int
-drsuapi_dissect_element_DsReplicaSyncRequest1_naming_context_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsBindInfo32_supported_extensions(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaSyncRequest1_naming_context,0);
+       offset = drsuapi_dissect_bitmap_SupportedExtensions(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsBindInfo32_supported_extensions, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaSyncRequest1_source_dsa_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsBindInfo32_site_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaSyncRequest1_source_dsa_guid, NULL);
+       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsBindInfo32_site_guid, NULL);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaSyncRequest1_source_dsa_dns(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsBindInfo32_pid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaSyncRequest1_source_dsa_dns_, NDR_POINTER_UNIQUE, "Pointer to Source Dsa Dns (uint8)",hf_drsuapi_drsuapi_DsReplicaSyncRequest1_source_dsa_dns);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsBindInfo32_pid, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaSyncRequest1_source_dsa_dns_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsBindInfo32_repl_epoch(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       char *data;
-
-       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint8), hf_drsuapi_drsuapi_DsReplicaSyncRequest1_source_dsa_dns, FALSE, &data);
-       proto_item_append_text(tree, ": %s", data);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsBindInfo32_repl_epoch, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaSyncRequest1_options(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsBindInfo32_supported_extensions_ext(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_bitmap_DrsOptions(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaSyncRequest1_options, 0);
+       offset = drsuapi_dissect_bitmap_SupportedExtensionsExt(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsBindInfo32_supported_extensions_ext, 0);
 
        return offset;
 }
 
 int
-drsuapi_dissect_struct_DsReplicaSyncRequest1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_struct_DsBindInfo32(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
        proto_item *item = NULL;
        proto_tree *tree = NULL;
        int old_offset;
 
-       ALIGN_TO_5_BYTES;
+       ALIGN_TO_4_BYTES;
 
        old_offset = offset;
 
        if (parent_tree) {
                item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaSyncRequest1);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsBindInfo32);
        }
 
-       offset = drsuapi_dissect_element_DsReplicaSyncRequest1_naming_context(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsBindInfo32_supported_extensions(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaSyncRequest1_source_dsa_guid(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsBindInfo32_site_guid(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaSyncRequest1_source_dsa_dns(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsBindInfo32_pid(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaSyncRequest1_options(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsBindInfo32_repl_epoch(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsBindInfo32_supported_extensions_ext(tvb, offset, pinfo, tree, di, drep);
 
 
        proto_item_set_len(item, offset-old_offset);
 
 
        if (di->call_data->flags & DCERPC_IS_NDR64) {
-               ALIGN_TO_5_BYTES;
+               ALIGN_TO_4_BYTES;
        }
 
        return offset;
@@ -4745,239 +5402,204 @@ drsuapi_dissect_struct_DsReplicaSyncRequest1(tvbuff_t *tvb _U_, int offset _U_,
 
 
 /* IDL: struct { */
-/* IDL:        [ref] drsuapi_DsReplicaObjectIdentifier *naming_context; */
-/* IDL:        GUID source_dsa_guid; */
-/* IDL:        [charset(DOS)] [unique(1)] uint8 *source_dsa_dns; */
-/* IDL:        drsuapi_DrsOptions options; */
-/* IDL:        GUID correlationID; */
-/* IDL:        [unique(1)] [value(NULL)] drsuapi_VAR_SIZE_BUFFER_WITH_VERSION *reserved_buffer; */
+/* IDL:        drsuapi_SupportedExtensions supported_extensions; */
+/* IDL:        GUID site_guid; */
+/* IDL:        uint32 pid; */
+/* IDL:        uint32 repl_epoch; */
+/* IDL:        drsuapi_SupportedExtensionsExt supported_extensions_ext; */
+/* IDL:        GUID config_dn_guid; */
 /* IDL: } */
 
 static int
-drsuapi_dissect_element_DsReplicaSyncRequest2_naming_context(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsBindInfo48_supported_extensions(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaSyncRequest2_naming_context_, NDR_POINTER_REF, "Pointer to Naming Context (drsuapi_DsReplicaObjectIdentifier)",hf_drsuapi_drsuapi_DsReplicaSyncRequest2_naming_context);
+       offset = drsuapi_dissect_bitmap_SupportedExtensions(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsBindInfo48_supported_extensions, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaSyncRequest2_naming_context_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsBindInfo48_site_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaSyncRequest2_naming_context,0);
+       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsBindInfo48_site_guid, NULL);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaSyncRequest2_source_dsa_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsBindInfo48_pid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaSyncRequest2_source_dsa_guid, NULL);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsBindInfo48_pid, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaSyncRequest2_source_dsa_dns(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsBindInfo48_repl_epoch(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaSyncRequest2_source_dsa_dns_, NDR_POINTER_UNIQUE, "Pointer to Source Dsa Dns (uint8)",hf_drsuapi_drsuapi_DsReplicaSyncRequest2_source_dsa_dns);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsBindInfo48_repl_epoch, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaSyncRequest2_source_dsa_dns_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsBindInfo48_supported_extensions_ext(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       char *data;
-
-       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint8), hf_drsuapi_drsuapi_DsReplicaSyncRequest2_source_dsa_dns, FALSE, &data);
-       proto_item_append_text(tree, ": %s", data);
+       offset = drsuapi_dissect_bitmap_SupportedExtensionsExt(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsBindInfo48_supported_extensions_ext, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaSyncRequest2_options(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsBindInfo48_config_dn_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_bitmap_DrsOptions(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaSyncRequest2_options, 0);
+       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsBindInfo48_config_dn_guid, NULL);
 
        return offset;
 }
 
-static int
-drsuapi_dissect_element_DsReplicaSyncRequest2_correlationID(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+int
+drsuapi_dissect_struct_DsBindInfo48(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
-       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaSyncRequest2_correlationID, NULL);
+       proto_item *item = NULL;
+       proto_tree *tree = NULL;
+       int old_offset;
 
-       return offset;
-}
+       ALIGN_TO_4_BYTES;
 
-static int
-drsuapi_dissect_element_DsReplicaSyncRequest2_reserved_buffer(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaSyncRequest2_reserved_buffer_, NDR_POINTER_UNIQUE, "Pointer to Reserved Buffer (drsuapi_VAR_SIZE_BUFFER_WITH_VERSION)",hf_drsuapi_drsuapi_DsReplicaSyncRequest2_reserved_buffer);
+       old_offset = offset;
 
-       return offset;
-}
+       if (parent_tree) {
+               item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsBindInfo48);
+       }
 
-static int
-drsuapi_dissect_element_DsReplicaSyncRequest2_reserved_buffer_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = drsuapi_dissect_struct_VAR_SIZE_BUFFER_WITH_VERSION(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaSyncRequest2_reserved_buffer,0);
+       offset = drsuapi_dissect_element_DsBindInfo48_supported_extensions(tvb, offset, pinfo, tree, di, drep);
 
-       return offset;
-}
+       offset = drsuapi_dissect_element_DsBindInfo48_site_guid(tvb, offset, pinfo, tree, di, drep);
 
-int
-drsuapi_dissect_struct_DsReplicaSyncRequest2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
-{
-       proto_item *item = NULL;
-       proto_tree *tree = NULL;
-       int old_offset;
-
-       ALIGN_TO_5_BYTES;
-
-       old_offset = offset;
-
-       if (parent_tree) {
-               item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaSyncRequest2);
-       }
-
-       offset = drsuapi_dissect_element_DsReplicaSyncRequest2_naming_context(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsReplicaSyncRequest2_source_dsa_guid(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsReplicaSyncRequest2_source_dsa_dns(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsBindInfo48_pid(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaSyncRequest2_options(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsBindInfo48_repl_epoch(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaSyncRequest2_correlationID(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsBindInfo48_supported_extensions_ext(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaSyncRequest2_reserved_buffer(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsBindInfo48_config_dn_guid(tvb, offset, pinfo, tree, di, drep);
 
 
        proto_item_set_len(item, offset-old_offset);
 
 
        if (di->call_data->flags & DCERPC_IS_NDR64) {
-               ALIGN_TO_5_BYTES;
+               ALIGN_TO_4_BYTES;
        }
 
        return offset;
 }
 
 
-/* IDL: [switch_type(uint32)] union { */
-/* IDL: [case(1)] [case(1)] drsuapi_DsReplicaSyncRequest1 req1; */
-/* IDL: [case(2)] [case(2)] drsuapi_DsReplicaSyncRequest2 req2; */
+/* IDL: struct { */
+/* IDL:        drsuapi_SupportedExtensions supported_extensions; */
+/* IDL:        GUID site_guid; */
+/* IDL:        uint32 pid; */
+/* IDL:        uint32 repl_epoch; */
+/* IDL:        drsuapi_SupportedExtensionsExt supported_extensions_ext; */
+/* IDL:        GUID config_dn_guid; */
+/* IDL:        drsuapi_SupportedExtensionsExt supported_capabilities_ext; */
 /* IDL: } */
 
 static int
-drsuapi_dissect_element_DsReplicaSyncRequest_req1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsBindInfo52_supported_extensions(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaSyncRequest1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaSyncRequest_req1,0);
+       offset = drsuapi_dissect_bitmap_SupportedExtensions(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsBindInfo52_supported_extensions, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaSyncRequest_req2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsBindInfo52_site_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaSyncRequest2(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaSyncRequest_req2,0);
+       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsBindInfo52_site_guid, NULL);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_DsReplicaSyncRequest(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_element_DsBindInfo52_pid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       proto_item *item = NULL;
-       proto_tree *tree = NULL;
-       int old_offset;
-       guint32 level;
-
-       old_offset = offset;
-       if (parent_tree) {
-               tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_DsReplicaSyncRequest, &item, "drsuapi_DsReplicaSyncRequest");
-       }
-
-       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level);
-       ALIGN_TO_5_BYTES;
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsBindInfo52_pid, 0);
 
-       switch(level) {
-               case 1:
-                       offset = drsuapi_dissect_element_DsReplicaSyncRequest_req1(tvb, offset, pinfo, tree, di, drep);
-               break;
-
-               case 2:
-                       offset = drsuapi_dissect_element_DsReplicaSyncRequest_req2(tvb, offset, pinfo, tree, di, drep);
-               break;
-       }
-       proto_item_set_len(item, offset-old_offset);
+       return offset;
+}
 
+static int
+drsuapi_dissect_element_DsBindInfo52_repl_epoch(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsBindInfo52_repl_epoch, 0);
 
        return offset;
 }
 
-/* IDL: struct { */
-/* IDL:        hyper tmp_highest_usn; */
-/* IDL:        hyper reserved_usn; */
-/* IDL:        hyper highest_usn; */
-/* IDL: } */
-
 static int
-drsuapi_dissect_element_DsReplicaHighWaterMark_tmp_highest_usn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsBindInfo52_supported_extensions_ext(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaHighWaterMark_tmp_highest_usn, NULL);
+       offset = drsuapi_dissect_bitmap_SupportedExtensionsExt(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsBindInfo52_supported_extensions_ext, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaHighWaterMark_reserved_usn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsBindInfo52_config_dn_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaHighWaterMark_reserved_usn, NULL);
+       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsBindInfo52_config_dn_guid, NULL);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaHighWaterMark_highest_usn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsBindInfo52_supported_capabilities_ext(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaHighWaterMark_highest_usn, NULL);
+       offset = drsuapi_dissect_bitmap_SupportedExtensionsExt(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsBindInfo52_supported_capabilities_ext, 0);
 
        return offset;
 }
 
 int
-drsuapi_dissect_struct_DsReplicaHighWaterMark(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_struct_DsBindInfo52(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
        proto_item *item = NULL;
        proto_tree *tree = NULL;
        int old_offset;
 
-       ALIGN_TO_8_BYTES;
+       ALIGN_TO_4_BYTES;
 
        old_offset = offset;
 
        if (parent_tree) {
                item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaHighWaterMark);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsBindInfo52);
        }
 
-       offset = drsuapi_dissect_element_DsReplicaHighWaterMark_tmp_highest_usn(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsBindInfo52_supported_extensions(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaHighWaterMark_reserved_usn(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsBindInfo52_site_guid(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaHighWaterMark_highest_usn(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsBindInfo52_pid(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsBindInfo52_repl_epoch(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsBindInfo52_supported_extensions_ext(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsBindInfo52_config_dn_guid(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsBindInfo52_supported_capabilities_ext(tvb, offset, pinfo, tree, di, drep);
 
 
        proto_item_set_len(item, offset-old_offset);
 
 
        if (di->call_data->flags & DCERPC_IS_NDR64) {
-               ALIGN_TO_8_BYTES;
+               ALIGN_TO_4_BYTES;
        }
 
        return offset;
@@ -4985,433 +5607,489 @@ drsuapi_dissect_struct_DsReplicaHighWaterMark(tvbuff_t *tvb _U_, int offset _U_,
 
 
 /* IDL: struct { */
-/* IDL:        GUID source_dsa_invocation_id; */
-/* IDL:        hyper highest_usn; */
+/* IDL:        [flag(LIBNDR_FLAG_REMAINING)] DATA_BLOB info; */
 /* IDL: } */
 
 static int
-drsuapi_dissect_element_DsReplicaCursor_source_dsa_invocation_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaCursor_source_dsa_invocation_id, NULL);
-
-       return offset;
-}
-
-static int
-drsuapi_dissect_element_DsReplicaCursor_highest_usn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsBindInfoFallBack_info(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaCursor_highest_usn, NULL);
+       offset = dissect_ndr_datablob(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsBindInfoFallBack_info, 1);
 
        return offset;
 }
 
 int
-drsuapi_dissect_struct_DsReplicaCursor(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_struct_DsBindInfoFallBack(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
        proto_item *item = NULL;
        proto_tree *tree = NULL;
        int old_offset;
 
-       ALIGN_TO_8_BYTES;
+       ALIGN_TO_4_BYTES;
 
        old_offset = offset;
 
        if (parent_tree) {
                item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaCursor);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsBindInfoFallBack);
        }
 
-       offset = drsuapi_dissect_element_DsReplicaCursor_source_dsa_invocation_id(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsReplicaCursor_highest_usn(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsBindInfoFallBack_info(tvb, offset, pinfo, tree, di, drep);
 
 
        proto_item_set_len(item, offset-old_offset);
 
 
        if (di->call_data->flags & DCERPC_IS_NDR64) {
-               ALIGN_TO_8_BYTES;
+               ALIGN_TO_4_BYTES;
        }
 
        return offset;
 }
 
 
+/* IDL: [nodiscriminant(1)] [noprint(1)] [nopull(1)] [nopush(1)] union { */
+/* IDL: [case(24)] [case(24)] [subcontext(0)] [subcontext_size(24)] drsuapi_DsBindInfo24 info24; */
+/* IDL: [case(28)] [case(28)] [subcontext(0)] [subcontext_size(28)] drsuapi_DsBindInfo28 info28; */
+/* IDL: [case(32)] [case(32)] [subcontext(0)] [subcontext_size(32)] drsuapi_DsBindInfo32 info32; */
+/* IDL: [case(48)] [case(48)] [subcontext(0)] [subcontext_size(48)] drsuapi_DsBindInfo48 info48; */
+/* IDL: [case(52)] [case(52)] [subcontext(0)] [subcontext_size(52)] drsuapi_DsBindInfo52 info52; */
+/* IDL: [default] ; */
+/* IDL: } */
+
+
 /* IDL: struct { */
-/* IDL:        [value(1)] uint32 version; */
-/* IDL:        [value(0)] uint32 reserved1; */
-/* IDL:        [range(0,0x100000)] uint32 count; */
-/* IDL:        [value(0)] uint32 reserved2; */
-/* IDL:        [size_is(count)] drsuapi_DsReplicaCursor cursors[*]; */
+/* IDL:        [range(1,10000)] uint3264 length; */
+/* IDL:        [value(length)] uint32 __ndr_length; */
+/* IDL:        [switch_is(length)] drsuapi_DsBindInfo info; */
 /* IDL: } */
 
 static int
-drsuapi_dissect_element_DsReplicaCursorCtrEx_version(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsBindInfoCtr___ndr_length(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaCursorCtrEx_version, 0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsBindInfoCtr___ndr_length, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaCursorCtrEx_reserved1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsBindInfoCtr_info(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, guint3264 *length)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaCursorCtrEx_reserved1, 0);
+       offset = drsuapi_dissect_DsBindInfo(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsBindInfoCtr_info, *length);
 
        return offset;
 }
 
+
+/* IDL: struct { */
+/* IDL:        [value(ndr_struct_size_drsuapi_DsReplicaObjectIdentifier(r,ndr->flags))] uint32 __ndr_size; */
+/* IDL:        [value(ndr_size_dom_sid28(&sid,ndr->flags))] uint32 __ndr_size_sid; */
+/* IDL:        GUID guid; */
+/* IDL:        dom_sid28 sid; */
+/* IDL:        [value(strlen_m(dn))] uint32 __ndr_size_dn; */
+/* IDL:        [charset(UTF16)] [size_is(__ndr_size_dn+1)] uint16 dn[*]; */
+/* IDL: } */
+
 static int
-drsuapi_dissect_element_DsReplicaCursorCtrEx_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaObjectIdentifier___ndr_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaCursorCtrEx_count, 0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjectIdentifier___ndr_size, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaCursorCtrEx_reserved2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaObjectIdentifier___ndr_size_sid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaCursorCtrEx_reserved2, 0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjectIdentifier___ndr_size_sid, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaCursorCtrEx_cursors(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaObjectIdentifier_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaCursorCtrEx_cursors_);
+       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjectIdentifier_guid, NULL);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaCursorCtrEx_cursors_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaObjectIdentifier___ndr_size_dn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaCursor(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaCursorCtrEx_cursors,0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjectIdentifier___ndr_size_dn, 0);
 
        return offset;
 }
 
 int
-drsuapi_dissect_struct_DsReplicaCursorCtrEx(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
        proto_item *item = NULL;
        proto_tree *tree = NULL;
        int old_offset;
 
-       ALIGN_TO_8_BYTES;
+       ALIGN_TO_4_BYTES;
 
        old_offset = offset;
 
        if (parent_tree) {
                item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaCursorCtrEx);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaObjectIdentifier);
        }
 
-       offset = drsuapi_dissect_element_DsReplicaCursorCtrEx_version(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaObjectIdentifier___ndr_size(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaCursorCtrEx_reserved1(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaObjectIdentifier___ndr_size_sid(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaCursorCtrEx_count(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaObjectIdentifier_guid(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaCursorCtrEx_reserved2(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaObjectIdentifier_sid(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaCursorCtrEx_cursors(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaObjectIdentifier___ndr_size_dn(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsReplicaObjectIdentifier_dn(tvb, offset, pinfo, tree, di, drep);
 
 
        proto_item_set_len(item, offset-old_offset);
 
 
        if (di->call_data->flags & DCERPC_IS_NDR64) {
-               ALIGN_TO_8_BYTES;
-       }
-
-       return offset;
-}
-
-
-/* IDL: enum { */
-/* IDL:        DRSUAPI_EXOP_NONE=0x00000000, */
-/* IDL:        DRSUAPI_EXOP_FSMO_REQ_ROLE=0x00000001, */
-/* IDL:        DRSUAPI_EXOP_FSMO_RID_ALLOC=0x00000002, */
-/* IDL:        DRSUAPI_EXOP_FSMO_RID_REQ_ROLE=0x00000003, */
-/* IDL:        DRSUAPI_EXOP_FSMO_REQ_PDC=0x00000004, */
-/* IDL:        DRSUAPI_EXOP_FSMO_ABANDON_ROLE=0x00000005, */
-/* IDL:        DRSUAPI_EXOP_REPL_OBJ=0x00000006, */
-/* IDL:        DRSUAPI_EXOP_REPL_SECRET=0x00000007, */
-/* IDL: } */
-
-int
-drsuapi_dissect_enum_DsExtendedOperation(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 *param _U_)
-{
-       guint32 parameter=0;
-       if (param) {
-               parameter = *param;
-       }
-       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &parameter);
-       if (param) {
-               *param = parameter;
+               ALIGN_TO_4_BYTES;
        }
-       return offset;
-}
-
-
-/* IDL: enum { */
-/* IDL:        DRSUAPI_EXOP_ERR_NONE=0x00000000, */
-/* IDL:        DRSUAPI_EXOP_ERR_SUCCESS=0x00000001, */
-/* IDL:        DRSUAPI_EXOP_ERR_UNKNOWN_OP=0x00000002, */
-/* IDL:        DRSUAPI_EXOP_ERR_FSMO_NOT_OWNER=0x00000003, */
-/* IDL:        DRSUAPI_EXOP_ERR_UPDATE_ERR=0x00000004, */
-/* IDL:        DRSUAPI_EXOP_ERR_EXCEPTION=0x00000005, */
-/* IDL:        DRSUAPI_EXOP_ERR_UNKNOWN_CALLER=0x00000006, */
-/* IDL:        DRSUAPI_EXOP_ERR_RID_ALLOC=0x00000007, */
-/* IDL:        DRSUAPI_EXOP_ERR_FSMO_OWNER_DELETED=0x00000008, */
-/* IDL:        DRSUAPI_EXOP_ERR_FMSO_PENDING_OP=0x00000009, */
-/* IDL:        DRSUAPI_EXOP_ERR_MISMATCH=0x0000000A, */
-/* IDL:        DRSUAPI_EXOP_ERR_COULDNT_CONTACT=0x0000000B, */
-/* IDL:        DRSUAPI_EXOP_ERR_FSMO_REFUSING_ROLES=0x0000000C, */
-/* IDL:        DRSUAPI_EXOP_ERR_DIR_ERROR=0x0000000D, */
-/* IDL:        DRSUAPI_EXOP_ERR_FSMO_MISSING_SETTINGS=0x0000000E, */
-/* IDL:        DRSUAPI_EXOP_ERR_ACCESS_DENIED=0x0000000F, */
-/* IDL:        DRSUAPI_EXOP_ERR_PARAM_ERROR=0x00000010, */
-/* IDL: } */
 
-int
-drsuapi_dissect_enum_DsExtendedError(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 *param _U_)
-{
-       guint32 parameter=0;
-       if (param) {
-               parameter = *param;
-       }
-       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &parameter);
-       if (param) {
-               *param = parameter;
-       }
        return offset;
 }
 
 
 /* IDL: struct { */
-/* IDL:        GUID destination_dsa_guid; */
-/* IDL:        GUID source_dsa_invocation_id; */
 /* IDL:        [ref] drsuapi_DsReplicaObjectIdentifier *naming_context; */
-/* IDL:        drsuapi_DsReplicaHighWaterMark highwatermark; */
-/* IDL:        [unique(1)] drsuapi_DsReplicaCursorCtrEx *uptodateness_vector; */
-/* IDL:        drsuapi_DrsOptions replica_flags; */
-/* IDL:        uint32 max_object_count; */
-/* IDL:        uint32 max_ndr_size; */
-/* IDL:        drsuapi_DsExtendedOperation extended_op; */
-/* IDL:        hyper fsmo_info; */
+/* IDL:        GUID source_dsa_guid; */
+/* IDL:        [charset(DOS)] [unique(1)] uint8 *source_dsa_dns; */
+/* IDL:        drsuapi_DrsOptions options; */
 /* IDL: } */
 
 static int
-drsuapi_dissect_element_DsGetNCChangesRequest5_destination_dsa_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaSyncRequest1_naming_context(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesRequest5_destination_dsa_guid, NULL);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaSyncRequest1_naming_context_, NDR_POINTER_REF, "Pointer to Naming Context (drsuapi_DsReplicaObjectIdentifier)",hf_drsuapi_drsuapi_DsReplicaSyncRequest1_naming_context);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChangesRequest5_source_dsa_invocation_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaSyncRequest1_naming_context_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesRequest5_source_dsa_invocation_id, NULL);
+       offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaSyncRequest1_naming_context,0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChangesRequest5_naming_context(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaSyncRequest1_source_dsa_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNCChangesRequest5_naming_context_, NDR_POINTER_REF, "Pointer to Naming Context (drsuapi_DsReplicaObjectIdentifier)",hf_drsuapi_drsuapi_DsGetNCChangesRequest5_naming_context);
+       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaSyncRequest1_source_dsa_guid, NULL);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChangesRequest5_naming_context_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaSyncRequest1_source_dsa_dns(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesRequest5_naming_context,0);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaSyncRequest1_source_dsa_dns_, NDR_POINTER_UNIQUE, "Pointer to Source Dsa Dns (uint8)",hf_drsuapi_drsuapi_DsReplicaSyncRequest1_source_dsa_dns);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChangesRequest5_highwatermark(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaSyncRequest1_source_dsa_dns_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaHighWaterMark(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesRequest5_highwatermark,0);
+       char *data;
+
+       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint8), hf_drsuapi_drsuapi_DsReplicaSyncRequest1_source_dsa_dns, FALSE, &data);
+       proto_item_append_text(tree, ": %s", data);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChangesRequest5_uptodateness_vector(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaSyncRequest1_options(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNCChangesRequest5_uptodateness_vector_, NDR_POINTER_UNIQUE, "Pointer to Uptodateness Vector (drsuapi_DsReplicaCursorCtrEx)",hf_drsuapi_drsuapi_DsGetNCChangesRequest5_uptodateness_vector);
+       offset = drsuapi_dissect_bitmap_DrsOptions(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaSyncRequest1_options, 0);
+
+       return offset;
+}
+
+int
+drsuapi_dissect_struct_DsReplicaSyncRequest1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+{
+       proto_item *item = NULL;
+       proto_tree *tree = NULL;
+       int old_offset;
+
+       ALIGN_TO_5_BYTES;
+
+       old_offset = offset;
+
+       if (parent_tree) {
+               item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaSyncRequest1);
+       }
+
+       offset = drsuapi_dissect_element_DsReplicaSyncRequest1_naming_context(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsReplicaSyncRequest1_source_dsa_guid(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsReplicaSyncRequest1_source_dsa_dns(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsReplicaSyncRequest1_options(tvb, offset, pinfo, tree, di, drep);
+
+
+       proto_item_set_len(item, offset-old_offset);
+
+
+       if (di->call_data->flags & DCERPC_IS_NDR64) {
+               ALIGN_TO_5_BYTES;
+       }
 
        return offset;
 }
 
+
+/* IDL: struct { */
+/* IDL:        [ref] drsuapi_DsReplicaObjectIdentifier *naming_context; */
+/* IDL:        GUID source_dsa_guid; */
+/* IDL:        [charset(DOS)] [unique(1)] uint8 *source_dsa_dns; */
+/* IDL:        drsuapi_DrsOptions options; */
+/* IDL:        GUID correlationID; */
+/* IDL:        [unique(1)] [value(NULL)] drsuapi_VAR_SIZE_BUFFER_WITH_VERSION *reserved_buffer; */
+/* IDL: } */
+
 static int
-drsuapi_dissect_element_DsGetNCChangesRequest5_uptodateness_vector_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaSyncRequest2_naming_context(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaCursorCtrEx(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesRequest5_uptodateness_vector,0);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaSyncRequest2_naming_context_, NDR_POINTER_REF, "Pointer to Naming Context (drsuapi_DsReplicaObjectIdentifier)",hf_drsuapi_drsuapi_DsReplicaSyncRequest2_naming_context);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChangesRequest5_replica_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaSyncRequest2_naming_context_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_bitmap_DrsOptions(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesRequest5_replica_flags, 0);
+       offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaSyncRequest2_naming_context,0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChangesRequest5_max_object_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaSyncRequest2_source_dsa_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesRequest5_max_object_count, 0);
+       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaSyncRequest2_source_dsa_guid, NULL);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChangesRequest5_max_ndr_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaSyncRequest2_source_dsa_dns(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesRequest5_max_ndr_size, 0);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaSyncRequest2_source_dsa_dns_, NDR_POINTER_UNIQUE, "Pointer to Source Dsa Dns (uint8)",hf_drsuapi_drsuapi_DsReplicaSyncRequest2_source_dsa_dns);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChangesRequest5_extended_op(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaSyncRequest2_source_dsa_dns_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_enum_DsExtendedOperation(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesRequest5_extended_op, 0);
+       char *data;
+
+       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint8), hf_drsuapi_drsuapi_DsReplicaSyncRequest2_source_dsa_dns, FALSE, &data);
+       proto_item_append_text(tree, ": %s", data);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChangesRequest5_fsmo_info(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaSyncRequest2_options(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesRequest5_fsmo_info, NULL);
+       offset = drsuapi_dissect_bitmap_DrsOptions(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaSyncRequest2_options, 0);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsReplicaSyncRequest2_correlationID(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaSyncRequest2_correlationID, NULL);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsReplicaSyncRequest2_reserved_buffer(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaSyncRequest2_reserved_buffer_, NDR_POINTER_UNIQUE, "Pointer to Reserved Buffer (drsuapi_VAR_SIZE_BUFFER_WITH_VERSION)",hf_drsuapi_drsuapi_DsReplicaSyncRequest2_reserved_buffer);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsReplicaSyncRequest2_reserved_buffer_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = drsuapi_dissect_struct_VAR_SIZE_BUFFER_WITH_VERSION(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaSyncRequest2_reserved_buffer,0);
 
        return offset;
 }
 
 int
-drsuapi_dissect_struct_DsGetNCChangesRequest5(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_struct_DsReplicaSyncRequest2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
        proto_item *item = NULL;
        proto_tree *tree = NULL;
        int old_offset;
 
-       ALIGN_TO_8_BYTES;
+       ALIGN_TO_5_BYTES;
 
        old_offset = offset;
 
        if (parent_tree) {
                item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsGetNCChangesRequest5);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaSyncRequest2);
        }
 
-       offset = drsuapi_dissect_element_DsGetNCChangesRequest5_destination_dsa_guid(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsGetNCChangesRequest5_source_dsa_invocation_id(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsGetNCChangesRequest5_naming_context(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsGetNCChangesRequest5_highwatermark(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsGetNCChangesRequest5_uptodateness_vector(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaSyncRequest2_naming_context(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsGetNCChangesRequest5_replica_flags(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaSyncRequest2_source_dsa_guid(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsGetNCChangesRequest5_max_object_count(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaSyncRequest2_source_dsa_dns(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsGetNCChangesRequest5_max_ndr_size(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaSyncRequest2_options(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsGetNCChangesRequest5_extended_op(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaSyncRequest2_correlationID(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsGetNCChangesRequest5_fsmo_info(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaSyncRequest2_reserved_buffer(tvb, offset, pinfo, tree, di, drep);
 
 
        proto_item_set_len(item, offset-old_offset);
 
 
        if (di->call_data->flags & DCERPC_IS_NDR64) {
-               ALIGN_TO_8_BYTES;
+               ALIGN_TO_5_BYTES;
        }
 
        return offset;
 }
 
 
-/* IDL: struct { */
-/* IDL:        [range(0,10000)] uint32 length; */
-/* IDL:        [size_is(length)] [unique(1)] uint8 *binary_oid; */
+/* IDL: [switch_type(uint32)] union { */
+/* IDL: [case(1)] [case(1)] drsuapi_DsReplicaSyncRequest1 req1; */
+/* IDL: [case(2)] [case(2)] drsuapi_DsReplicaSyncRequest2 req2; */
 /* IDL: } */
 
 static int
-drsuapi_dissect_element_DsReplicaOID_length(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaSyncRequest_req1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaOID_length, 0);
+       offset = drsuapi_dissect_struct_DsReplicaSyncRequest1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaSyncRequest_req1,0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaOID_binary_oid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaSyncRequest_req2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaOID_binary_oid_, NDR_POINTER_UNIQUE, "Pointer to Binary Oid (uint8)",hf_drsuapi_drsuapi_DsReplicaOID_binary_oid);
+       offset = drsuapi_dissect_struct_DsReplicaSyncRequest2(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaSyncRequest_req2,0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaOID_binary_oid_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_DsReplicaSyncRequest(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
-       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaOID_binary_oid__);
+       proto_item *item = NULL;
+       proto_tree *tree = NULL;
+       int old_offset;
+       guint32 level;
+
+       old_offset = offset;
+       if (parent_tree) {
+               tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_DsReplicaSyncRequest, &item, "drsuapi_DsReplicaSyncRequest");
+       }
+
+       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level);
+       ALIGN_TO_5_BYTES;
+
+       switch(level) {
+               case 1:
+                       offset = drsuapi_dissect_element_DsReplicaSyncRequest_req1(tvb, offset, pinfo, tree, di, drep);
+               break;
+
+               case 2:
+                       offset = drsuapi_dissect_element_DsReplicaSyncRequest_req2(tvb, offset, pinfo, tree, di, drep);
+               break;
+       }
+       proto_item_set_len(item, offset-old_offset);
+
+
+       return offset;
+}
+
+/* IDL: struct { */
+/* IDL:        hyper tmp_highest_usn; */
+/* IDL:        hyper reserved_usn; */
+/* IDL:        hyper highest_usn; */
+/* IDL: } */
+
+static int
+drsuapi_dissect_element_DsReplicaHighWaterMark_tmp_highest_usn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaHighWaterMark_tmp_highest_usn, NULL);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaOID_binary_oid__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaHighWaterMark_reserved_usn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaOID_binary_oid, 0);
+       offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaHighWaterMark_reserved_usn, NULL);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsReplicaHighWaterMark_highest_usn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaHighWaterMark_highest_usn, NULL);
 
        return offset;
 }
 
 int
-drsuapi_dissect_struct_DsReplicaOID(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_struct_DsReplicaHighWaterMark(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
        proto_item *item = NULL;
        proto_tree *tree = NULL;
        int old_offset;
 
-       ALIGN_TO_5_BYTES;
+       ALIGN_TO_8_BYTES;
 
        old_offset = offset;
 
        if (parent_tree) {
                item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaOID);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaHighWaterMark);
        }
 
-       offset = drsuapi_dissect_element_DsReplicaOID_length(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaHighWaterMark_tmp_highest_usn(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaOID_binary_oid(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaHighWaterMark_reserved_usn(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsReplicaHighWaterMark_highest_usn(tvb, offset, pinfo, tree, di, drep);
 
 
        proto_item_set_len(item, offset-old_offset);
 
 
        if (di->call_data->flags & DCERPC_IS_NDR64) {
-               ALIGN_TO_5_BYTES;
+               ALIGN_TO_8_BYTES;
        }
 
        return offset;
@@ -5419,52 +6097,52 @@ drsuapi_dissect_struct_DsReplicaOID(tvbuff_t *tvb _U_, int offset _U_, packet_in
 
 
 /* IDL: struct { */
-/* IDL:        uint32 id_prefix; */
-/* IDL:        drsuapi_DsReplicaOID oid; */
+/* IDL:        GUID source_dsa_invocation_id; */
+/* IDL:        hyper highest_usn; */
 /* IDL: } */
 
 static int
-drsuapi_dissect_element_DsReplicaOIDMapping_id_prefix(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaCursor_source_dsa_invocation_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaOIDMapping_id_prefix, 0);
+       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaCursor_source_dsa_invocation_id, NULL);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaOIDMapping_oid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaCursor_highest_usn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaOID(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaOIDMapping_oid,0);
+       offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaCursor_highest_usn, NULL);
 
        return offset;
 }
 
 int
-drsuapi_dissect_struct_DsReplicaOIDMapping(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_struct_DsReplicaCursor(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
        proto_item *item = NULL;
        proto_tree *tree = NULL;
        int old_offset;
 
-       ALIGN_TO_5_BYTES;
+       ALIGN_TO_8_BYTES;
 
        old_offset = offset;
 
        if (parent_tree) {
                item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaOIDMapping);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaCursor);
        }
 
-       offset = drsuapi_dissect_element_DsReplicaOIDMapping_id_prefix(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaCursor_source_dsa_invocation_id(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaOIDMapping_oid(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaCursor_highest_usn(tvb, offset, pinfo, tree, di, drep);
 
 
        proto_item_set_len(item, offset-old_offset);
 
 
        if (di->call_data->flags & DCERPC_IS_NDR64) {
-               ALIGN_TO_5_BYTES;
+               ALIGN_TO_8_BYTES;
        }
 
        return offset;
@@ -5472,68 +6150,93 @@ drsuapi_dissect_struct_DsReplicaOIDMapping(tvbuff_t *tvb _U_, int offset _U_, pa
 
 
 /* IDL: struct { */
-/* IDL:        [range(0,0x100000)] uint32 num_mappings; */
-/* IDL:        [size_is(num_mappings)] [unique(1)] drsuapi_DsReplicaOIDMapping *mappings; */
+/* IDL:        [value(1)] uint32 version; */
+/* IDL:        [value(0)] uint32 reserved1; */
+/* IDL:        [range(0,0x100000)] uint32 count; */
+/* IDL:        [value(0)] uint32 reserved2; */
+/* IDL:        [size_is(count)] drsuapi_DsReplicaCursor cursors[*]; */
 /* IDL: } */
 
 static int
-drsuapi_dissect_element_DsReplicaOIDMapping_Ctr_num_mappings(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaCursorCtrEx_version(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaOIDMapping_Ctr_num_mappings, 0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaCursorCtrEx_version, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaOIDMapping_Ctr_mappings(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaCursorCtrEx_reserved1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaOIDMapping_Ctr_mappings_, NDR_POINTER_UNIQUE, "Pointer to Mappings (drsuapi_DsReplicaOIDMapping)",hf_drsuapi_drsuapi_DsReplicaOIDMapping_Ctr_mappings);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaCursorCtrEx_reserved1, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaOIDMapping_Ctr_mappings_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaCursorCtrEx_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaOIDMapping_Ctr_mappings__);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaCursorCtrEx_count, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaOIDMapping_Ctr_mappings__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaCursorCtrEx_reserved2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaOIDMapping(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaOIDMapping_Ctr_mappings,0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaCursorCtrEx_reserved2, 0);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsReplicaCursorCtrEx_cursors(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaCursorCtrEx_cursors_);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsReplicaCursorCtrEx_cursors_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = drsuapi_dissect_struct_DsReplicaCursor(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaCursorCtrEx_cursors,0);
 
        return offset;
 }
 
 int
-drsuapi_dissect_struct_DsReplicaOIDMapping_Ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_struct_DsReplicaCursorCtrEx(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
        proto_item *item = NULL;
        proto_tree *tree = NULL;
        int old_offset;
 
-       ALIGN_TO_5_BYTES;
+       ALIGN_TO_8_BYTES;
 
        old_offset = offset;
 
        if (parent_tree) {
                item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaOIDMapping_Ctr);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaCursorCtrEx);
        }
 
-       offset = drsuapi_dissect_element_DsReplicaOIDMapping_Ctr_num_mappings(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaCursorCtrEx_version(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaOIDMapping_Ctr_mappings(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaCursorCtrEx_reserved1(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsReplicaCursorCtrEx_count(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsReplicaCursorCtrEx_reserved2(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsReplicaCursorCtrEx_cursors(tvb, offset, pinfo, tree, di, drep);
 
 
        proto_item_set_len(item, offset-old_offset);
 
 
        if (di->call_data->flags & DCERPC_IS_NDR64) {
-               ALIGN_TO_5_BYTES;
+               ALIGN_TO_8_BYTES;
        }
 
        return offset;
@@ -5541,13 +6244,18 @@ drsuapi_dissect_struct_DsReplicaOIDMapping_Ctr(tvbuff_t *tvb _U_, int offset _U_
 
 
 /* IDL: enum { */
-/* IDL:        DRSUAPI_OBJECTCLASS_top=0x00010000, */
-/* IDL:        DRSUAPI_OBJECTCLASS_classSchema=0x0003000d, */
-/* IDL:        DRSUAPI_OBJECTCLASS_attributeSchema=0x0003000e, */
+/* IDL:        DRSUAPI_EXOP_NONE=0x00000000, */
+/* IDL:        DRSUAPI_EXOP_FSMO_REQ_ROLE=0x00000001, */
+/* IDL:        DRSUAPI_EXOP_FSMO_RID_ALLOC=0x00000002, */
+/* IDL:        DRSUAPI_EXOP_FSMO_RID_REQ_ROLE=0x00000003, */
+/* IDL:        DRSUAPI_EXOP_FSMO_REQ_PDC=0x00000004, */
+/* IDL:        DRSUAPI_EXOP_FSMO_ABANDON_ROLE=0x00000005, */
+/* IDL:        DRSUAPI_EXOP_REPL_OBJ=0x00000006, */
+/* IDL:        DRSUAPI_EXOP_REPL_SECRET=0x00000007, */
 /* IDL: } */
 
 int
-drsuapi_dissect_enum_DsObjectClassId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 *param _U_)
+drsuapi_dissect_enum_DsExtendedOperation(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 *param _U_)
 {
        guint32 parameter=0;
        if (param) {
@@ -5562,124 +6270,27 @@ drsuapi_dissect_enum_DsObjectClassId(tvbuff_t *tvb _U_, int offset _U_, packet_i
 
 
 /* IDL: enum { */
-/* IDL:        DRSUAPI_ATTID_objectClass=0x00000000, */
-/* IDL:        DRSUAPI_ATTID_cn=0x00000003, */
-/* IDL:        DRSUAPI_ATTID_ou=0x0000000b, */
-/* IDL:        DRSUAPI_ATTID_description=0x0000000d, */
-/* IDL:        DRSUAPI_ATTID_member=0x0000001f, */
-/* IDL:        DRSUAPI_ATTID_distinguishedName=0x00000031, */
-/* IDL:        DRSUAPI_ATTID_instanceType=0x00020001, */
-/* IDL:        DRSUAPI_ATTID_whenCreated=0x00020002, */
-/* IDL:        DRSUAPI_ATTID_possSuperiors=0x00020008, */
-/* IDL:        DRSUAPI_ATTID_displayName=0x0002000d, */
-/* IDL:        DRSUAPI_ATTID_hasMasterNCs=0x0002000e, */
-/* IDL:        DRSUAPI_ATTID_nCName=0x00020010, */
-/* IDL:        DRSUAPI_ATTID_subClassOf=0x00020015, */
-/* IDL:        DRSUAPI_ATTID_governsID=0x00020016, */
-/* IDL:        DRSUAPI_ATTID_mustContain=0x00020018, */
-/* IDL:        DRSUAPI_ATTID_mayContain=0x00020019, */
-/* IDL:        DRSUAPI_ATTID_rDNAttId=0x0002001A, */
-/* IDL:        DRSUAPI_ATTID_attributeID=0x0002001e, */
-/* IDL:        DRSUAPI_ATTID_attributeSyntax=0x00020020, */
-/* IDL:        DRSUAPI_ATTID_isSingleValued=0x00020021, */
-/* IDL:        DRSUAPI_ATTID_rangeLower=0x00020022, */
-/* IDL:        DRSUAPI_ATTID_rangeUpper=0x00020023, */
-/* IDL:        DRSUAPI_ATTID_dMDLocation=0x00020024, */
-/* IDL:        DRSUAPI_ATTID_isDeleted=0x00020030, */
-/* IDL:        DRSUAPI_ATTID_objectVersion=0x0002004c, */
-/* IDL:        DRSUAPI_ATTID_invocationId=0x00020073, */
-/* IDL:        DRSUAPI_ATTID_showInAdvancedViewOnly=0x000200a9, */
-/* IDL:        DRSUAPI_ATTID_adminDisplayName=0x000200c2, */
-/* IDL:        DRSUAPI_ATTID_adminDescription=0x000200e2, */
-/* IDL:        DRSUAPI_ATTID_oMSyntax=0x000200e7, */
-/* IDL:        DRSUAPI_ATTID_ntSecurityDescriptor=0x00020119, */
-/* IDL:        DRSUAPI_ATTID_searchFlags=0x0002014e, */
-/* IDL:        DRSUAPI_ATTID_auxiliaryClass=0x0002015f, */
-/* IDL:        DRSUAPI_ATTID_lDAPDisplayName=0x000201cc, */
-/* IDL:        DRSUAPI_ATTID_name=0x00090001, */
-/* IDL:        DRSUAPI_ATTID_objectGUID=0x00090002, */
-/* IDL:        DRSUAPI_ATTID_replPropertyMetaData=0x00090003, */
-/* IDL:        DRSUAPI_ATTID_userAccountControl=0x00090008, */
-/* IDL:        DRSUAPI_ATTID_badPwdCount=0x0009000c, */
-/* IDL:        DRSUAPI_ATTID_codePage=0x00090010, */
-/* IDL:        DRSUAPI_ATTID_countryCode=0x00090019, */
-/* IDL:        DRSUAPI_ATTID_currentValue=0x0009001b, */
-/* IDL:        DRSUAPI_ATTID_homeDirectory=0x0009002c, */
-/* IDL:        DRSUAPI_ATTID_homeDrive=0x0009002d, */
-/* IDL:        DRSUAPI_ATTID_lastLogoff=0x00090033, */
-/* IDL:        DRSUAPI_ATTID_lastLogon=0x00090034, */
-/* IDL:        DRSUAPI_ATTID_dBCSPwd=0x00090037, */
-/* IDL:        DRSUAPI_ATTID_scriptPath=0x0009003e, */
-/* IDL:        DRSUAPI_ATTID_logonHours=0x00090040, */
-/* IDL:        DRSUAPI_ATTID_userWorkstations=0x00090056, */
-/* IDL:        DRSUAPI_ATTID_unicodePwd=0x0009005a, */
-/* IDL:        DRSUAPI_ATTID_ntPwdHistory=0x0009005e, */
-/* IDL:        DRSUAPI_ATTID_pwdLastSet=0x00090060, */
-/* IDL:        DRSUAPI_ATTID_primaryGroupID=0x00090062, */
-/* IDL:        DRSUAPI_ATTID_priorValue=0x00090064, */
-/* IDL:        DRSUAPI_ATTID_supplementalCredentials=0x0009007d, */
-/* IDL:        DRSUAPI_ATTID_trustAuthIncoming=0x00090081, */
-/* IDL:        DRSUAPI_ATTID_trustDirection=0x00090084, */
-/* IDL:        DRSUAPI_ATTID_trustPartner=0x00090085, */
-/* IDL:        DRSUAPI_ATTID_trustPosixOffset=0x00090086, */
-/* IDL:        DRSUAPI_ATTID_trustAuthOutgoing=0x00090087, */
-/* IDL:        DRSUAPI_ATTID_trustType=0x00090088, */
-/* IDL:        DRSUAPI_ATTID_userParameters=0x0009008a, */
-/* IDL:        DRSUAPI_ATTID_profilePath=0x0009008b, */
-/* IDL:        DRSUAPI_ATTID_operatorCount=0x00090090, */
-/* IDL:        DRSUAPI_ATTID_objectSid=0x00090092, */
-/* IDL:        DRSUAPI_ATTID_schemaIDGUID=0x00090094, */
-/* IDL:        DRSUAPI_ATTID_adminCount=0x00090096, */
-/* IDL:        DRSUAPI_ATTID_comment=0x0009009C, */
-/* IDL:        DRSUAPI_ATTID_accountExpires=0x0009009f, */
-/* IDL:        DRSUAPI_ATTID_lmPwdHistory=0x000900a0, */
-/* IDL:        DRSUAPI_ATTID_logonCount=0x000900a9, */
-/* IDL:        DRSUAPI_ATTID_systemPossSuperiors=0x000900c3, */
-/* IDL:        DRSUAPI_ATTID_systemMayContain=0x000900c4, */
-/* IDL:        DRSUAPI_ATTID_systemMustContain=0x000900c5, */
-/* IDL:        DRSUAPI_ATTID_systemAuxiliaryClass=0x000900c6, */
-/* IDL:        DRSUAPI_ATTID_sAMAccountName=0x000900dd, */
-/* IDL:        DRSUAPI_ATTID_sAMAccountType=0x0009012e, */
-/* IDL:        DRSUAPI_ATTID_options=0x00090133, */
-/* IDL:        DRSUAPI_ATTID_fSMORoleOwner=0x00090171, */
-/* IDL:        DRSUAPI_ATTID_systemFlags=0x00090177, */
-/* IDL:        DRSUAPI_ATTID_trustAttributes=0x000901d6, */
-/* IDL:        DRSUAPI_ATTID_trustParent=0x000901d7, */
-/* IDL:        DRSUAPI_ATTID_flatName=0x000901ff, */
-/* IDL:        DRSUAPI_ATTID_serverReference=0x00090203, */
-/* IDL:        DRSUAPI_ATTID_serverReferenceBL=0x00090204, */
-/* IDL:        DRSUAPI_ATTID_nonSecurityMember=0x00090212, */
-/* IDL:        DRSUAPI_ATTID_initialAuthIncoming=0x0009021b, */
-/* IDL:        DRSUAPI_ATTID_initialAuthOutgoing=0x0009021c, */
-/* IDL:        DRSUAPI_ATTID_wellKnownObjects=0x0009026a, */
-/* IDL:        DRSUAPI_ATTID_dNSHostName=0x0009026b, */
-/* IDL:        DRSUAPI_ATTID_isMemberOfPartialAttributeSet=0x0009027f, */
-/* IDL:        DRSUAPI_ATTID_managedBy=0x0009028d, */
-/* IDL:        DRSUAPI_ATTID_userPrincipalName=0x00090290, */
-/* IDL:        DRSUAPI_ATTID_groupType=0x000902ee, */
-/* IDL:        DRSUAPI_ATTID_servicePrincipalName=0x00090303, */
-/* IDL:        DRSUAPI_ATTID_lastKnownParent=0x0009030d, */
-/* IDL:        DRSUAPI_ATTID_objectCategory=0x0009030e, */
-/* IDL:        DRSUAPI_ATTID_gPLink=0x0009037b, */
-/* IDL:        DRSUAPI_ATTID_transportAddressAttribute=0x0009037f, */
-/* IDL:        DRSUAPI_ATTID_schemaInfo=0x0009054e, */
-/* IDL:        DRSUAPI_ATTID_msDS_Behavior_Version=0x000905b3, */
-/* IDL:        DRSUAPI_ATTID_msDS_TrustForestTrustInfo=0x000906a6, */
-/* IDL:        DRSUAPI_ATTID_msDS_KeyVersionNumber=0x000906f6, */
-/* IDL:        DRSUAPI_ATTID_msDS_NonMembers=0x00090701, */
-/* IDL:        DRSUAPI_ATTID_msDS_MembersForAzRole=0x0009070e, */
-/* IDL:        DRSUAPI_ATTID_msDS_HasDomainNCs=0x0009071c, */
-/* IDL:        DRSUAPI_ATTID_msDS_hasMasterNCs=0x0009072c, */
-/* IDL:        DRSUAPI_ATTID_msDS_NeverRevealGroup=0x00090786, */
-/* IDL:        DRSUAPI_ATTID_msDS_RevealOnDemandGroup=0x00090788, */
-/* IDL:        DRSUAPI_ATTID_msDS_SupportedEncryptionTypes=0x000907ab, */
-/* IDL:        DRSUAPI_ATTID_msDS_HostServiceAccount=0x00090808, */
-/* IDL:        DRSUAPI_ATTID_isRecycled=0x0009080a, */
-/* IDL:        DRSUAPI_ATTID_INVALID=0xFFFFFFFF, */
+/* IDL:        DRSUAPI_EXOP_ERR_NONE=0x00000000, */
+/* IDL:        DRSUAPI_EXOP_ERR_SUCCESS=0x00000001, */
+/* IDL:        DRSUAPI_EXOP_ERR_UNKNOWN_OP=0x00000002, */
+/* IDL:        DRSUAPI_EXOP_ERR_FSMO_NOT_OWNER=0x00000003, */
+/* IDL:        DRSUAPI_EXOP_ERR_UPDATE_ERR=0x00000004, */
+/* IDL:        DRSUAPI_EXOP_ERR_EXCEPTION=0x00000005, */
+/* IDL:        DRSUAPI_EXOP_ERR_UNKNOWN_CALLER=0x00000006, */
+/* IDL:        DRSUAPI_EXOP_ERR_RID_ALLOC=0x00000007, */
+/* IDL:        DRSUAPI_EXOP_ERR_FSMO_OWNER_DELETED=0x00000008, */
+/* IDL:        DRSUAPI_EXOP_ERR_FMSO_PENDING_OP=0x00000009, */
+/* IDL:        DRSUAPI_EXOP_ERR_MISMATCH=0x0000000A, */
+/* IDL:        DRSUAPI_EXOP_ERR_COULDNT_CONTACT=0x0000000B, */
+/* IDL:        DRSUAPI_EXOP_ERR_FSMO_REFUSING_ROLES=0x0000000C, */
+/* IDL:        DRSUAPI_EXOP_ERR_DIR_ERROR=0x0000000D, */
+/* IDL:        DRSUAPI_EXOP_ERR_FSMO_MISSING_SETTINGS=0x0000000E, */
+/* IDL:        DRSUAPI_EXOP_ERR_ACCESS_DENIED=0x0000000F, */
+/* IDL:        DRSUAPI_EXOP_ERR_PARAM_ERROR=0x00000010, */
 /* IDL: } */
 
 int
-drsuapi_dissect_enum_DsAttributeId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 *param _U_)
+drsuapi_dissect_enum_DsExtendedError(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 *param _U_)
 {
        guint32 parameter=0;
        if (param) {
@@ -5694,288 +6305,225 @@ drsuapi_dissect_enum_DsAttributeId(tvbuff_t *tvb _U_, int offset _U_, packet_inf
 
 
 /* IDL: struct { */
-/* IDL:        [value(1)] uint32 version; */
-/* IDL:        [value(0)] uint32 reserved1; */
-/* IDL:        [range(1,0x100000)] uint32 num_attids; */
-/* IDL:        [size_is(num_attids)] drsuapi_DsAttributeId attids[*]; */
+/* IDL:        GUID destination_dsa_guid; */
+/* IDL:        GUID source_dsa_invocation_id; */
+/* IDL:        [ref] drsuapi_DsReplicaObjectIdentifier *naming_context; */
+/* IDL:        drsuapi_DsReplicaHighWaterMark highwatermark; */
+/* IDL:        [unique(1)] drsuapi_DsReplicaCursorCtrEx *uptodateness_vector; */
+/* IDL:        drsuapi_DrsOptions replica_flags; */
+/* IDL:        uint32 max_object_count; */
+/* IDL:        uint32 max_ndr_size; */
+/* IDL:        drsuapi_DsExtendedOperation extended_op; */
+/* IDL:        hyper fsmo_info; */
 /* IDL: } */
 
 static int
-drsuapi_dissect_element_DsPartialAttributeSet_version(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetNCChangesRequest5_destination_dsa_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsPartialAttributeSet_version, 0);
+       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesRequest5_destination_dsa_guid, NULL);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsPartialAttributeSet_reserved1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetNCChangesRequest5_source_dsa_invocation_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsPartialAttributeSet_reserved1, 0);
+       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesRequest5_source_dsa_invocation_id, NULL);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsPartialAttributeSet_num_attids(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetNCChangesRequest5_naming_context(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsPartialAttributeSet_num_attids, 0);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNCChangesRequest5_naming_context_, NDR_POINTER_REF, "Pointer to Naming Context (drsuapi_DsReplicaObjectIdentifier)",hf_drsuapi_drsuapi_DsGetNCChangesRequest5_naming_context);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsPartialAttributeSet_attids(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetNCChangesRequest5_naming_context_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsPartialAttributeSet_attids_);
+       offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesRequest5_naming_context,0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsPartialAttributeSet_attids_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetNCChangesRequest5_highwatermark(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_enum_DsAttributeId(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsPartialAttributeSet_attids, 0);
+       offset = drsuapi_dissect_struct_DsReplicaHighWaterMark(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesRequest5_highwatermark,0);
 
        return offset;
 }
 
-int
-drsuapi_dissect_struct_DsPartialAttributeSet(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+static int
+drsuapi_dissect_element_DsGetNCChangesRequest5_uptodateness_vector(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       proto_item *item = NULL;
-       proto_tree *tree = NULL;
-       int old_offset;
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNCChangesRequest5_uptodateness_vector_, NDR_POINTER_UNIQUE, "Pointer to Uptodateness Vector (drsuapi_DsReplicaCursorCtrEx)",hf_drsuapi_drsuapi_DsGetNCChangesRequest5_uptodateness_vector);
 
-       ALIGN_TO_4_BYTES;
+       return offset;
+}
 
-       old_offset = offset;
+static int
+drsuapi_dissect_element_DsGetNCChangesRequest5_uptodateness_vector_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = drsuapi_dissect_struct_DsReplicaCursorCtrEx(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesRequest5_uptodateness_vector,0);
 
-       if (parent_tree) {
-               item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsPartialAttributeSet);
-       }
+       return offset;
+}
 
-       offset = drsuapi_dissect_element_DsPartialAttributeSet_version(tvb, offset, pinfo, tree, di, drep);
+static int
+drsuapi_dissect_element_DsGetNCChangesRequest5_replica_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = drsuapi_dissect_bitmap_DrsOptions(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesRequest5_replica_flags, 0);
 
-       offset = drsuapi_dissect_element_DsPartialAttributeSet_reserved1(tvb, offset, pinfo, tree, di, drep);
+       return offset;
+}
 
-       offset = drsuapi_dissect_element_DsPartialAttributeSet_num_attids(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsPartialAttributeSet_attids(tvb, offset, pinfo, tree, di, drep);
-
-
-       proto_item_set_len(item, offset-old_offset);
-
-
-       if (di->call_data->flags & DCERPC_IS_NDR64) {
-               ALIGN_TO_4_BYTES;
-       }
+static int
+drsuapi_dissect_element_DsGetNCChangesRequest5_max_object_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesRequest5_max_object_count, 0);
 
        return offset;
 }
 
-
-/* IDL: struct { */
-/* IDL:        GUID destination_dsa_guid; */
-/* IDL:        GUID source_dsa_invocation_id; */
-/* IDL:        [ref] drsuapi_DsReplicaObjectIdentifier *naming_context; */
-/* IDL:        drsuapi_DsReplicaHighWaterMark highwatermark; */
-/* IDL:        [unique(1)] drsuapi_DsReplicaCursorCtrEx *uptodateness_vector; */
-/* IDL:        drsuapi_DrsOptions replica_flags; */
-/* IDL:        uint32 max_object_count; */
-/* IDL:        uint32 max_ndr_size; */
-/* IDL:        drsuapi_DsExtendedOperation extended_op; */
-/* IDL:        hyper fsmo_info; */
-/* IDL:        [unique(1)] drsuapi_DsPartialAttributeSet *partial_attribute_set; */
-/* IDL:        [unique(1)] drsuapi_DsPartialAttributeSet *partial_attribute_set_ex; */
-/* IDL:        drsuapi_DsReplicaOIDMapping_Ctr mapping_ctr; */
-/* IDL: } */
-
 static int
-drsuapi_dissect_element_DsGetNCChangesRequest8_destination_dsa_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetNCChangesRequest5_max_ndr_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesRequest8_destination_dsa_guid, NULL);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesRequest5_max_ndr_size, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChangesRequest8_source_dsa_invocation_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetNCChangesRequest5_extended_op(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesRequest8_source_dsa_invocation_id, NULL);
+       offset = drsuapi_dissect_enum_DsExtendedOperation(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesRequest5_extended_op, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChangesRequest8_naming_context(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetNCChangesRequest5_fsmo_info(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNCChangesRequest8_naming_context_, NDR_POINTER_REF, "Pointer to Naming Context (drsuapi_DsReplicaObjectIdentifier)",hf_drsuapi_drsuapi_DsGetNCChangesRequest8_naming_context);
+       offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesRequest5_fsmo_info, NULL);
 
        return offset;
 }
 
-static int
-drsuapi_dissect_element_DsGetNCChangesRequest8_naming_context_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+int
+drsuapi_dissect_struct_DsGetNCChangesRequest5(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesRequest8_naming_context,0);
+       proto_item *item = NULL;
+       proto_tree *tree = NULL;
+       int old_offset;
 
-       return offset;
-}
+       ALIGN_TO_8_BYTES;
 
-static int
-drsuapi_dissect_element_DsGetNCChangesRequest8_highwatermark(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = drsuapi_dissect_struct_DsReplicaHighWaterMark(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesRequest8_highwatermark,0);
+       old_offset = offset;
 
-       return offset;
-}
+       if (parent_tree) {
+               item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsGetNCChangesRequest5);
+       }
 
-static int
-drsuapi_dissect_element_DsGetNCChangesRequest8_uptodateness_vector(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNCChangesRequest8_uptodateness_vector_, NDR_POINTER_UNIQUE, "Pointer to Uptodateness Vector (drsuapi_DsReplicaCursorCtrEx)",hf_drsuapi_drsuapi_DsGetNCChangesRequest8_uptodateness_vector);
+       offset = drsuapi_dissect_element_DsGetNCChangesRequest5_destination_dsa_guid(tvb, offset, pinfo, tree, di, drep);
 
-       return offset;
-}
+       offset = drsuapi_dissect_element_DsGetNCChangesRequest5_source_dsa_invocation_id(tvb, offset, pinfo, tree, di, drep);
 
-static int
-drsuapi_dissect_element_DsGetNCChangesRequest8_uptodateness_vector_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = drsuapi_dissect_struct_DsReplicaCursorCtrEx(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesRequest8_uptodateness_vector,0);
+       offset = drsuapi_dissect_element_DsGetNCChangesRequest5_naming_context(tvb, offset, pinfo, tree, di, drep);
 
-       return offset;
-}
+       offset = drsuapi_dissect_element_DsGetNCChangesRequest5_highwatermark(tvb, offset, pinfo, tree, di, drep);
 
-static int
-drsuapi_dissect_element_DsGetNCChangesRequest8_replica_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = drsuapi_dissect_bitmap_DrsOptions(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesRequest8_replica_flags, 0);
+       offset = drsuapi_dissect_element_DsGetNCChangesRequest5_uptodateness_vector(tvb, offset, pinfo, tree, di, drep);
 
-       return offset;
-}
+       offset = drsuapi_dissect_element_DsGetNCChangesRequest5_replica_flags(tvb, offset, pinfo, tree, di, drep);
 
-static int
-drsuapi_dissect_element_DsGetNCChangesRequest8_max_object_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesRequest8_max_object_count, 0);
+       offset = drsuapi_dissect_element_DsGetNCChangesRequest5_max_object_count(tvb, offset, pinfo, tree, di, drep);
 
-       return offset;
-}
+       offset = drsuapi_dissect_element_DsGetNCChangesRequest5_max_ndr_size(tvb, offset, pinfo, tree, di, drep);
 
-static int
-drsuapi_dissect_element_DsGetNCChangesRequest8_max_ndr_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesRequest8_max_ndr_size, 0);
+       offset = drsuapi_dissect_element_DsGetNCChangesRequest5_extended_op(tvb, offset, pinfo, tree, di, drep);
 
-       return offset;
-}
+       offset = drsuapi_dissect_element_DsGetNCChangesRequest5_fsmo_info(tvb, offset, pinfo, tree, di, drep);
 
-static int
-drsuapi_dissect_element_DsGetNCChangesRequest8_extended_op(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = drsuapi_dissect_enum_DsExtendedOperation(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesRequest8_extended_op, 0);
 
-       return offset;
-}
+       proto_item_set_len(item, offset-old_offset);
 
-static int
-drsuapi_dissect_element_DsGetNCChangesRequest8_fsmo_info(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesRequest8_fsmo_info, NULL);
+
+       if (di->call_data->flags & DCERPC_IS_NDR64) {
+               ALIGN_TO_8_BYTES;
+       }
 
        return offset;
 }
 
-static int
-drsuapi_dissect_element_DsGetNCChangesRequest8_partial_attribute_set(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNCChangesRequest8_partial_attribute_set_, NDR_POINTER_UNIQUE, "Pointer to Partial Attribute Set (drsuapi_DsPartialAttributeSet)",hf_drsuapi_drsuapi_DsGetNCChangesRequest8_partial_attribute_set);
 
-       return offset;
-}
+/* IDL: struct { */
+/* IDL:        [range(0,10000)] uint32 length; */
+/* IDL:        [size_is(length)] [unique(1)] uint8 *binary_oid; */
+/* IDL: } */
 
 static int
-drsuapi_dissect_element_DsGetNCChangesRequest8_partial_attribute_set_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaOID_length(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsPartialAttributeSet(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesRequest8_partial_attribute_set,0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaOID_length, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChangesRequest8_partial_attribute_set_ex(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaOID_binary_oid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNCChangesRequest8_partial_attribute_set_ex_, NDR_POINTER_UNIQUE, "Pointer to Partial Attribute Set Ex (drsuapi_DsPartialAttributeSet)",hf_drsuapi_drsuapi_DsGetNCChangesRequest8_partial_attribute_set_ex);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaOID_binary_oid_, NDR_POINTER_UNIQUE, "Pointer to Binary Oid (uint8)",hf_drsuapi_drsuapi_DsReplicaOID_binary_oid);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChangesRequest8_partial_attribute_set_ex_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaOID_binary_oid_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsPartialAttributeSet(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesRequest8_partial_attribute_set_ex,0);
+       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaOID_binary_oid__);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChangesRequest8_mapping_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaOID_binary_oid__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaOIDMapping_Ctr(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesRequest8_mapping_ctr,0);
+       offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaOID_binary_oid, 0);
 
        return offset;
 }
 
 int
-drsuapi_dissect_struct_DsGetNCChangesRequest8(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_struct_DsReplicaOID(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
        proto_item *item = NULL;
        proto_tree *tree = NULL;
        int old_offset;
 
-       ALIGN_TO_8_BYTES;
+       ALIGN_TO_5_BYTES;
 
        old_offset = offset;
 
        if (parent_tree) {
                item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsGetNCChangesRequest8);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaOID);
        }
 
-       offset = drsuapi_dissect_element_DsGetNCChangesRequest8_destination_dsa_guid(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsGetNCChangesRequest8_source_dsa_invocation_id(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsGetNCChangesRequest8_naming_context(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsGetNCChangesRequest8_highwatermark(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsGetNCChangesRequest8_uptodateness_vector(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsGetNCChangesRequest8_replica_flags(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsGetNCChangesRequest8_max_object_count(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsGetNCChangesRequest8_max_ndr_size(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsGetNCChangesRequest8_extended_op(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsGetNCChangesRequest8_fsmo_info(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsGetNCChangesRequest8_partial_attribute_set(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsGetNCChangesRequest8_partial_attribute_set_ex(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaOID_length(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsGetNCChangesRequest8_mapping_ctr(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaOID_binary_oid(tvb, offset, pinfo, tree, di, drep);
 
 
        proto_item_set_len(item, offset-old_offset);
 
 
        if (di->call_data->flags & DCERPC_IS_NDR64) {
-               ALIGN_TO_8_BYTES;
+               ALIGN_TO_5_BYTES;
        }
 
        return offset;
@@ -5983,168 +6531,2164 @@ drsuapi_dissect_struct_DsGetNCChangesRequest8(tvbuff_t *tvb _U_, int offset _U_,
 
 
 /* IDL: struct { */
-/* IDL:        GUID destination_dsa_guid; */
-/* IDL:        GUID source_dsa_invocation_id; */
-/* IDL:        [ref] drsuapi_DsReplicaObjectIdentifier *naming_context; */
-/* IDL:        drsuapi_DsReplicaHighWaterMark highwatermark; */
-/* IDL:        [unique(1)] drsuapi_DsReplicaCursorCtrEx *uptodateness_vector; */
-/* IDL:        drsuapi_DrsOptions replica_flags; */
-/* IDL:        uint32 max_object_count; */
-/* IDL:        uint32 max_ndr_size; */
-/* IDL:        drsuapi_DsExtendedOperation extended_op; */
-/* IDL:        hyper fsmo_info; */
-/* IDL:        [unique(1)] drsuapi_DsPartialAttributeSet *partial_attribute_set; */
-/* IDL:        [unique(1)] drsuapi_DsPartialAttributeSet *partial_attribute_set_ex; */
-/* IDL:        drsuapi_DsReplicaOIDMapping_Ctr mapping_ctr; */
-/* IDL:        drsuapi_DrsMoreOptions more_flags; */
+/* IDL:        uint32 id_prefix; */
+/* IDL:        drsuapi_DsReplicaOID oid; */
 /* IDL: } */
 
 static int
-drsuapi_dissect_element_DsGetNCChangesRequest10_destination_dsa_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaOIDMapping_id_prefix(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesRequest10_destination_dsa_guid, NULL);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaOIDMapping_id_prefix, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChangesRequest10_source_dsa_invocation_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaOIDMapping_oid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesRequest10_source_dsa_invocation_id, NULL);
+       offset = drsuapi_dissect_struct_DsReplicaOID(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaOIDMapping_oid,0);
 
        return offset;
 }
 
-static int
-drsuapi_dissect_element_DsGetNCChangesRequest10_naming_context(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+int
+drsuapi_dissect_struct_DsReplicaOIDMapping(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNCChangesRequest10_naming_context_, NDR_POINTER_REF, "Pointer to Naming Context (drsuapi_DsReplicaObjectIdentifier)",hf_drsuapi_drsuapi_DsGetNCChangesRequest10_naming_context);
+       proto_item *item = NULL;
+       proto_tree *tree = NULL;
+       int old_offset;
 
-       return offset;
-}
+       ALIGN_TO_5_BYTES;
 
-static int
-drsuapi_dissect_element_DsGetNCChangesRequest10_naming_context_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesRequest10_naming_context,0);
+       old_offset = offset;
+
+       if (parent_tree) {
+               item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaOIDMapping);
+       }
+
+       offset = drsuapi_dissect_element_DsReplicaOIDMapping_id_prefix(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsReplicaOIDMapping_oid(tvb, offset, pinfo, tree, di, drep);
+
+
+       proto_item_set_len(item, offset-old_offset);
+
+
+       if (di->call_data->flags & DCERPC_IS_NDR64) {
+               ALIGN_TO_5_BYTES;
+       }
 
        return offset;
 }
 
+
+/* IDL: struct { */
+/* IDL:        [range(0,0x100000)] uint32 num_mappings; */
+/* IDL:        [size_is(num_mappings)] [unique(1)] drsuapi_DsReplicaOIDMapping *mappings; */
+/* IDL: } */
+
 static int
-drsuapi_dissect_element_DsGetNCChangesRequest10_highwatermark(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaOIDMapping_Ctr_num_mappings(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaHighWaterMark(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesRequest10_highwatermark,0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaOIDMapping_Ctr_num_mappings, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChangesRequest10_uptodateness_vector(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaOIDMapping_Ctr_mappings(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNCChangesRequest10_uptodateness_vector_, NDR_POINTER_UNIQUE, "Pointer to Uptodateness Vector (drsuapi_DsReplicaCursorCtrEx)",hf_drsuapi_drsuapi_DsGetNCChangesRequest10_uptodateness_vector);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaOIDMapping_Ctr_mappings_, NDR_POINTER_UNIQUE, "Pointer to Mappings (drsuapi_DsReplicaOIDMapping)",hf_drsuapi_drsuapi_DsReplicaOIDMapping_Ctr_mappings);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChangesRequest10_uptodateness_vector_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaOIDMapping_Ctr_mappings_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaCursorCtrEx(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesRequest10_uptodateness_vector,0);
+       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaOIDMapping_Ctr_mappings__);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChangesRequest10_replica_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaOIDMapping_Ctr_mappings__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_bitmap_DrsOptions(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesRequest10_replica_flags, 0);
+       offset = drsuapi_dissect_struct_DsReplicaOIDMapping(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaOIDMapping_Ctr_mappings,0);
 
        return offset;
 }
 
-static int
-drsuapi_dissect_element_DsGetNCChangesRequest10_max_object_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+int
+drsuapi_dissect_struct_DsReplicaOIDMapping_Ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+{
+       proto_item *item = NULL;
+       proto_tree *tree = NULL;
+       int old_offset;
+
+       ALIGN_TO_5_BYTES;
+
+       old_offset = offset;
+
+       if (parent_tree) {
+               item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaOIDMapping_Ctr);
+       }
+
+       offset = drsuapi_dissect_element_DsReplicaOIDMapping_Ctr_num_mappings(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsReplicaOIDMapping_Ctr_mappings(tvb, offset, pinfo, tree, di, drep);
+
+
+       proto_item_set_len(item, offset-old_offset);
+
+
+       if (di->call_data->flags & DCERPC_IS_NDR64) {
+               ALIGN_TO_5_BYTES;
+       }
+
+       return offset;
+}
+
+
+/* IDL: enum { */
+/* IDL:        DRSUAPI_OBJECTCLASS_top=0x00010000, */
+/* IDL:        DRSUAPI_OBJECTCLASS_classSchema=0x0003000d, */
+/* IDL:        DRSUAPI_OBJECTCLASS_attributeSchema=0x0003000e, */
+/* IDL: } */
+
+int
+drsuapi_dissect_enum_DsObjectClassId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 *param _U_)
+{
+       guint32 parameter=0;
+       if (param) {
+               parameter = *param;
+       }
+       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &parameter);
+       if (param) {
+               *param = parameter;
+       }
+       return offset;
+}
+
+
+/* IDL: enum { */
+/* IDL:        DRSUAPI_ATTID_objectClass=0x00000000, */
+/* IDL:        DRSUAPI_ATTID_cn=0x00000003, */
+/* IDL:        DRSUAPI_ATTID_ou=0x0000000b, */
+/* IDL:        DRSUAPI_ATTID_description=0x0000000d, */
+/* IDL:        DRSUAPI_ATTID_member=0x0000001f, */
+/* IDL:        DRSUAPI_ATTID_distinguishedName=0x00000031, */
+/* IDL:        DRSUAPI_ATTID_instanceType=0x00020001, */
+/* IDL:        DRSUAPI_ATTID_whenCreated=0x00020002, */
+/* IDL:        DRSUAPI_ATTID_possSuperiors=0x00020008, */
+/* IDL:        DRSUAPI_ATTID_displayName=0x0002000d, */
+/* IDL:        DRSUAPI_ATTID_hasMasterNCs=0x0002000e, */
+/* IDL:        DRSUAPI_ATTID_nCName=0x00020010, */
+/* IDL:        DRSUAPI_ATTID_subClassOf=0x00020015, */
+/* IDL:        DRSUAPI_ATTID_governsID=0x00020016, */
+/* IDL:        DRSUAPI_ATTID_mustContain=0x00020018, */
+/* IDL:        DRSUAPI_ATTID_mayContain=0x00020019, */
+/* IDL:        DRSUAPI_ATTID_rDNAttId=0x0002001A, */
+/* IDL:        DRSUAPI_ATTID_attributeID=0x0002001e, */
+/* IDL:        DRSUAPI_ATTID_attributeSyntax=0x00020020, */
+/* IDL:        DRSUAPI_ATTID_isSingleValued=0x00020021, */
+/* IDL:        DRSUAPI_ATTID_rangeLower=0x00020022, */
+/* IDL:        DRSUAPI_ATTID_rangeUpper=0x00020023, */
+/* IDL:        DRSUAPI_ATTID_dMDLocation=0x00020024, */
+/* IDL:        DRSUAPI_ATTID_isDeleted=0x00020030, */
+/* IDL:        DRSUAPI_ATTID_objectVersion=0x0002004c, */
+/* IDL:        DRSUAPI_ATTID_invocationId=0x00020073, */
+/* IDL:        DRSUAPI_ATTID_showInAdvancedViewOnly=0x000200a9, */
+/* IDL:        DRSUAPI_ATTID_adminDisplayName=0x000200c2, */
+/* IDL:        DRSUAPI_ATTID_adminDescription=0x000200e2, */
+/* IDL:        DRSUAPI_ATTID_oMSyntax=0x000200e7, */
+/* IDL:        DRSUAPI_ATTID_ntSecurityDescriptor=0x00020119, */
+/* IDL:        DRSUAPI_ATTID_searchFlags=0x0002014e, */
+/* IDL:        DRSUAPI_ATTID_auxiliaryClass=0x0002015f, */
+/* IDL:        DRSUAPI_ATTID_lDAPDisplayName=0x000201cc, */
+/* IDL:        DRSUAPI_ATTID_name=0x00090001, */
+/* IDL:        DRSUAPI_ATTID_objectGUID=0x00090002, */
+/* IDL:        DRSUAPI_ATTID_replPropertyMetaData=0x00090003, */
+/* IDL:        DRSUAPI_ATTID_userAccountControl=0x00090008, */
+/* IDL:        DRSUAPI_ATTID_badPwdCount=0x0009000c, */
+/* IDL:        DRSUAPI_ATTID_codePage=0x00090010, */
+/* IDL:        DRSUAPI_ATTID_countryCode=0x00090019, */
+/* IDL:        DRSUAPI_ATTID_currentValue=0x0009001b, */
+/* IDL:        DRSUAPI_ATTID_homeDirectory=0x0009002c, */
+/* IDL:        DRSUAPI_ATTID_homeDrive=0x0009002d, */
+/* IDL:        DRSUAPI_ATTID_lastLogoff=0x00090033, */
+/* IDL:        DRSUAPI_ATTID_lastLogon=0x00090034, */
+/* IDL:        DRSUAPI_ATTID_dBCSPwd=0x00090037, */
+/* IDL:        DRSUAPI_ATTID_scriptPath=0x0009003e, */
+/* IDL:        DRSUAPI_ATTID_logonHours=0x00090040, */
+/* IDL:        DRSUAPI_ATTID_userWorkstations=0x00090056, */
+/* IDL:        DRSUAPI_ATTID_unicodePwd=0x0009005a, */
+/* IDL:        DRSUAPI_ATTID_ntPwdHistory=0x0009005e, */
+/* IDL:        DRSUAPI_ATTID_pwdLastSet=0x00090060, */
+/* IDL:        DRSUAPI_ATTID_primaryGroupID=0x00090062, */
+/* IDL:        DRSUAPI_ATTID_priorValue=0x00090064, */
+/* IDL:        DRSUAPI_ATTID_supplementalCredentials=0x0009007d, */
+/* IDL:        DRSUAPI_ATTID_trustAuthIncoming=0x00090081, */
+/* IDL:        DRSUAPI_ATTID_trustDirection=0x00090084, */
+/* IDL:        DRSUAPI_ATTID_trustPartner=0x00090085, */
+/* IDL:        DRSUAPI_ATTID_trustPosixOffset=0x00090086, */
+/* IDL:        DRSUAPI_ATTID_trustAuthOutgoing=0x00090087, */
+/* IDL:        DRSUAPI_ATTID_trustType=0x00090088, */
+/* IDL:        DRSUAPI_ATTID_userParameters=0x0009008a, */
+/* IDL:        DRSUAPI_ATTID_profilePath=0x0009008b, */
+/* IDL:        DRSUAPI_ATTID_operatorCount=0x00090090, */
+/* IDL:        DRSUAPI_ATTID_objectSid=0x00090092, */
+/* IDL:        DRSUAPI_ATTID_schemaIDGUID=0x00090094, */
+/* IDL:        DRSUAPI_ATTID_adminCount=0x00090096, */
+/* IDL:        DRSUAPI_ATTID_comment=0x0009009C, */
+/* IDL:        DRSUAPI_ATTID_accountExpires=0x0009009f, */
+/* IDL:        DRSUAPI_ATTID_lmPwdHistory=0x000900a0, */
+/* IDL:        DRSUAPI_ATTID_logonCount=0x000900a9, */
+/* IDL:        DRSUAPI_ATTID_systemPossSuperiors=0x000900c3, */
+/* IDL:        DRSUAPI_ATTID_systemMayContain=0x000900c4, */
+/* IDL:        DRSUAPI_ATTID_systemMustContain=0x000900c5, */
+/* IDL:        DRSUAPI_ATTID_systemAuxiliaryClass=0x000900c6, */
+/* IDL:        DRSUAPI_ATTID_sAMAccountName=0x000900dd, */
+/* IDL:        DRSUAPI_ATTID_sAMAccountType=0x0009012e, */
+/* IDL:        DRSUAPI_ATTID_options=0x00090133, */
+/* IDL:        DRSUAPI_ATTID_fSMORoleOwner=0x00090171, */
+/* IDL:        DRSUAPI_ATTID_systemFlags=0x00090177, */
+/* IDL:        DRSUAPI_ATTID_trustAttributes=0x000901d6, */
+/* IDL:        DRSUAPI_ATTID_trustParent=0x000901d7, */
+/* IDL:        DRSUAPI_ATTID_flatName=0x000901ff, */
+/* IDL:        DRSUAPI_ATTID_serverReference=0x00090203, */
+/* IDL:        DRSUAPI_ATTID_serverReferenceBL=0x00090204, */
+/* IDL:        DRSUAPI_ATTID_nonSecurityMember=0x00090212, */
+/* IDL:        DRSUAPI_ATTID_initialAuthIncoming=0x0009021b, */
+/* IDL:        DRSUAPI_ATTID_initialAuthOutgoing=0x0009021c, */
+/* IDL:        DRSUAPI_ATTID_wellKnownObjects=0x0009026a, */
+/* IDL:        DRSUAPI_ATTID_dNSHostName=0x0009026b, */
+/* IDL:        DRSUAPI_ATTID_isMemberOfPartialAttributeSet=0x0009027f, */
+/* IDL:        DRSUAPI_ATTID_managedBy=0x0009028d, */
+/* IDL:        DRSUAPI_ATTID_userPrincipalName=0x00090290, */
+/* IDL:        DRSUAPI_ATTID_groupType=0x000902ee, */
+/* IDL:        DRSUAPI_ATTID_servicePrincipalName=0x00090303, */
+/* IDL:        DRSUAPI_ATTID_lastKnownParent=0x0009030d, */
+/* IDL:        DRSUAPI_ATTID_objectCategory=0x0009030e, */
+/* IDL:        DRSUAPI_ATTID_gPLink=0x0009037b, */
+/* IDL:        DRSUAPI_ATTID_transportAddressAttribute=0x0009037f, */
+/* IDL:        DRSUAPI_ATTID_schemaInfo=0x0009054e, */
+/* IDL:        DRSUAPI_ATTID_msDS_Behavior_Version=0x000905b3, */
+/* IDL:        DRSUAPI_ATTID_msDS_TrustForestTrustInfo=0x000906a6, */
+/* IDL:        DRSUAPI_ATTID_msDS_KeyVersionNumber=0x000906f6, */
+/* IDL:        DRSUAPI_ATTID_msDS_NonMembers=0x00090701, */
+/* IDL:        DRSUAPI_ATTID_msDS_MembersForAzRole=0x0009070e, */
+/* IDL:        DRSUAPI_ATTID_msDS_HasDomainNCs=0x0009071c, */
+/* IDL:        DRSUAPI_ATTID_msDS_hasMasterNCs=0x0009072c, */
+/* IDL:        DRSUAPI_ATTID_msDS_NeverRevealGroup=0x00090786, */
+/* IDL:        DRSUAPI_ATTID_msDS_RevealOnDemandGroup=0x00090788, */
+/* IDL:        DRSUAPI_ATTID_msDS_SupportedEncryptionTypes=0x000907ab, */
+/* IDL:        DRSUAPI_ATTID_msDS_HostServiceAccount=0x00090808, */
+/* IDL:        DRSUAPI_ATTID_isRecycled=0x0009080a, */
+/* IDL:        DRSUAPI_ATTID_INVALID=0xFFFFFFFF, */
+/* IDL: } */
+
+int
+drsuapi_dissect_enum_DsAttributeId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 *param _U_)
+{
+       guint32 parameter=0;
+       if (param) {
+               parameter = *param;
+       }
+       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &parameter);
+       if (param) {
+               *param = parameter;
+       }
+       return offset;
+}
+
+
+/* IDL: struct { */
+/* IDL:        [value(1)] uint32 version; */
+/* IDL:        [value(0)] uint32 reserved1; */
+/* IDL:        [range(1,0x100000)] uint32 num_attids; */
+/* IDL:        [size_is(num_attids)] drsuapi_DsAttributeId attids[*]; */
+/* IDL: } */
+
+static int
+drsuapi_dissect_element_DsPartialAttributeSet_version(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsPartialAttributeSet_version, 0);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsPartialAttributeSet_reserved1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsPartialAttributeSet_reserved1, 0);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsPartialAttributeSet_num_attids(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsPartialAttributeSet_num_attids, 0);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsPartialAttributeSet_attids(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsPartialAttributeSet_attids_);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsPartialAttributeSet_attids_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = drsuapi_dissect_enum_DsAttributeId(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsPartialAttributeSet_attids, 0);
+
+       return offset;
+}
+
+int
+drsuapi_dissect_struct_DsPartialAttributeSet(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+{
+       proto_item *item = NULL;
+       proto_tree *tree = NULL;
+       int old_offset;
+
+       ALIGN_TO_4_BYTES;
+
+       old_offset = offset;
+
+       if (parent_tree) {
+               item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsPartialAttributeSet);
+       }
+
+       offset = drsuapi_dissect_element_DsPartialAttributeSet_version(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsPartialAttributeSet_reserved1(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsPartialAttributeSet_num_attids(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsPartialAttributeSet_attids(tvb, offset, pinfo, tree, di, drep);
+
+
+       proto_item_set_len(item, offset-old_offset);
+
+
+       if (di->call_data->flags & DCERPC_IS_NDR64) {
+               ALIGN_TO_4_BYTES;
+       }
+
+       return offset;
+}
+
+
+/* IDL: struct { */
+/* IDL:        GUID destination_dsa_guid; */
+/* IDL:        GUID source_dsa_invocation_id; */
+/* IDL:        [ref] drsuapi_DsReplicaObjectIdentifier *naming_context; */
+/* IDL:        drsuapi_DsReplicaHighWaterMark highwatermark; */
+/* IDL:        [unique(1)] drsuapi_DsReplicaCursorCtrEx *uptodateness_vector; */
+/* IDL:        drsuapi_DrsOptions replica_flags; */
+/* IDL:        uint32 max_object_count; */
+/* IDL:        uint32 max_ndr_size; */
+/* IDL:        drsuapi_DsExtendedOperation extended_op; */
+/* IDL:        hyper fsmo_info; */
+/* IDL:        [unique(1)] drsuapi_DsPartialAttributeSet *partial_attribute_set; */
+/* IDL:        [unique(1)] drsuapi_DsPartialAttributeSet *partial_attribute_set_ex; */
+/* IDL:        drsuapi_DsReplicaOIDMapping_Ctr mapping_ctr; */
+/* IDL: } */
+
+static int
+drsuapi_dissect_element_DsGetNCChangesRequest8_destination_dsa_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesRequest8_destination_dsa_guid, NULL);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsGetNCChangesRequest8_source_dsa_invocation_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesRequest8_source_dsa_invocation_id, NULL);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsGetNCChangesRequest8_naming_context(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNCChangesRequest8_naming_context_, NDR_POINTER_REF, "Pointer to Naming Context (drsuapi_DsReplicaObjectIdentifier)",hf_drsuapi_drsuapi_DsGetNCChangesRequest8_naming_context);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsGetNCChangesRequest8_naming_context_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesRequest8_naming_context,0);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsGetNCChangesRequest8_highwatermark(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = drsuapi_dissect_struct_DsReplicaHighWaterMark(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesRequest8_highwatermark,0);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsGetNCChangesRequest8_uptodateness_vector(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNCChangesRequest8_uptodateness_vector_, NDR_POINTER_UNIQUE, "Pointer to Uptodateness Vector (drsuapi_DsReplicaCursorCtrEx)",hf_drsuapi_drsuapi_DsGetNCChangesRequest8_uptodateness_vector);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsGetNCChangesRequest8_uptodateness_vector_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = drsuapi_dissect_struct_DsReplicaCursorCtrEx(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesRequest8_uptodateness_vector,0);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsGetNCChangesRequest8_replica_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = drsuapi_dissect_bitmap_DrsOptions(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesRequest8_replica_flags, 0);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsGetNCChangesRequest8_max_object_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesRequest8_max_object_count, 0);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsGetNCChangesRequest8_max_ndr_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesRequest8_max_ndr_size, 0);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsGetNCChangesRequest8_extended_op(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = drsuapi_dissect_enum_DsExtendedOperation(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesRequest8_extended_op, 0);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsGetNCChangesRequest8_fsmo_info(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesRequest8_fsmo_info, NULL);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsGetNCChangesRequest8_partial_attribute_set(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNCChangesRequest8_partial_attribute_set_, NDR_POINTER_UNIQUE, "Pointer to Partial Attribute Set (drsuapi_DsPartialAttributeSet)",hf_drsuapi_drsuapi_DsGetNCChangesRequest8_partial_attribute_set);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsGetNCChangesRequest8_partial_attribute_set_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = drsuapi_dissect_struct_DsPartialAttributeSet(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesRequest8_partial_attribute_set,0);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsGetNCChangesRequest8_partial_attribute_set_ex(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNCChangesRequest8_partial_attribute_set_ex_, NDR_POINTER_UNIQUE, "Pointer to Partial Attribute Set Ex (drsuapi_DsPartialAttributeSet)",hf_drsuapi_drsuapi_DsGetNCChangesRequest8_partial_attribute_set_ex);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsGetNCChangesRequest8_partial_attribute_set_ex_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = drsuapi_dissect_struct_DsPartialAttributeSet(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesRequest8_partial_attribute_set_ex,0);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsGetNCChangesRequest8_mapping_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = drsuapi_dissect_struct_DsReplicaOIDMapping_Ctr(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesRequest8_mapping_ctr,0);
+
+       return offset;
+}
+
+int
+drsuapi_dissect_struct_DsGetNCChangesRequest8(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+{
+       proto_item *item = NULL;
+       proto_tree *tree = NULL;
+       int old_offset;
+
+       ALIGN_TO_8_BYTES;
+
+       old_offset = offset;
+
+       if (parent_tree) {
+               item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsGetNCChangesRequest8);
+       }
+
+       offset = drsuapi_dissect_element_DsGetNCChangesRequest8_destination_dsa_guid(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsGetNCChangesRequest8_source_dsa_invocation_id(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsGetNCChangesRequest8_naming_context(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsGetNCChangesRequest8_highwatermark(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsGetNCChangesRequest8_uptodateness_vector(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsGetNCChangesRequest8_replica_flags(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsGetNCChangesRequest8_max_object_count(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsGetNCChangesRequest8_max_ndr_size(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsGetNCChangesRequest8_extended_op(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsGetNCChangesRequest8_fsmo_info(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsGetNCChangesRequest8_partial_attribute_set(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsGetNCChangesRequest8_partial_attribute_set_ex(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsGetNCChangesRequest8_mapping_ctr(tvb, offset, pinfo, tree, di, drep);
+
+
+       proto_item_set_len(item, offset-old_offset);
+
+
+       if (di->call_data->flags & DCERPC_IS_NDR64) {
+               ALIGN_TO_8_BYTES;
+       }
+
+       return offset;
+}
+
+
+/* IDL: struct { */
+/* IDL:        GUID destination_dsa_guid; */
+/* IDL:        GUID source_dsa_invocation_id; */
+/* IDL:        [ref] drsuapi_DsReplicaObjectIdentifier *naming_context; */
+/* IDL:        drsuapi_DsReplicaHighWaterMark highwatermark; */
+/* IDL:        [unique(1)] drsuapi_DsReplicaCursorCtrEx *uptodateness_vector; */
+/* IDL:        drsuapi_DrsOptions replica_flags; */
+/* IDL:        uint32 max_object_count; */
+/* IDL:        uint32 max_ndr_size; */
+/* IDL:        drsuapi_DsExtendedOperation extended_op; */
+/* IDL:        hyper fsmo_info; */
+/* IDL:        [unique(1)] drsuapi_DsPartialAttributeSet *partial_attribute_set; */
+/* IDL:        [unique(1)] drsuapi_DsPartialAttributeSet *partial_attribute_set_ex; */
+/* IDL:        drsuapi_DsReplicaOIDMapping_Ctr mapping_ctr; */
+/* IDL:        drsuapi_DrsMoreOptions more_flags; */
+/* IDL: } */
+
+static int
+drsuapi_dissect_element_DsGetNCChangesRequest10_destination_dsa_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesRequest10_destination_dsa_guid, NULL);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsGetNCChangesRequest10_source_dsa_invocation_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesRequest10_source_dsa_invocation_id, NULL);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsGetNCChangesRequest10_naming_context(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNCChangesRequest10_naming_context_, NDR_POINTER_REF, "Pointer to Naming Context (drsuapi_DsReplicaObjectIdentifier)",hf_drsuapi_drsuapi_DsGetNCChangesRequest10_naming_context);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsGetNCChangesRequest10_naming_context_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesRequest10_naming_context,0);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsGetNCChangesRequest10_highwatermark(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = drsuapi_dissect_struct_DsReplicaHighWaterMark(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesRequest10_highwatermark,0);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsGetNCChangesRequest10_uptodateness_vector(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNCChangesRequest10_uptodateness_vector_, NDR_POINTER_UNIQUE, "Pointer to Uptodateness Vector (drsuapi_DsReplicaCursorCtrEx)",hf_drsuapi_drsuapi_DsGetNCChangesRequest10_uptodateness_vector);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsGetNCChangesRequest10_uptodateness_vector_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = drsuapi_dissect_struct_DsReplicaCursorCtrEx(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesRequest10_uptodateness_vector,0);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsGetNCChangesRequest10_replica_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = drsuapi_dissect_bitmap_DrsOptions(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesRequest10_replica_flags, 0);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsGetNCChangesRequest10_max_object_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesRequest10_max_object_count, 0);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsGetNCChangesRequest10_max_ndr_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesRequest10_max_ndr_size, 0);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsGetNCChangesRequest10_extended_op(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = drsuapi_dissect_enum_DsExtendedOperation(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesRequest10_extended_op, 0);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsGetNCChangesRequest10_fsmo_info(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesRequest10_fsmo_info, NULL);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsGetNCChangesRequest10_partial_attribute_set(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNCChangesRequest10_partial_attribute_set_, NDR_POINTER_UNIQUE, "Pointer to Partial Attribute Set (drsuapi_DsPartialAttributeSet)",hf_drsuapi_drsuapi_DsGetNCChangesRequest10_partial_attribute_set);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsGetNCChangesRequest10_partial_attribute_set_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = drsuapi_dissect_struct_DsPartialAttributeSet(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesRequest10_partial_attribute_set,0);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsGetNCChangesRequest10_partial_attribute_set_ex(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNCChangesRequest10_partial_attribute_set_ex_, NDR_POINTER_UNIQUE, "Pointer to Partial Attribute Set Ex (drsuapi_DsPartialAttributeSet)",hf_drsuapi_drsuapi_DsGetNCChangesRequest10_partial_attribute_set_ex);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsGetNCChangesRequest10_partial_attribute_set_ex_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = drsuapi_dissect_struct_DsPartialAttributeSet(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesRequest10_partial_attribute_set_ex,0);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsGetNCChangesRequest10_mapping_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = drsuapi_dissect_struct_DsReplicaOIDMapping_Ctr(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesRequest10_mapping_ctr,0);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsGetNCChangesRequest10_more_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = drsuapi_dissect_bitmap_DrsMoreOptions(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesRequest10_more_flags, 0);
+
+       return offset;
+}
+
+int
+drsuapi_dissect_struct_DsGetNCChangesRequest10(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+{
+       proto_item *item = NULL;
+       proto_tree *tree = NULL;
+       int old_offset;
+
+       ALIGN_TO_8_BYTES;
+
+       old_offset = offset;
+
+       if (parent_tree) {
+               item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsGetNCChangesRequest10);
+       }
+
+       offset = drsuapi_dissect_element_DsGetNCChangesRequest10_destination_dsa_guid(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsGetNCChangesRequest10_source_dsa_invocation_id(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsGetNCChangesRequest10_naming_context(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsGetNCChangesRequest10_highwatermark(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsGetNCChangesRequest10_uptodateness_vector(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsGetNCChangesRequest10_replica_flags(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsGetNCChangesRequest10_max_object_count(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsGetNCChangesRequest10_max_ndr_size(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsGetNCChangesRequest10_extended_op(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsGetNCChangesRequest10_fsmo_info(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsGetNCChangesRequest10_partial_attribute_set(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsGetNCChangesRequest10_partial_attribute_set_ex(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsGetNCChangesRequest10_mapping_ctr(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsGetNCChangesRequest10_more_flags(tvb, offset, pinfo, tree, di, drep);
+
+
+       proto_item_set_len(item, offset-old_offset);
+
+
+       if (di->call_data->flags & DCERPC_IS_NDR64) {
+               ALIGN_TO_8_BYTES;
+       }
+
+       return offset;
+}
+
+
+/* IDL: struct { */
+/* IDL:        GUID destination_dsa_guid; */
+/* IDL:        GUID source_dsa_invocation_id; */
+/* IDL:        [ref] drsuapi_DsReplicaObjectIdentifier *naming_context; */
+/* IDL:        drsuapi_DsReplicaHighWaterMark highwatermark; */
+/* IDL:        [unique(1)] drsuapi_DsReplicaCursorCtrEx *uptodateness_vector; */
+/* IDL:        drsuapi_DrsOptions replica_flags; */
+/* IDL:        uint32 max_object_count; */
+/* IDL:        uint32 max_ndr_size; */
+/* IDL:        drsuapi_DsExtendedOperation extended_op; */
+/* IDL:        hyper fsmo_info; */
+/* IDL:        [unique(1)] drsuapi_DsPartialAttributeSet *partial_attribute_set; */
+/* IDL:        [unique(1)] drsuapi_DsPartialAttributeSet *partial_attribute_set_ex; */
+/* IDL:        drsuapi_DsReplicaOIDMapping_Ctr mapping_ctr; */
+/* IDL:        drsuapi_DrsMoreOptions more_flags; */
+/* IDL:        GUID correlationID; */
+/* IDL:        [unique(1)] [value(NULL)] drsuapi_VAR_SIZE_BUFFER_WITH_VERSION *reserved_buffer; */
+/* IDL: } */
+
+static int
+drsuapi_dissect_element_DsGetNCChangesRequest11_destination_dsa_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesRequest11_destination_dsa_guid, NULL);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsGetNCChangesRequest11_source_dsa_invocation_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesRequest11_source_dsa_invocation_id, NULL);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsGetNCChangesRequest11_naming_context(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNCChangesRequest11_naming_context_, NDR_POINTER_REF, "Pointer to Naming Context (drsuapi_DsReplicaObjectIdentifier)",hf_drsuapi_drsuapi_DsGetNCChangesRequest11_naming_context);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsGetNCChangesRequest11_naming_context_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesRequest11_naming_context,0);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsGetNCChangesRequest11_highwatermark(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = drsuapi_dissect_struct_DsReplicaHighWaterMark(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesRequest11_highwatermark,0);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsGetNCChangesRequest11_uptodateness_vector(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNCChangesRequest11_uptodateness_vector_, NDR_POINTER_UNIQUE, "Pointer to Uptodateness Vector (drsuapi_DsReplicaCursorCtrEx)",hf_drsuapi_drsuapi_DsGetNCChangesRequest11_uptodateness_vector);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsGetNCChangesRequest11_uptodateness_vector_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = drsuapi_dissect_struct_DsReplicaCursorCtrEx(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesRequest11_uptodateness_vector,0);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsGetNCChangesRequest11_replica_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = drsuapi_dissect_bitmap_DrsOptions(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesRequest11_replica_flags, 0);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsGetNCChangesRequest11_max_object_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesRequest11_max_object_count, 0);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsGetNCChangesRequest11_max_ndr_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesRequest11_max_ndr_size, 0);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsGetNCChangesRequest11_extended_op(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = drsuapi_dissect_enum_DsExtendedOperation(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesRequest11_extended_op, 0);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsGetNCChangesRequest11_fsmo_info(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesRequest11_fsmo_info, NULL);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsGetNCChangesRequest11_partial_attribute_set(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNCChangesRequest11_partial_attribute_set_, NDR_POINTER_UNIQUE, "Pointer to Partial Attribute Set (drsuapi_DsPartialAttributeSet)",hf_drsuapi_drsuapi_DsGetNCChangesRequest11_partial_attribute_set);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsGetNCChangesRequest11_partial_attribute_set_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = drsuapi_dissect_struct_DsPartialAttributeSet(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesRequest11_partial_attribute_set,0);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsGetNCChangesRequest11_partial_attribute_set_ex(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNCChangesRequest11_partial_attribute_set_ex_, NDR_POINTER_UNIQUE, "Pointer to Partial Attribute Set Ex (drsuapi_DsPartialAttributeSet)",hf_drsuapi_drsuapi_DsGetNCChangesRequest11_partial_attribute_set_ex);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsGetNCChangesRequest11_partial_attribute_set_ex_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = drsuapi_dissect_struct_DsPartialAttributeSet(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesRequest11_partial_attribute_set_ex,0);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsGetNCChangesRequest11_mapping_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = drsuapi_dissect_struct_DsReplicaOIDMapping_Ctr(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesRequest11_mapping_ctr,0);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsGetNCChangesRequest11_more_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = drsuapi_dissect_bitmap_DrsMoreOptions(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesRequest11_more_flags, 0);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsGetNCChangesRequest11_correlationID(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesRequest11_correlationID, NULL);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsGetNCChangesRequest11_reserved_buffer(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNCChangesRequest11_reserved_buffer_, NDR_POINTER_UNIQUE, "Pointer to Reserved Buffer (drsuapi_VAR_SIZE_BUFFER_WITH_VERSION)",hf_drsuapi_drsuapi_DsGetNCChangesRequest11_reserved_buffer);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsGetNCChangesRequest11_reserved_buffer_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = drsuapi_dissect_struct_VAR_SIZE_BUFFER_WITH_VERSION(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesRequest11_reserved_buffer,0);
+
+       return offset;
+}
+
+int
+drsuapi_dissect_struct_DsGetNCChangesRequest11(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+{
+       proto_item *item = NULL;
+       proto_tree *tree = NULL;
+       int old_offset;
+
+       ALIGN_TO_8_BYTES;
+
+       old_offset = offset;
+
+       if (parent_tree) {
+               item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsGetNCChangesRequest11);
+       }
+
+       offset = drsuapi_dissect_element_DsGetNCChangesRequest11_destination_dsa_guid(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsGetNCChangesRequest11_source_dsa_invocation_id(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsGetNCChangesRequest11_naming_context(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsGetNCChangesRequest11_highwatermark(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsGetNCChangesRequest11_uptodateness_vector(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsGetNCChangesRequest11_replica_flags(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsGetNCChangesRequest11_max_object_count(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsGetNCChangesRequest11_max_ndr_size(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsGetNCChangesRequest11_extended_op(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsGetNCChangesRequest11_fsmo_info(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsGetNCChangesRequest11_partial_attribute_set(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsGetNCChangesRequest11_partial_attribute_set_ex(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsGetNCChangesRequest11_mapping_ctr(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsGetNCChangesRequest11_more_flags(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsGetNCChangesRequest11_correlationID(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsGetNCChangesRequest11_reserved_buffer(tvb, offset, pinfo, tree, di, drep);
+
+
+       proto_item_set_len(item, offset-old_offset);
+
+
+       if (di->call_data->flags & DCERPC_IS_NDR64) {
+               ALIGN_TO_8_BYTES;
+       }
+
+       return offset;
+}
+
+
+/* IDL: [switch_type(uint32)] union { */
+/* IDL: [case(5)] [case(5)] drsuapi_DsGetNCChangesRequest5 req5; */
+/* IDL: [case(8)] [case(8)] drsuapi_DsGetNCChangesRequest8 req8; */
+/* IDL: [case(10)] [case(10)] drsuapi_DsGetNCChangesRequest10 req10; */
+/* IDL: [case(11)] [case(11)] drsuapi_DsGetNCChangesRequest11 req11; */
+/* IDL: } */
+
+static int
+drsuapi_dissect_element_DsGetNCChangesRequest_req5(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = drsuapi_dissect_struct_DsGetNCChangesRequest5(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesRequest_req5,0);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsGetNCChangesRequest_req8(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = drsuapi_dissect_struct_DsGetNCChangesRequest8(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesRequest_req8,0);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsGetNCChangesRequest_req10(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = drsuapi_dissect_struct_DsGetNCChangesRequest10(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesRequest_req10,0);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsGetNCChangesRequest_req11(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = drsuapi_dissect_struct_DsGetNCChangesRequest11(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesRequest_req11,0);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_DsGetNCChangesRequest(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+{
+       proto_item *item = NULL;
+       proto_tree *tree = NULL;
+       int old_offset;
+       guint32 level;
+
+       old_offset = offset;
+       if (parent_tree) {
+               tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_DsGetNCChangesRequest, &item, "drsuapi_DsGetNCChangesRequest");
+       }
+
+       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level);
+       ALIGN_TO_8_BYTES;
+
+       switch(level) {
+               case 5:
+                       offset = drsuapi_dissect_element_DsGetNCChangesRequest_req5(tvb, offset, pinfo, tree, di, drep);
+               break;
+
+               case 8:
+                       offset = drsuapi_dissect_element_DsGetNCChangesRequest_req8(tvb, offset, pinfo, tree, di, drep);
+               break;
+
+               case 10:
+                       offset = drsuapi_dissect_element_DsGetNCChangesRequest_req10(tvb, offset, pinfo, tree, di, drep);
+               break;
+
+               case 11:
+                       offset = drsuapi_dissect_element_DsGetNCChangesRequest_req11(tvb, offset, pinfo, tree, di, drep);
+               break;
+       }
+       proto_item_set_len(item, offset-old_offset);
+
+
+       return offset;
+}
+
+/* IDL: struct { */
+/* IDL:        GUID source_dsa_invocation_id; */
+/* IDL:        hyper highest_usn; */
+/* IDL:        NTTIME last_sync_success; */
+/* IDL: } */
+
+static int
+drsuapi_dissect_element_DsReplicaCursor2_source_dsa_invocation_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaCursor2_source_dsa_invocation_id, NULL);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsReplicaCursor2_highest_usn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaCursor2_highest_usn, NULL);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsReplicaCursor2_last_sync_success(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaCursor2_last_sync_success);
+
+       return offset;
+}
+
+int
+drsuapi_dissect_struct_DsReplicaCursor2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+{
+       proto_item *item = NULL;
+       proto_tree *tree = NULL;
+       int old_offset;
+
+       ALIGN_TO_8_BYTES;
+
+       old_offset = offset;
+
+       if (parent_tree) {
+               item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaCursor2);
+       }
+
+       offset = drsuapi_dissect_element_DsReplicaCursor2_source_dsa_invocation_id(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsReplicaCursor2_highest_usn(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsReplicaCursor2_last_sync_success(tvb, offset, pinfo, tree, di, drep);
+
+
+       proto_item_set_len(item, offset-old_offset);
+
+
+       if (di->call_data->flags & DCERPC_IS_NDR64) {
+               ALIGN_TO_8_BYTES;
+       }
+
+       return offset;
+}
+
+
+/* IDL: struct { */
+/* IDL:        [value(2)] uint32 version; */
+/* IDL:        [value(0)] uint32 reserved1; */
+/* IDL:        [range(0,0x100000)] uint32 count; */
+/* IDL:        [value(0)] uint32 reserved2; */
+/* IDL:        [size_is(count)] drsuapi_DsReplicaCursor2 cursors[*]; */
+/* IDL: } */
+
+static int
+drsuapi_dissect_element_DsReplicaCursor2CtrEx_version(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaCursor2CtrEx_version, 0);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsReplicaCursor2CtrEx_reserved1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaCursor2CtrEx_reserved1, 0);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsReplicaCursor2CtrEx_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaCursor2CtrEx_count, 0);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsReplicaCursor2CtrEx_reserved2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaCursor2CtrEx_reserved2, 0);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsReplicaCursor2CtrEx_cursors(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaCursor2CtrEx_cursors_);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsReplicaCursor2CtrEx_cursors_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = drsuapi_dissect_struct_DsReplicaCursor2(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaCursor2CtrEx_cursors,0);
+
+       return offset;
+}
+
+int
+drsuapi_dissect_struct_DsReplicaCursor2CtrEx(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+{
+       proto_item *item = NULL;
+       proto_tree *tree = NULL;
+       int old_offset;
+
+       ALIGN_TO_8_BYTES;
+
+       old_offset = offset;
+
+       if (parent_tree) {
+               item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaCursor2CtrEx);
+       }
+
+       offset = drsuapi_dissect_element_DsReplicaCursor2CtrEx_version(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsReplicaCursor2CtrEx_reserved1(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsReplicaCursor2CtrEx_count(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsReplicaCursor2CtrEx_reserved2(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsReplicaCursor2CtrEx_cursors(tvb, offset, pinfo, tree, di, drep);
+
+
+       proto_item_set_len(item, offset-old_offset);
+
+
+       if (di->call_data->flags & DCERPC_IS_NDR64) {
+               ALIGN_TO_8_BYTES;
+       }
+
+       return offset;
+}
+
+
+/* IDL: struct { */
+/* IDL:        [range(0,26214400)] [value(ndr_size_DATA_BLOB(0,blob,0))] uint32 __ndr_size; */
+/* IDL:        [unique(1)] DATA_BLOB *blob; */
+/* IDL: } */
+
+static int
+drsuapi_dissect_element_DsAttributeValue___ndr_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAttributeValue___ndr_size, 0);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsAttributeValue_blob(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsAttributeValue_blob_, NDR_POINTER_UNIQUE, "Pointer to Blob (DATA_BLOB)",hf_drsuapi_drsuapi_DsAttributeValue_blob);
+
+       return offset;
+}
+
+int
+drsuapi_dissect_struct_DsAttributeValue(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+{
+       proto_item *item = NULL;
+       proto_tree *tree = NULL;
+       int old_offset;
+
+       ALIGN_TO_5_BYTES;
+
+       old_offset = offset;
+
+       if (parent_tree) {
+               item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsAttributeValue);
+       }
+
+       offset = drsuapi_dissect_element_DsAttributeValue___ndr_size(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsAttributeValue_blob(tvb, offset, pinfo, tree, di, drep);
+
+
+       proto_item_set_len(item, offset-old_offset);
+
+
+       if (di->call_data->flags & DCERPC_IS_NDR64) {
+               ALIGN_TO_5_BYTES;
+       }
+
+       return offset;
+}
+
+
+/* IDL: struct { */
+/* IDL:        [range(0,10485760)] uint32 num_values; */
+/* IDL:        [size_is(num_values)] [unique(1)] drsuapi_DsAttributeValue *values; */
+/* IDL: } */
+
+static int
+drsuapi_dissect_element_DsAttributeValueCtr_num_values(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAttributeValueCtr_num_values, 0);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsAttributeValueCtr_values(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsAttributeValueCtr_values_, NDR_POINTER_UNIQUE, "Pointer to Values (drsuapi_DsAttributeValue)",hf_drsuapi_drsuapi_DsAttributeValueCtr_values);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsAttributeValueCtr_values_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsAttributeValueCtr_values__);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsAttributeValueCtr_values__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = drsuapi_dissect_struct_DsAttributeValue(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAttributeValueCtr_values,0);
+
+       return offset;
+}
+
+int
+drsuapi_dissect_struct_DsAttributeValueCtr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+{
+       proto_item *item = NULL;
+       proto_tree *tree = NULL;
+       int old_offset;
+
+       ALIGN_TO_5_BYTES;
+
+       old_offset = offset;
+
+       if (parent_tree) {
+               item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsAttributeValueCtr);
+       }
+
+       offset = drsuapi_dissect_element_DsAttributeValueCtr_num_values(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsAttributeValueCtr_values(tvb, offset, pinfo, tree, di, drep);
+
+
+       proto_item_set_len(item, offset-old_offset);
+
+
+       if (di->call_data->flags & DCERPC_IS_NDR64) {
+               ALIGN_TO_5_BYTES;
+       }
+
+       return offset;
+}
+
+
+/* IDL: struct { */
+/* IDL:        [value(ndr_size_drsuapi_DsReplicaObjectIdentifier3(r,ndr->flags))] uint32 __ndr_size; */
+/* IDL:        [value(ndr_size_dom_sid28(&sid,ndr->flags))] uint32 __ndr_size_sid; */
+/* IDL:        GUID guid; */
+/* IDL:        dom_sid28 sid; */
+/* IDL:        [value(strlen_m(dn))] uint32 __ndr_size_dn; */
+/* IDL:        [charset(UTF16)] uint16 dn[__ndr_size_dn+1]; */
+/* IDL: } */
+
+static int
+drsuapi_dissect_element_DsReplicaObjectIdentifier3___ndr_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjectIdentifier3___ndr_size, 0);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsReplicaObjectIdentifier3___ndr_size_sid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjectIdentifier3___ndr_size_sid, 0);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsReplicaObjectIdentifier3_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjectIdentifier3_guid, NULL);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsReplicaObjectIdentifier3_sid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+
+               di->hf_index = hf_drsuapi_drsuapi_DsReplicaObjectIdentifier3_sid;
+
+               offset = dissect_ndr_nt_SID28(tvb, offset, pinfo, tree, di, drep);
+
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsReplicaObjectIdentifier3___ndr_size_dn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjectIdentifier3___ndr_size_dn, 0);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsReplicaObjectIdentifier3_dn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       /* TODO drsuapi_dissect_element_DsReplicaObjectIdentifier3_dn IS_INLINE */
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsReplicaObjectIdentifier3_dn_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjectIdentifier3_dn, 0);
+
+       return offset;
+}
+
+int
+drsuapi_dissect_struct_DsReplicaObjectIdentifier3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+{
+       proto_item *item = NULL;
+       proto_tree *tree = NULL;
+       int old_offset;
+
+       ALIGN_TO_4_BYTES;
+
+       old_offset = offset;
+
+       if (parent_tree) {
+               item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaObjectIdentifier3);
+       }
+
+       offset = drsuapi_dissect_element_DsReplicaObjectIdentifier3___ndr_size(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsReplicaObjectIdentifier3___ndr_size_sid(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsReplicaObjectIdentifier3_guid(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsReplicaObjectIdentifier3_sid(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsReplicaObjectIdentifier3___ndr_size_dn(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsReplicaObjectIdentifier3_dn(tvb, offset, pinfo, tree, di, drep);
+
+
+       proto_item_set_len(item, offset-old_offset);
+
+
+       if (di->call_data->flags & DCERPC_IS_NDR64) {
+               ALIGN_TO_4_BYTES;
+       }
+
+       return offset;
+}
+
+
+/* IDL: struct { */
+/* IDL:        [value(ndr_size_drsuapi_DsReplicaObjectIdentifier3Binary_without_Binary(r,ndr->flags))] uint32 __ndr_size; */
+/* IDL:        [value(ndr_size_dom_sid28(&sid,ndr->flags))] uint32 __ndr_size_sid; */
+/* IDL:        GUID guid; */
+/* IDL:        dom_sid28 sid; */
+/* IDL:        [value(strlen_m(dn))] uint32 __ndr_size_dn; */
+/* IDL:        [charset(UTF16)] uint16 dn[__ndr_size_dn+1]; */
+/* IDL:        [value(binary.length+4)] uint32 __ndr_size_binary; */
+/* IDL:        [flag(LIBNDR_FLAG_REMAINING)] DATA_BLOB binary; */
+/* IDL: } */
+
+static int
+drsuapi_dissect_element_DsReplicaObjectIdentifier3Binary___ndr_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjectIdentifier3Binary___ndr_size, 0);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsReplicaObjectIdentifier3Binary___ndr_size_sid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjectIdentifier3Binary___ndr_size_sid, 0);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsReplicaObjectIdentifier3Binary_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjectIdentifier3Binary_guid, NULL);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsReplicaObjectIdentifier3Binary_sid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+
+               di->hf_index = hf_drsuapi_drsuapi_DsReplicaObjectIdentifier3Binary_sid;
+
+               offset = dissect_ndr_nt_SID28(tvb, offset, pinfo, tree, di, drep);
+
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsReplicaObjectIdentifier3Binary___ndr_size_dn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjectIdentifier3Binary___ndr_size_dn, 0);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsReplicaObjectIdentifier3Binary_dn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       /* TODO drsuapi_dissect_element_DsReplicaObjectIdentifier3Binary_dn IS_INLINE */
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsReplicaObjectIdentifier3Binary_dn_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjectIdentifier3Binary_dn, 0);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsReplicaObjectIdentifier3Binary___ndr_size_binary(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjectIdentifier3Binary___ndr_size_binary, 0);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsReplicaObjectIdentifier3Binary_binary(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_datablob(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjectIdentifier3Binary_binary, 1);
+
+       return offset;
+}
+
+int
+drsuapi_dissect_struct_DsReplicaObjectIdentifier3Binary(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+{
+       proto_item *item = NULL;
+       proto_tree *tree = NULL;
+       int old_offset;
+
+       ALIGN_TO_4_BYTES;
+
+       old_offset = offset;
+
+       if (parent_tree) {
+               item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaObjectIdentifier3Binary);
+       }
+
+       offset = drsuapi_dissect_element_DsReplicaObjectIdentifier3Binary___ndr_size(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsReplicaObjectIdentifier3Binary___ndr_size_sid(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsReplicaObjectIdentifier3Binary_guid(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsReplicaObjectIdentifier3Binary_sid(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsReplicaObjectIdentifier3Binary___ndr_size_dn(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsReplicaObjectIdentifier3Binary_dn(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsReplicaObjectIdentifier3Binary___ndr_size_binary(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsReplicaObjectIdentifier3Binary_binary(tvb, offset, pinfo, tree, di, drep);
+
+
+       proto_item_set_len(item, offset-old_offset);
+
+
+       if (di->call_data->flags & DCERPC_IS_NDR64) {
+               ALIGN_TO_4_BYTES;
+       }
+
+       return offset;
+}
+
+
+/* IDL: struct { */
+/* IDL:        drsuapi_DsAttributeId attid; */
+/* IDL:        drsuapi_DsAttributeValueCtr value_ctr; */
+/* IDL: } */
+
+static int
+drsuapi_dissect_element_DsReplicaAttribute_value_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = drsuapi_dissect_struct_DsAttributeValueCtr(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaAttribute_value_ctr,0);
+
+       return offset;
+}
+
+
+/* IDL: struct { */
+/* IDL:        [range(0,1048576)] uint32 num_attributes; */
+/* IDL:        [size_is(num_attributes)] [unique(1)] drsuapi_DsReplicaAttribute *attributes; */
+/* IDL: } */
+
+static int
+drsuapi_dissect_element_DsReplicaAttributeCtr_num_attributes(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAttributeCtr_num_attributes, 0);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsReplicaAttributeCtr_attributes(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaAttributeCtr_attributes_, NDR_POINTER_UNIQUE, "Pointer to Attributes (drsuapi_DsReplicaAttribute)",hf_drsuapi_drsuapi_DsReplicaAttributeCtr_attributes);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsReplicaAttributeCtr_attributes_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaAttributeCtr_attributes__);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsReplicaAttributeCtr_attributes__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = drsuapi_dissect_struct_DsReplicaAttribute(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaAttributeCtr_attributes,0);
+
+       return offset;
+}
+
+int
+drsuapi_dissect_struct_DsReplicaAttributeCtr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+{
+       proto_item *item = NULL;
+       proto_tree *tree = NULL;
+       int old_offset;
+
+       ALIGN_TO_5_BYTES;
+
+       old_offset = offset;
+
+       if (parent_tree) {
+               item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaAttributeCtr);
+       }
+
+       offset = drsuapi_dissect_element_DsReplicaAttributeCtr_num_attributes(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsReplicaAttributeCtr_attributes(tvb, offset, pinfo, tree, di, drep);
+
+
+       proto_item_set_len(item, offset-old_offset);
+
+
+       if (di->call_data->flags & DCERPC_IS_NDR64) {
+               ALIGN_TO_5_BYTES;
+       }
+
+       return offset;
+}
+
+
+/* IDL: bitmap { */
+/* IDL:        DRSUAPI_DS_REPLICA_OBJECT_FROM_MASTER =  0x00000001 , */
+/* IDL:        DRSUAPI_DS_REPLICA_OBJECT_DYNAMIC =  0x00000002 , */
+/* IDL:        DRSUAPI_DS_REPLICA_OBJECT_REMOTE_MODIFY =  0x00010000 , */
+/* IDL: } */
+
+int
+drsuapi_dissect_bitmap_DsReplicaObjectFlags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+{
+       proto_item *item;
+       static int * const drsuapi_drsuapi_DsReplicaObjectFlags_fields[] = {
+               &hf_drsuapi_drsuapi_DsReplicaObjectFlags_DRSUAPI_DS_REPLICA_OBJECT_FROM_MASTER,
+               &hf_drsuapi_drsuapi_DsReplicaObjectFlags_DRSUAPI_DS_REPLICA_OBJECT_DYNAMIC,
+               &hf_drsuapi_drsuapi_DsReplicaObjectFlags_DRSUAPI_DS_REPLICA_OBJECT_REMOTE_MODIFY,
+               NULL
+       };
+       guint32 flags;
+       ALIGN_TO_4_BYTES;
+
+       item = proto_tree_add_bitmask_with_flags(parent_tree, tvb, offset, hf_index,
+                               ett_drsuapi_drsuapi_DsReplicaObjectFlags, drsuapi_drsuapi_DsReplicaObjectFlags_fields, DREP_ENC_INTEGER(drep), BMT_NO_FALSE);
+
+       offset = dissect_ndr_uint32(tvb, offset, pinfo, parent_tree, di, drep, -1, &flags);
+
+       if (!flags)
+               proto_item_append_text(item, ": (No values set)");
+
+       if (flags & (~0x00010003)) {
+               flags &= (~0x00010003);
+               proto_item_append_text(item, "Unknown bitmap value 0x%x", flags);
+       }
+
+       return offset;
+}
+
+
+/* IDL: struct { */
+/* IDL:        [unique(1)] drsuapi_DsReplicaObjectIdentifier *identifier; */
+/* IDL:        drsuapi_DsReplicaObjectFlags flags; */
+/* IDL:        drsuapi_DsReplicaAttributeCtr attribute_ctr; */
+/* IDL: } */
+
+static int
+drsuapi_dissect_element_DsReplicaObject_identifier(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaObject_identifier_, NDR_POINTER_UNIQUE, "Pointer to Identifier (drsuapi_DsReplicaObjectIdentifier)",hf_drsuapi_drsuapi_DsReplicaObject_identifier);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsReplicaObject_identifier_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaObject_identifier,0);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsReplicaObject_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = drsuapi_dissect_bitmap_DsReplicaObjectFlags(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObject_flags, 0);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsReplicaObject_attribute_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = drsuapi_dissect_struct_DsReplicaAttributeCtr(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaObject_attribute_ctr,0);
+
+       return offset;
+}
+
+
+/* IDL: struct { */
+/* IDL:        uint32 version; */
+/* IDL:        NTTIME_1sec originating_change_time; */
+/* IDL:        GUID originating_invocation_id; */
+/* IDL:        hyper originating_usn; */
+/* IDL: } */
+
+static int
+drsuapi_dissect_element_DsReplicaMetaData_version(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaMetaData_version, 0);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsReplicaMetaData_originating_change_time(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaMetaData_originating_change_time);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsReplicaMetaData_originating_invocation_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaMetaData_originating_invocation_id, NULL);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsReplicaMetaData_originating_usn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaMetaData_originating_usn, NULL);
+
+       return offset;
+}
+
+int
+drsuapi_dissect_struct_DsReplicaMetaData(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+{
+       proto_item *item = NULL;
+       proto_tree *tree = NULL;
+       int old_offset;
+
+       ALIGN_TO_8_BYTES;
+
+       old_offset = offset;
+
+       if (parent_tree) {
+               item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaMetaData);
+       }
+
+       offset = drsuapi_dissect_element_DsReplicaMetaData_version(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsReplicaMetaData_originating_change_time(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsReplicaMetaData_originating_invocation_id(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsReplicaMetaData_originating_usn(tvb, offset, pinfo, tree, di, drep);
+
+
+       proto_item_set_len(item, offset-old_offset);
+
+
+       if (di->call_data->flags & DCERPC_IS_NDR64) {
+               ALIGN_TO_8_BYTES;
+       }
+
+       return offset;
+}
+
+
+/* IDL: struct { */
+/* IDL:        [range(0,1048576)] uint32 count; */
+/* IDL:        [size_is(count)] drsuapi_DsReplicaMetaData meta_data[*]; */
+/* IDL: } */
+
+static int
+drsuapi_dissect_element_DsReplicaMetaDataCtr_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaMetaDataCtr_count, 0);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsReplicaMetaDataCtr_meta_data(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaMetaDataCtr_meta_data_);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsReplicaMetaDataCtr_meta_data_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = drsuapi_dissect_struct_DsReplicaMetaData(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaMetaDataCtr_meta_data,0);
+
+       return offset;
+}
+
+int
+drsuapi_dissect_struct_DsReplicaMetaDataCtr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+{
+       proto_item *item = NULL;
+       proto_tree *tree = NULL;
+       int old_offset;
+
+       ALIGN_TO_8_BYTES;
+
+       old_offset = offset;
+
+       if (parent_tree) {
+               item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaMetaDataCtr);
+       }
+
+       offset = drsuapi_dissect_element_DsReplicaMetaDataCtr_count(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsReplicaMetaDataCtr_meta_data(tvb, offset, pinfo, tree, di, drep);
+
+
+       proto_item_set_len(item, offset-old_offset);
+
+
+       if (di->call_data->flags & DCERPC_IS_NDR64) {
+               ALIGN_TO_8_BYTES;
+       }
+
+       return offset;
+}
+
+
+/* IDL: struct { */
+/* IDL:        [max_recursion(20000)] [unique(1)] drsuapi_DsReplicaObjectListItemEx *next_object; */
+/* IDL:        drsuapi_DsReplicaObject object; */
+/* IDL:        uint32 is_nc_prefix; */
+/* IDL:        [unique(1)] GUID *parent_object_guid; */
+/* IDL:        [unique(1)] drsuapi_DsReplicaMetaDataCtr *meta_data_ctr; */
+/* IDL: } */
+
+static int
+drsuapi_dissect_element_DsReplicaObjectListItemEx_next_object(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesRequest10_max_object_count, 0);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaObjectListItemEx_next_object_, NDR_POINTER_UNIQUE, "Pointer to Next Object (drsuapi_DsReplicaObjectListItemEx)",hf_drsuapi_drsuapi_DsReplicaObjectListItemEx_next_object);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChangesRequest10_max_ndr_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaObjectListItemEx_object(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesRequest10_max_ndr_size, 0);
+       offset = drsuapi_dissect_struct_DsReplicaObject(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaObjectListItemEx_object,0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChangesRequest10_extended_op(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaObjectListItemEx_is_nc_prefix(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_enum_DsExtendedOperation(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesRequest10_extended_op, 0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjectListItemEx_is_nc_prefix, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChangesRequest10_fsmo_info(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaObjectListItemEx_parent_object_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesRequest10_fsmo_info, NULL);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaObjectListItemEx_parent_object_guid_, NDR_POINTER_UNIQUE, "Pointer to Parent Object Guid (GUID)",hf_drsuapi_drsuapi_DsReplicaObjectListItemEx_parent_object_guid);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChangesRequest10_partial_attribute_set(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaObjectListItemEx_parent_object_guid_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNCChangesRequest10_partial_attribute_set_, NDR_POINTER_UNIQUE, "Pointer to Partial Attribute Set (drsuapi_DsPartialAttributeSet)",hf_drsuapi_drsuapi_DsGetNCChangesRequest10_partial_attribute_set);
+       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjectListItemEx_parent_object_guid, NULL);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChangesRequest10_partial_attribute_set_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaObjectListItemEx_meta_data_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsPartialAttributeSet(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesRequest10_partial_attribute_set,0);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaObjectListItemEx_meta_data_ctr_, NDR_POINTER_UNIQUE, "Pointer to Meta Data Ctr (drsuapi_DsReplicaMetaDataCtr)",hf_drsuapi_drsuapi_DsReplicaObjectListItemEx_meta_data_ctr);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChangesRequest10_partial_attribute_set_ex(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaObjectListItemEx_meta_data_ctr_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNCChangesRequest10_partial_attribute_set_ex_, NDR_POINTER_UNIQUE, "Pointer to Partial Attribute Set Ex (drsuapi_DsPartialAttributeSet)",hf_drsuapi_drsuapi_DsGetNCChangesRequest10_partial_attribute_set_ex);
+       offset = drsuapi_dissect_struct_DsReplicaMetaDataCtr(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaObjectListItemEx_meta_data_ctr,0);
+
+       return offset;
+}
+
+int
+drsuapi_dissect_struct_DsReplicaObjectListItemEx(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+{
+       proto_item *item = NULL;
+       proto_tree *tree = NULL;
+       int old_offset;
+
+       ALIGN_TO_5_BYTES;
+
+       old_offset = offset;
+
+       if (parent_tree) {
+               item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaObjectListItemEx);
+       }
+
+       offset = drsuapi_dissect_element_DsReplicaObjectListItemEx_next_object(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsReplicaObjectListItemEx_object(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsReplicaObjectListItemEx_is_nc_prefix(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsReplicaObjectListItemEx_parent_object_guid(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsReplicaObjectListItemEx_meta_data_ctr(tvb, offset, pinfo, tree, di, drep);
+
+
+       proto_item_set_len(item, offset-old_offset);
+
+
+       if (di->call_data->flags & DCERPC_IS_NDR64) {
+               ALIGN_TO_5_BYTES;
+       }
+
+       return offset;
+}
+
+
+/* IDL: struct { */
+/* IDL:        GUID source_dsa_guid; */
+/* IDL:        GUID source_dsa_invocation_id; */
+/* IDL:        [unique(1)] drsuapi_DsReplicaObjectIdentifier *naming_context; */
+/* IDL:        drsuapi_DsReplicaHighWaterMark old_highwatermark; */
+/* IDL:        drsuapi_DsReplicaHighWaterMark new_highwatermark; */
+/* IDL:        [unique(1)] drsuapi_DsReplicaCursorCtrEx *uptodateness_vector; */
+/* IDL:        drsuapi_DsReplicaOIDMapping_Ctr mapping_ctr; */
+/* IDL:        drsuapi_DsExtendedError extended_ret; */
+/* IDL:        uint32 object_count; */
+/* IDL:        [value(ndr_size_drsuapi_DsGetNCChangesCtr1(r,ndr->flags)+55)] uint32 __ndr_size; */
+/* IDL:        [unique(1)] drsuapi_DsReplicaObjectListItemEx *first_object; */
+/* IDL:        uint32 more_data; */
+/* IDL: } */
+
+static int
+drsuapi_dissect_element_DsGetNCChangesCtr1_source_dsa_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesCtr1_source_dsa_guid, NULL);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChangesRequest10_partial_attribute_set_ex_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetNCChangesCtr1_source_dsa_invocation_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsPartialAttributeSet(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesRequest10_partial_attribute_set_ex,0);
+       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesCtr1_source_dsa_invocation_id, NULL);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChangesRequest10_mapping_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetNCChangesCtr1_naming_context(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaOIDMapping_Ctr(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesRequest10_mapping_ctr,0);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNCChangesCtr1_naming_context_, NDR_POINTER_UNIQUE, "Pointer to Naming Context (drsuapi_DsReplicaObjectIdentifier)",hf_drsuapi_drsuapi_DsGetNCChangesCtr1_naming_context);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChangesRequest10_more_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetNCChangesCtr1_naming_context_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_bitmap_DrsMoreOptions(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesRequest10_more_flags, 0);
+       offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesCtr1_naming_context,0);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsGetNCChangesCtr1_old_highwatermark(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = drsuapi_dissect_struct_DsReplicaHighWaterMark(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesCtr1_old_highwatermark,0);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsGetNCChangesCtr1_new_highwatermark(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = drsuapi_dissect_struct_DsReplicaHighWaterMark(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesCtr1_new_highwatermark,0);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsGetNCChangesCtr1_uptodateness_vector(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNCChangesCtr1_uptodateness_vector_, NDR_POINTER_UNIQUE, "Pointer to Uptodateness Vector (drsuapi_DsReplicaCursorCtrEx)",hf_drsuapi_drsuapi_DsGetNCChangesCtr1_uptodateness_vector);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsGetNCChangesCtr1_uptodateness_vector_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = drsuapi_dissect_struct_DsReplicaCursorCtrEx(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesCtr1_uptodateness_vector,0);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsGetNCChangesCtr1_mapping_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = drsuapi_dissect_struct_DsReplicaOIDMapping_Ctr(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesCtr1_mapping_ctr,0);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsGetNCChangesCtr1_extended_ret(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = drsuapi_dissect_enum_DsExtendedError(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesCtr1_extended_ret, 0);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsGetNCChangesCtr1_object_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesCtr1_object_count, 0);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsGetNCChangesCtr1___ndr_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesCtr1___ndr_size, 0);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsGetNCChangesCtr1_first_object(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNCChangesCtr1_first_object_, NDR_POINTER_UNIQUE, "Pointer to First Object (drsuapi_DsReplicaObjectListItemEx)",hf_drsuapi_drsuapi_DsGetNCChangesCtr1_first_object);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsGetNCChangesCtr1_first_object_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = drsuapi_dissect_struct_DsReplicaObjectListItemEx(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesCtr1_first_object,0);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsGetNCChangesCtr1_more_data(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesCtr1_more_data, 0);
 
        return offset;
 }
 
 int
-drsuapi_dissect_struct_DsGetNCChangesRequest10(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_struct_DsGetNCChangesCtr1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
        proto_item *item = NULL;
        proto_tree *tree = NULL;
@@ -6156,43 +8700,71 @@ drsuapi_dissect_struct_DsGetNCChangesRequest10(tvbuff_t *tvb _U_, int offset _U_
 
        if (parent_tree) {
                item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsGetNCChangesRequest10);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsGetNCChangesCtr1);
        }
 
-       offset = drsuapi_dissect_element_DsGetNCChangesRequest10_destination_dsa_guid(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsGetNCChangesCtr1_source_dsa_guid(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsGetNCChangesRequest10_source_dsa_invocation_id(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsGetNCChangesCtr1_source_dsa_invocation_id(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsGetNCChangesRequest10_naming_context(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsGetNCChangesCtr1_naming_context(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsGetNCChangesRequest10_highwatermark(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsGetNCChangesCtr1_old_highwatermark(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsGetNCChangesRequest10_uptodateness_vector(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsGetNCChangesCtr1_new_highwatermark(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsGetNCChangesRequest10_replica_flags(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsGetNCChangesCtr1_uptodateness_vector(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsGetNCChangesRequest10_max_object_count(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsGetNCChangesCtr1_mapping_ctr(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsGetNCChangesRequest10_max_ndr_size(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsGetNCChangesCtr1_extended_ret(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsGetNCChangesRequest10_extended_op(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsGetNCChangesCtr1_object_count(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsGetNCChangesRequest10_fsmo_info(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsGetNCChangesCtr1___ndr_size(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsGetNCChangesRequest10_partial_attribute_set(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsGetNCChangesCtr1_first_object(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsGetNCChangesRequest10_partial_attribute_set_ex(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsGetNCChangesCtr1_more_data(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsGetNCChangesRequest10_mapping_ctr(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsGetNCChangesRequest10_more_flags(tvb, offset, pinfo, tree, di, drep);
+       proto_item_set_len(item, offset-old_offset);
+
+
+       if (di->call_data->flags & DCERPC_IS_NDR64) {
+               ALIGN_TO_8_BYTES;
+       }
+
+       return offset;
+}
+
+
+/* IDL: bitmap { */
+/* IDL:        DRSUAPI_DS_LINKED_ATTRIBUTE_FLAG_ACTIVE =  0x00000001 , */
+/* IDL: } */
+
+int
+drsuapi_dissect_bitmap_DsLinkedAttributeFlags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+{
+       proto_item *item;
+       static int * const drsuapi_drsuapi_DsLinkedAttributeFlags_fields[] = {
+               &hf_drsuapi_drsuapi_DsLinkedAttributeFlags_DRSUAPI_DS_LINKED_ATTRIBUTE_FLAG_ACTIVE,
+               NULL
+       };
+       guint32 flags;
+       ALIGN_TO_4_BYTES;
 
+       item = proto_tree_add_bitmask_with_flags(parent_tree, tvb, offset, hf_index,
+                               ett_drsuapi_drsuapi_DsLinkedAttributeFlags, drsuapi_drsuapi_DsLinkedAttributeFlags_fields, DREP_ENC_INTEGER(drep), BMT_NO_FALSE);
 
-       proto_item_set_len(item, offset-old_offset);
+       offset = dissect_ndr_uint32(tvb, offset, pinfo, parent_tree, di, drep, -1, &flags);
 
+       if (!flags)
+               proto_item_append_text(item, ": (No values set)");
 
-       if (di->call_data->flags & DCERPC_IS_NDR64) {
-               ALIGN_TO_8_BYTES;
+       if (flags & (~0x00000001)) {
+               flags &= (~0x00000001);
+               proto_item_append_text(item, "Unknown bitmap value 0x%x", flags);
        }
 
        return offset;
@@ -6200,194 +8772,213 @@ drsuapi_dissect_struct_DsGetNCChangesRequest10(tvbuff_t *tvb _U_, int offset _U_
 
 
 /* IDL: struct { */
-/* IDL:        GUID destination_dsa_guid; */
-/* IDL:        GUID source_dsa_invocation_id; */
-/* IDL:        [ref] drsuapi_DsReplicaObjectIdentifier *naming_context; */
-/* IDL:        drsuapi_DsReplicaHighWaterMark highwatermark; */
-/* IDL:        [unique(1)] drsuapi_DsReplicaCursorCtrEx *uptodateness_vector; */
-/* IDL:        drsuapi_DrsOptions replica_flags; */
-/* IDL:        uint32 max_object_count; */
-/* IDL:        uint32 max_ndr_size; */
-/* IDL:        drsuapi_DsExtendedOperation extended_op; */
-/* IDL:        hyper fsmo_info; */
-/* IDL:        [unique(1)] drsuapi_DsPartialAttributeSet *partial_attribute_set; */
-/* IDL:        [unique(1)] drsuapi_DsPartialAttributeSet *partial_attribute_set_ex; */
-/* IDL:        drsuapi_DsReplicaOIDMapping_Ctr mapping_ctr; */
-/* IDL:        drsuapi_DrsMoreOptions more_flags; */
-/* IDL:        GUID correlationID; */
-/* IDL:        [unique(1)] [value(NULL)] drsuapi_VAR_SIZE_BUFFER_WITH_VERSION *reserved_buffer; */
+/* IDL:        [unique(1)] drsuapi_DsReplicaObjectIdentifier *identifier; */
+/* IDL:        drsuapi_DsAttributeId attid; */
+/* IDL:        drsuapi_DsAttributeValue value; */
+/* IDL:        drsuapi_DsLinkedAttributeFlags flags; */
+/* IDL:        NTTIME_1sec originating_add_time; */
+/* IDL:        drsuapi_DsReplicaMetaData meta_data; */
 /* IDL: } */
 
 static int
-drsuapi_dissect_element_DsGetNCChangesRequest11_destination_dsa_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaLinkedAttribute_identifier(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesRequest11_destination_dsa_guid, NULL);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaLinkedAttribute_identifier_, NDR_POINTER_UNIQUE, "Pointer to Identifier (drsuapi_DsReplicaObjectIdentifier)",hf_drsuapi_drsuapi_DsReplicaLinkedAttribute_identifier);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChangesRequest11_source_dsa_invocation_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaLinkedAttribute_identifier_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesRequest11_source_dsa_invocation_id, NULL);
+       offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaLinkedAttribute_identifier,0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChangesRequest11_naming_context(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaLinkedAttribute_attid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNCChangesRequest11_naming_context_, NDR_POINTER_REF, "Pointer to Naming Context (drsuapi_DsReplicaObjectIdentifier)",hf_drsuapi_drsuapi_DsGetNCChangesRequest11_naming_context);
+       offset = drsuapi_dissect_enum_DsAttributeId(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaLinkedAttribute_attid, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChangesRequest11_naming_context_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaLinkedAttribute_value(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesRequest11_naming_context,0);
+       offset = drsuapi_dissect_struct_DsAttributeValue(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaLinkedAttribute_value,0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChangesRequest11_highwatermark(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaLinkedAttribute_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaHighWaterMark(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesRequest11_highwatermark,0);
+       offset = drsuapi_dissect_bitmap_DsLinkedAttributeFlags(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaLinkedAttribute_flags, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChangesRequest11_uptodateness_vector(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaLinkedAttribute_originating_add_time(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNCChangesRequest11_uptodateness_vector_, NDR_POINTER_UNIQUE, "Pointer to Uptodateness Vector (drsuapi_DsReplicaCursorCtrEx)",hf_drsuapi_drsuapi_DsGetNCChangesRequest11_uptodateness_vector);
+       offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaLinkedAttribute_originating_add_time);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChangesRequest11_uptodateness_vector_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaLinkedAttribute_meta_data(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaCursorCtrEx(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesRequest11_uptodateness_vector,0);
+       offset = drsuapi_dissect_struct_DsReplicaMetaData(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaLinkedAttribute_meta_data,0);
 
        return offset;
 }
 
-static int
-drsuapi_dissect_element_DsGetNCChangesRequest11_replica_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+int
+drsuapi_dissect_struct_DsReplicaLinkedAttribute(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
-       offset = drsuapi_dissect_bitmap_DrsOptions(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesRequest11_replica_flags, 0);
+       proto_item *item = NULL;
+       proto_tree *tree = NULL;
+       int old_offset;
 
-       return offset;
-}
+       ALIGN_TO_8_BYTES;
 
-static int
-drsuapi_dissect_element_DsGetNCChangesRequest11_max_object_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesRequest11_max_object_count, 0);
+       old_offset = offset;
 
-       return offset;
-}
+       if (parent_tree) {
+               item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaLinkedAttribute);
+       }
 
-static int
-drsuapi_dissect_element_DsGetNCChangesRequest11_max_ndr_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesRequest11_max_ndr_size, 0);
+       offset = drsuapi_dissect_element_DsReplicaLinkedAttribute_identifier(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsReplicaLinkedAttribute_attid(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsReplicaLinkedAttribute_value(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsReplicaLinkedAttribute_flags(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsReplicaLinkedAttribute_originating_add_time(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsReplicaLinkedAttribute_meta_data(tvb, offset, pinfo, tree, di, drep);
+
+
+       proto_item_set_len(item, offset-old_offset);
+
+
+       if (di->call_data->flags & DCERPC_IS_NDR64) {
+               ALIGN_TO_8_BYTES;
+       }
 
        return offset;
 }
 
+
+/* IDL: struct { */
+/* IDL:        [unique(1)] drsuapi_DsReplicaObjectIdentifier *identifier; */
+/* IDL:        drsuapi_DsAttributeId attid; */
+/* IDL:        drsuapi_DsAttributeValue value; */
+/* IDL:        drsuapi_DsLinkedAttributeFlags flags; */
+/* IDL:        NTTIME_1sec originating_add_time; */
+/* IDL:        drsuapi_DsReplicaMetaData meta_data; */
+/* IDL:        uint32 unused1; */
+/* IDL:        uint32 unused2; */
+/* IDL:        uint32 unused3; */
+/* IDL:        NTTIME_1sec timeExpired; */
+/* IDL: } */
+
 static int
-drsuapi_dissect_element_DsGetNCChangesRequest11_extended_op(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaLinkedAttribute3_identifier(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_enum_DsExtendedOperation(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesRequest11_extended_op, 0);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaLinkedAttribute3_identifier_, NDR_POINTER_UNIQUE, "Pointer to Identifier (drsuapi_DsReplicaObjectIdentifier)",hf_drsuapi_drsuapi_DsReplicaLinkedAttribute3_identifier);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChangesRequest11_fsmo_info(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaLinkedAttribute3_identifier_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesRequest11_fsmo_info, NULL);
+       offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaLinkedAttribute3_identifier,0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChangesRequest11_partial_attribute_set(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaLinkedAttribute3_attid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNCChangesRequest11_partial_attribute_set_, NDR_POINTER_UNIQUE, "Pointer to Partial Attribute Set (drsuapi_DsPartialAttributeSet)",hf_drsuapi_drsuapi_DsGetNCChangesRequest11_partial_attribute_set);
+       offset = drsuapi_dissect_enum_DsAttributeId(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaLinkedAttribute3_attid, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChangesRequest11_partial_attribute_set_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaLinkedAttribute3_value(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsPartialAttributeSet(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesRequest11_partial_attribute_set,0);
+       offset = drsuapi_dissect_struct_DsAttributeValue(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaLinkedAttribute3_value,0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChangesRequest11_partial_attribute_set_ex(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaLinkedAttribute3_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNCChangesRequest11_partial_attribute_set_ex_, NDR_POINTER_UNIQUE, "Pointer to Partial Attribute Set Ex (drsuapi_DsPartialAttributeSet)",hf_drsuapi_drsuapi_DsGetNCChangesRequest11_partial_attribute_set_ex);
+       offset = drsuapi_dissect_bitmap_DsLinkedAttributeFlags(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaLinkedAttribute3_flags, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChangesRequest11_partial_attribute_set_ex_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaLinkedAttribute3_originating_add_time(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsPartialAttributeSet(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesRequest11_partial_attribute_set_ex,0);
+       offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaLinkedAttribute3_originating_add_time);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChangesRequest11_mapping_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaLinkedAttribute3_meta_data(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaOIDMapping_Ctr(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesRequest11_mapping_ctr,0);
+       offset = drsuapi_dissect_struct_DsReplicaMetaData(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaLinkedAttribute3_meta_data,0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChangesRequest11_more_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaLinkedAttribute3_unused1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_bitmap_DrsMoreOptions(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesRequest11_more_flags, 0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaLinkedAttribute3_unused1, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChangesRequest11_correlationID(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaLinkedAttribute3_unused2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesRequest11_correlationID, NULL);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaLinkedAttribute3_unused2, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChangesRequest11_reserved_buffer(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaLinkedAttribute3_unused3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNCChangesRequest11_reserved_buffer_, NDR_POINTER_UNIQUE, "Pointer to Reserved Buffer (drsuapi_VAR_SIZE_BUFFER_WITH_VERSION)",hf_drsuapi_drsuapi_DsGetNCChangesRequest11_reserved_buffer);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaLinkedAttribute3_unused3, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChangesRequest11_reserved_buffer_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaLinkedAttribute3_timeExpired(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_VAR_SIZE_BUFFER_WITH_VERSION(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesRequest11_reserved_buffer,0);
+       offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaLinkedAttribute3_timeExpired);
 
        return offset;
 }
 
 int
-drsuapi_dissect_struct_DsGetNCChangesRequest11(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_struct_DsReplicaLinkedAttribute3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
        proto_item *item = NULL;
        proto_tree *tree = NULL;
@@ -6399,163 +8990,239 @@ drsuapi_dissect_struct_DsGetNCChangesRequest11(tvbuff_t *tvb _U_, int offset _U_
 
        if (parent_tree) {
                item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsGetNCChangesRequest11);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaLinkedAttribute3);
        }
 
-       offset = drsuapi_dissect_element_DsGetNCChangesRequest11_destination_dsa_guid(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaLinkedAttribute3_identifier(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsGetNCChangesRequest11_source_dsa_invocation_id(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaLinkedAttribute3_attid(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsGetNCChangesRequest11_naming_context(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaLinkedAttribute3_value(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsGetNCChangesRequest11_highwatermark(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaLinkedAttribute3_flags(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsGetNCChangesRequest11_uptodateness_vector(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaLinkedAttribute3_originating_add_time(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsGetNCChangesRequest11_replica_flags(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaLinkedAttribute3_meta_data(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsGetNCChangesRequest11_max_object_count(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaLinkedAttribute3_unused1(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsGetNCChangesRequest11_max_ndr_size(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaLinkedAttribute3_unused2(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsGetNCChangesRequest11_extended_op(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaLinkedAttribute3_unused3(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsGetNCChangesRequest11_fsmo_info(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaLinkedAttribute3_timeExpired(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsGetNCChangesRequest11_partial_attribute_set(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsGetNCChangesRequest11_partial_attribute_set_ex(tvb, offset, pinfo, tree, di, drep);
+       proto_item_set_len(item, offset-old_offset);
+
+
+       if (di->call_data->flags & DCERPC_IS_NDR64) {
+               ALIGN_TO_8_BYTES;
+       }
+
+       return offset;
+}
+
+
+/* IDL: struct { */
+/* IDL:        GUID source_dsa_guid; */
+/* IDL:        GUID source_dsa_invocation_id; */
+/* IDL:        [unique(1)] drsuapi_DsReplicaObjectIdentifier *naming_context; */
+/* IDL:        drsuapi_DsReplicaHighWaterMark old_highwatermark; */
+/* IDL:        drsuapi_DsReplicaHighWaterMark new_highwatermark; */
+/* IDL:        [unique(1)] drsuapi_DsReplicaCursor2CtrEx *uptodateness_vector; */
+/* IDL:        drsuapi_DsReplicaOIDMapping_Ctr mapping_ctr; */
+/* IDL:        drsuapi_DsExtendedError extended_ret; */
+/* IDL:        uint32 object_count; */
+/* IDL:        [value(ndr_size_drsuapi_DsGetNCChangesCtr6(r,ndr->flags)+55)] uint32 __ndr_size; */
+/* IDL:        [unique(1)] drsuapi_DsReplicaObjectListItemEx *first_object; */
+/* IDL:        uint32 more_data; */
+/* IDL:        uint32 nc_object_count; */
+/* IDL:        uint32 nc_linked_attributes_count; */
+/* IDL:        [range(0,1048576)] uint32 linked_attributes_count; */
+/* IDL:        [size_is(linked_attributes_count)] [unique(1)] drsuapi_DsReplicaLinkedAttribute *linked_attributes; */
+/* IDL:        WERROR drs_error; */
+/* IDL: } */
+
+static int
+drsuapi_dissect_element_DsGetNCChangesCtr6_source_dsa_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesCtr6_source_dsa_guid, NULL);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsGetNCChangesCtr6_source_dsa_invocation_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesCtr6_source_dsa_invocation_id, NULL);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsGetNCChangesCtr6_naming_context(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNCChangesCtr6_naming_context_, NDR_POINTER_UNIQUE, "Pointer to Naming Context (drsuapi_DsReplicaObjectIdentifier)",hf_drsuapi_drsuapi_DsGetNCChangesCtr6_naming_context);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsGetNCChangesCtr6_naming_context_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesCtr6_naming_context,0);
 
-       offset = drsuapi_dissect_element_DsGetNCChangesRequest11_mapping_ctr(tvb, offset, pinfo, tree, di, drep);
+       return offset;
+}
 
-       offset = drsuapi_dissect_element_DsGetNCChangesRequest11_more_flags(tvb, offset, pinfo, tree, di, drep);
+static int
+drsuapi_dissect_element_DsGetNCChangesCtr6_old_highwatermark(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = drsuapi_dissect_struct_DsReplicaHighWaterMark(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesCtr6_old_highwatermark,0);
 
-       offset = drsuapi_dissect_element_DsGetNCChangesRequest11_correlationID(tvb, offset, pinfo, tree, di, drep);
+       return offset;
+}
 
-       offset = drsuapi_dissect_element_DsGetNCChangesRequest11_reserved_buffer(tvb, offset, pinfo, tree, di, drep);
+static int
+drsuapi_dissect_element_DsGetNCChangesCtr6_new_highwatermark(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = drsuapi_dissect_struct_DsReplicaHighWaterMark(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesCtr6_new_highwatermark,0);
 
+       return offset;
+}
 
-       proto_item_set_len(item, offset-old_offset);
+static int
+drsuapi_dissect_element_DsGetNCChangesCtr6_uptodateness_vector(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNCChangesCtr6_uptodateness_vector_, NDR_POINTER_UNIQUE, "Pointer to Uptodateness Vector (drsuapi_DsReplicaCursor2CtrEx)",hf_drsuapi_drsuapi_DsGetNCChangesCtr6_uptodateness_vector);
 
+       return offset;
+}
 
-       if (di->call_data->flags & DCERPC_IS_NDR64) {
-               ALIGN_TO_8_BYTES;
-       }
+static int
+drsuapi_dissect_element_DsGetNCChangesCtr6_uptodateness_vector_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = drsuapi_dissect_struct_DsReplicaCursor2CtrEx(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesCtr6_uptodateness_vector,0);
 
        return offset;
 }
 
+static int
+drsuapi_dissect_element_DsGetNCChangesCtr6_mapping_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = drsuapi_dissect_struct_DsReplicaOIDMapping_Ctr(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesCtr6_mapping_ctr,0);
 
-/* IDL: [switch_type(uint32)] union { */
-/* IDL: [case(5)] [case(5)] drsuapi_DsGetNCChangesRequest5 req5; */
-/* IDL: [case(8)] [case(8)] drsuapi_DsGetNCChangesRequest8 req8; */
-/* IDL: [case(10)] [case(10)] drsuapi_DsGetNCChangesRequest10 req10; */
-/* IDL: [case(11)] [case(11)] drsuapi_DsGetNCChangesRequest11 req11; */
-/* IDL: } */
+       return offset;
+}
 
 static int
-drsuapi_dissect_element_DsGetNCChangesRequest_req5(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetNCChangesCtr6_extended_ret(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsGetNCChangesRequest5(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesRequest_req5,0);
+       offset = drsuapi_dissect_enum_DsExtendedError(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesCtr6_extended_ret, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChangesRequest_req8(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetNCChangesCtr6_object_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsGetNCChangesRequest8(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesRequest_req8,0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesCtr6_object_count, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChangesRequest_req10(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetNCChangesCtr6___ndr_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsGetNCChangesRequest10(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesRequest_req10,0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesCtr6___ndr_size, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChangesRequest_req11(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetNCChangesCtr6_first_object(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsGetNCChangesRequest11(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesRequest_req11,0);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNCChangesCtr6_first_object_, NDR_POINTER_UNIQUE, "Pointer to First Object (drsuapi_DsReplicaObjectListItemEx)",hf_drsuapi_drsuapi_DsGetNCChangesCtr6_first_object);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_DsGetNCChangesRequest(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_element_DsGetNCChangesCtr6_first_object_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       proto_item *item = NULL;
-       proto_tree *tree = NULL;
-       int old_offset;
-       guint32 level;
+       offset = drsuapi_dissect_struct_DsReplicaObjectListItemEx(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesCtr6_first_object,0);
 
-       old_offset = offset;
-       if (parent_tree) {
-               tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_DsGetNCChangesRequest, &item, "drsuapi_DsGetNCChangesRequest");
-       }
+       return offset;
+}
 
-       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level);
-       ALIGN_TO_8_BYTES;
+static int
+drsuapi_dissect_element_DsGetNCChangesCtr6_more_data(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesCtr6_more_data, 0);
 
-       switch(level) {
-               case 5:
-                       offset = drsuapi_dissect_element_DsGetNCChangesRequest_req5(tvb, offset, pinfo, tree, di, drep);
-               break;
+       return offset;
+}
 
-               case 8:
-                       offset = drsuapi_dissect_element_DsGetNCChangesRequest_req8(tvb, offset, pinfo, tree, di, drep);
-               break;
+static int
+drsuapi_dissect_element_DsGetNCChangesCtr6_nc_object_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesCtr6_nc_object_count, 0);
 
-               case 10:
-                       offset = drsuapi_dissect_element_DsGetNCChangesRequest_req10(tvb, offset, pinfo, tree, di, drep);
-               break;
+       return offset;
+}
 
-               case 11:
-                       offset = drsuapi_dissect_element_DsGetNCChangesRequest_req11(tvb, offset, pinfo, tree, di, drep);
-               break;
-       }
-       proto_item_set_len(item, offset-old_offset);
+static int
+drsuapi_dissect_element_DsGetNCChangesCtr6_nc_linked_attributes_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesCtr6_nc_linked_attributes_count, 0);
+
+       return offset;
+}
 
+static int
+drsuapi_dissect_element_DsGetNCChangesCtr6_linked_attributes_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesCtr6_linked_attributes_count, 0);
 
        return offset;
 }
 
-/* IDL: struct { */
-/* IDL:        GUID source_dsa_invocation_id; */
-/* IDL:        hyper highest_usn; */
-/* IDL:        NTTIME last_sync_success; */
-/* IDL: } */
+static int
+drsuapi_dissect_element_DsGetNCChangesCtr6_linked_attributes(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNCChangesCtr6_linked_attributes_, NDR_POINTER_UNIQUE, "Pointer to Linked Attributes (drsuapi_DsReplicaLinkedAttribute)",hf_drsuapi_drsuapi_DsGetNCChangesCtr6_linked_attributes);
+
+       return offset;
+}
 
 static int
-drsuapi_dissect_element_DsReplicaCursor2_source_dsa_invocation_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetNCChangesCtr6_linked_attributes_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaCursor2_source_dsa_invocation_id, NULL);
+       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNCChangesCtr6_linked_attributes__);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaCursor2_highest_usn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetNCChangesCtr6_linked_attributes__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaCursor2_highest_usn, NULL);
+       offset = drsuapi_dissect_struct_DsReplicaLinkedAttribute(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesCtr6_linked_attributes,0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaCursor2_last_sync_success(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetNCChangesCtr6_drs_error(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaCursor2_last_sync_success);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesCtr6_drs_error, 0);
 
        return offset;
 }
 
 int
-drsuapi_dissect_struct_DsReplicaCursor2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_struct_DsGetNCChangesCtr6(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
        proto_item *item = NULL;
        proto_tree *tree = NULL;
@@ -6567,14 +9234,42 @@ drsuapi_dissect_struct_DsReplicaCursor2(tvbuff_t *tvb _U_, int offset _U_, packe
 
        if (parent_tree) {
                item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaCursor2);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsGetNCChangesCtr6);
        }
 
-       offset = drsuapi_dissect_element_DsReplicaCursor2_source_dsa_invocation_id(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsGetNCChangesCtr6_source_dsa_guid(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaCursor2_highest_usn(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsGetNCChangesCtr6_source_dsa_invocation_id(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaCursor2_last_sync_success(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsGetNCChangesCtr6_naming_context(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsGetNCChangesCtr6_old_highwatermark(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsGetNCChangesCtr6_new_highwatermark(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsGetNCChangesCtr6_uptodateness_vector(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsGetNCChangesCtr6_mapping_ctr(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsGetNCChangesCtr6_extended_ret(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsGetNCChangesCtr6_object_count(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsGetNCChangesCtr6___ndr_size(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsGetNCChangesCtr6_first_object(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsGetNCChangesCtr6_more_data(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsGetNCChangesCtr6_nc_object_count(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsGetNCChangesCtr6_nc_linked_attributes_count(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsGetNCChangesCtr6_linked_attributes_count(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsGetNCChangesCtr6_linked_attributes(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsGetNCChangesCtr6_drs_error(tvb, offset, pinfo, tree, di, drep);
 
 
        proto_item_set_len(item, offset-old_offset);
@@ -6589,455 +9284,416 @@ drsuapi_dissect_struct_DsReplicaCursor2(tvbuff_t *tvb _U_, int offset _U_, packe
 
 
 /* IDL: struct { */
-/* IDL:        [value(2)] uint32 version; */
-/* IDL:        [value(0)] uint32 reserved1; */
-/* IDL:        [range(0,0x100000)] uint32 count; */
-/* IDL:        [value(0)] uint32 reserved2; */
-/* IDL:        [size_is(count)] drsuapi_DsReplicaCursor2 cursors[*]; */
+/* IDL:        GUID source_dsa_guid; */
+/* IDL:        GUID source_dsa_invocation_id; */
+/* IDL:        [unique(1)] drsuapi_DsReplicaObjectIdentifier *naming_context; */
+/* IDL:        drsuapi_DsReplicaHighWaterMark old_highwatermark; */
+/* IDL:        drsuapi_DsReplicaHighWaterMark new_highwatermark; */
+/* IDL:        [unique(1)] drsuapi_DsReplicaCursor2CtrEx *uptodateness_vector; */
+/* IDL:        drsuapi_DsReplicaOIDMapping_Ctr mapping_ctr; */
+/* IDL:        drsuapi_DsExtendedError extended_ret; */
+/* IDL:        uint32 object_count; */
+/* IDL:        [value(ndr_size_drsuapi_DsGetNCChangesCtr9(r,ndr->flags)+55)] uint32 __ndr_size; */
+/* IDL:        [unique(1)] drsuapi_DsReplicaObjectListItemEx *first_object; */
+/* IDL:        uint32 more_data; */
+/* IDL:        uint32 nc_object_count; */
+/* IDL:        uint32 nc_linked_attributes_count; */
+/* IDL:        [range(0,1048576)] uint32 linked_attributes_count; */
+/* IDL:        [size_is(linked_attributes_count)] [unique(1)] drsuapi_DsReplicaLinkedAttribute3 *linked_attributes; */
+/* IDL:        WERROR drs_error; */
 /* IDL: } */
 
 static int
-drsuapi_dissect_element_DsReplicaCursor2CtrEx_version(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetNCChangesCtr9_source_dsa_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaCursor2CtrEx_version, 0);
+       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesCtr9_source_dsa_guid, NULL);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaCursor2CtrEx_reserved1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetNCChangesCtr9_source_dsa_invocation_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaCursor2CtrEx_reserved1, 0);
+       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesCtr9_source_dsa_invocation_id, NULL);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaCursor2CtrEx_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetNCChangesCtr9_naming_context(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaCursor2CtrEx_count, 0);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNCChangesCtr9_naming_context_, NDR_POINTER_UNIQUE, "Pointer to Naming Context (drsuapi_DsReplicaObjectIdentifier)",hf_drsuapi_drsuapi_DsGetNCChangesCtr9_naming_context);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaCursor2CtrEx_reserved2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetNCChangesCtr9_naming_context_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaCursor2CtrEx_reserved2, 0);
+       offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesCtr9_naming_context,0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaCursor2CtrEx_cursors(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetNCChangesCtr9_old_highwatermark(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaCursor2CtrEx_cursors_);
+       offset = drsuapi_dissect_struct_DsReplicaHighWaterMark(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesCtr9_old_highwatermark,0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaCursor2CtrEx_cursors_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetNCChangesCtr9_new_highwatermark(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaCursor2(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaCursor2CtrEx_cursors,0);
+       offset = drsuapi_dissect_struct_DsReplicaHighWaterMark(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesCtr9_new_highwatermark,0);
 
        return offset;
 }
 
-int
-drsuapi_dissect_struct_DsReplicaCursor2CtrEx(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+static int
+drsuapi_dissect_element_DsGetNCChangesCtr9_uptodateness_vector(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       proto_item *item = NULL;
-       proto_tree *tree = NULL;
-       int old_offset;
-
-       ALIGN_TO_8_BYTES;
-
-       old_offset = offset;
-
-       if (parent_tree) {
-               item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaCursor2CtrEx);
-       }
-
-       offset = drsuapi_dissect_element_DsReplicaCursor2CtrEx_version(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsReplicaCursor2CtrEx_reserved1(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsReplicaCursor2CtrEx_count(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsReplicaCursor2CtrEx_reserved2(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsReplicaCursor2CtrEx_cursors(tvb, offset, pinfo, tree, di, drep);
-
-
-       proto_item_set_len(item, offset-old_offset);
-
-
-       if (di->call_data->flags & DCERPC_IS_NDR64) {
-               ALIGN_TO_8_BYTES;
-       }
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNCChangesCtr9_uptodateness_vector_, NDR_POINTER_UNIQUE, "Pointer to Uptodateness Vector (drsuapi_DsReplicaCursor2CtrEx)",hf_drsuapi_drsuapi_DsGetNCChangesCtr9_uptodateness_vector);
 
        return offset;
 }
 
-
-/* IDL: struct { */
-/* IDL:        [range(0,26214400)] [value(ndr_size_DATA_BLOB(0,blob,0))] uint32 __ndr_size; */
-/* IDL:        [unique(1)] DATA_BLOB *blob; */
-/* IDL: } */
-
 static int
-drsuapi_dissect_element_DsAttributeValue___ndr_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetNCChangesCtr9_uptodateness_vector_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAttributeValue___ndr_size, 0);
+       offset = drsuapi_dissect_struct_DsReplicaCursor2CtrEx(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesCtr9_uptodateness_vector,0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsAttributeValue_blob(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetNCChangesCtr9_mapping_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsAttributeValue_blob_, NDR_POINTER_UNIQUE, "Pointer to Blob (DATA_BLOB)",hf_drsuapi_drsuapi_DsAttributeValue_blob);
+       offset = drsuapi_dissect_struct_DsReplicaOIDMapping_Ctr(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesCtr9_mapping_ctr,0);
 
        return offset;
 }
 
-int
-drsuapi_dissect_struct_DsAttributeValue(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+static int
+drsuapi_dissect_element_DsGetNCChangesCtr9_extended_ret(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       proto_item *item = NULL;
-       proto_tree *tree = NULL;
-       int old_offset;
-
-       ALIGN_TO_5_BYTES;
-
-       old_offset = offset;
-
-       if (parent_tree) {
-               item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsAttributeValue);
-       }
-
-       offset = drsuapi_dissect_element_DsAttributeValue___ndr_size(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsAttributeValue_blob(tvb, offset, pinfo, tree, di, drep);
-
-
-       proto_item_set_len(item, offset-old_offset);
-
-
-       if (di->call_data->flags & DCERPC_IS_NDR64) {
-               ALIGN_TO_5_BYTES;
-       }
+       offset = drsuapi_dissect_enum_DsExtendedError(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesCtr9_extended_ret, 0);
 
        return offset;
 }
 
-
-/* IDL: struct { */
-/* IDL:        [range(0,10485760)] uint32 num_values; */
-/* IDL:        [size_is(num_values)] [unique(1)] drsuapi_DsAttributeValue *values; */
-/* IDL: } */
-
 static int
-drsuapi_dissect_element_DsAttributeValueCtr_num_values(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetNCChangesCtr9_object_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAttributeValueCtr_num_values, 0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesCtr9_object_count, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsAttributeValueCtr_values(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetNCChangesCtr9___ndr_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsAttributeValueCtr_values_, NDR_POINTER_UNIQUE, "Pointer to Values (drsuapi_DsAttributeValue)",hf_drsuapi_drsuapi_DsAttributeValueCtr_values);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesCtr9___ndr_size, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsAttributeValueCtr_values_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetNCChangesCtr9_first_object(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsAttributeValueCtr_values__);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNCChangesCtr9_first_object_, NDR_POINTER_UNIQUE, "Pointer to First Object (drsuapi_DsReplicaObjectListItemEx)",hf_drsuapi_drsuapi_DsGetNCChangesCtr9_first_object);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsAttributeValueCtr_values__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetNCChangesCtr9_first_object_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsAttributeValue(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAttributeValueCtr_values,0);
+       offset = drsuapi_dissect_struct_DsReplicaObjectListItemEx(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesCtr9_first_object,0);
 
        return offset;
 }
 
-int
-drsuapi_dissect_struct_DsAttributeValueCtr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+static int
+drsuapi_dissect_element_DsGetNCChangesCtr9_more_data(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       proto_item *item = NULL;
-       proto_tree *tree = NULL;
-       int old_offset;
-
-       ALIGN_TO_5_BYTES;
-
-       old_offset = offset;
-
-       if (parent_tree) {
-               item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsAttributeValueCtr);
-       }
-
-       offset = drsuapi_dissect_element_DsAttributeValueCtr_num_values(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsAttributeValueCtr_values(tvb, offset, pinfo, tree, di, drep);
-
-
-       proto_item_set_len(item, offset-old_offset);
-
-
-       if (di->call_data->flags & DCERPC_IS_NDR64) {
-               ALIGN_TO_5_BYTES;
-       }
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesCtr9_more_data, 0);
 
        return offset;
 }
 
-
-/* IDL: struct { */
-/* IDL:        [value(ndr_size_drsuapi_DsReplicaObjectIdentifier3(r,ndr->flags))] uint32 __ndr_size; */
-/* IDL:        [value(ndr_size_dom_sid28(&sid,ndr->flags))] uint32 __ndr_size_sid; */
-/* IDL:        GUID guid; */
-/* IDL:        dom_sid28 sid; */
-/* IDL:        [value(strlen_m(dn))] uint32 __ndr_size_dn; */
-/* IDL:        [charset(UTF16)] uint16 dn[__ndr_size_dn+1]; */
-/* IDL: } */
-
 static int
-drsuapi_dissect_element_DsReplicaObjectIdentifier3___ndr_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetNCChangesCtr9_nc_object_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjectIdentifier3___ndr_size, 0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesCtr9_nc_object_count, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaObjectIdentifier3___ndr_size_sid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetNCChangesCtr9_nc_linked_attributes_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjectIdentifier3___ndr_size_sid, 0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesCtr9_nc_linked_attributes_count, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaObjectIdentifier3_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetNCChangesCtr9_linked_attributes_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjectIdentifier3_guid, NULL);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesCtr9_linked_attributes_count, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaObjectIdentifier3_sid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetNCChangesCtr9_linked_attributes(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       
-               di->hf_index = hf_drsuapi_drsuapi_DsReplicaObjectIdentifier3_sid;
-
-               offset = dissect_ndr_nt_SID28(tvb, offset, pinfo, tree, di, drep);
-       
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNCChangesCtr9_linked_attributes_, NDR_POINTER_UNIQUE, "Pointer to Linked Attributes (drsuapi_DsReplicaLinkedAttribute3)",hf_drsuapi_drsuapi_DsGetNCChangesCtr9_linked_attributes);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaObjectIdentifier3___ndr_size_dn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetNCChangesCtr9_linked_attributes_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjectIdentifier3___ndr_size_dn, 0);
+       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNCChangesCtr9_linked_attributes__);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaObjectIdentifier3_dn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetNCChangesCtr9_linked_attributes__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       /* TODO drsuapi_dissect_element_DsReplicaObjectIdentifier3_dn IS_INLINE */
+       offset = drsuapi_dissect_struct_DsReplicaLinkedAttribute3(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesCtr9_linked_attributes,0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaObjectIdentifier3_dn_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetNCChangesCtr9_drs_error(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjectIdentifier3_dn, 0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesCtr9_drs_error, 0);
 
        return offset;
 }
 
 int
-drsuapi_dissect_struct_DsReplicaObjectIdentifier3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_struct_DsGetNCChangesCtr9(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
        proto_item *item = NULL;
        proto_tree *tree = NULL;
        int old_offset;
 
-       ALIGN_TO_4_BYTES;
+       ALIGN_TO_8_BYTES;
 
        old_offset = offset;
 
        if (parent_tree) {
                item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaObjectIdentifier3);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsGetNCChangesCtr9);
        }
 
-       offset = drsuapi_dissect_element_DsReplicaObjectIdentifier3___ndr_size(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsGetNCChangesCtr9_source_dsa_guid(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaObjectIdentifier3___ndr_size_sid(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsGetNCChangesCtr9_source_dsa_invocation_id(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaObjectIdentifier3_guid(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsGetNCChangesCtr9_naming_context(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaObjectIdentifier3_sid(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsGetNCChangesCtr9_old_highwatermark(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaObjectIdentifier3___ndr_size_dn(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsGetNCChangesCtr9_new_highwatermark(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaObjectIdentifier3_dn(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsGetNCChangesCtr9_uptodateness_vector(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsGetNCChangesCtr9_mapping_ctr(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsGetNCChangesCtr9_extended_ret(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsGetNCChangesCtr9_object_count(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsGetNCChangesCtr9___ndr_size(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsGetNCChangesCtr9_first_object(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsGetNCChangesCtr9_more_data(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsGetNCChangesCtr9_nc_object_count(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsGetNCChangesCtr9_nc_linked_attributes_count(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsGetNCChangesCtr9_linked_attributes_count(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsGetNCChangesCtr9_linked_attributes(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsGetNCChangesCtr9_drs_error(tvb, offset, pinfo, tree, di, drep);
 
 
        proto_item_set_len(item, offset-old_offset);
 
 
        if (di->call_data->flags & DCERPC_IS_NDR64) {
-               ALIGN_TO_4_BYTES;
+               ALIGN_TO_8_BYTES;
        }
 
        return offset;
 }
 
 
-/* IDL: struct { */
-/* IDL:        [value(ndr_size_drsuapi_DsReplicaObjectIdentifier3Binary_without_Binary(r,ndr->flags))] uint32 __ndr_size; */
-/* IDL:        [value(ndr_size_dom_sid28(&sid,ndr->flags))] uint32 __ndr_size_sid; */
-/* IDL:        GUID guid; */
-/* IDL:        dom_sid28 sid; */
-/* IDL:        [value(strlen_m(dn))] uint32 __ndr_size_dn; */
-/* IDL:        [charset(UTF16)] uint16 dn[__ndr_size_dn+1]; */
-/* IDL:        [value(binary.length+4)] uint32 __ndr_size_binary; */
-/* IDL:        [flag(LIBNDR_FLAG_REMAINING)] DATA_BLOB binary; */
+/* IDL: [switch_type(uint32)] union { */
+/* IDL: [case(1)] [case(1)] drsuapi_DsGetNCChangesCtr1 ctr1; */
+/* IDL: [case(6)] [case(6)] drsuapi_DsGetNCChangesCtr6 ctr6; */
+/* IDL: [case(9)] [case(9)] drsuapi_DsGetNCChangesCtr9 ctr9; */
 /* IDL: } */
 
 static int
-drsuapi_dissect_element_DsReplicaObjectIdentifier3Binary___ndr_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetNCChangesCtr_ctr1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjectIdentifier3Binary___ndr_size, 0);
+       offset = drsuapi_dissect_struct_DsGetNCChangesCtr1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesCtr_ctr1,0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaObjectIdentifier3Binary___ndr_size_sid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetNCChangesCtr_ctr6(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjectIdentifier3Binary___ndr_size_sid, 0);
+       offset = drsuapi_dissect_struct_DsGetNCChangesCtr6(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesCtr_ctr6,0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaObjectIdentifier3Binary_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetNCChangesCtr_ctr9(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjectIdentifier3Binary_guid, NULL);
+       offset = drsuapi_dissect_struct_DsGetNCChangesCtr9(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesCtr_ctr9,0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaObjectIdentifier3Binary_sid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_DsGetNCChangesCtr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
-       
-               di->hf_index = hf_drsuapi_drsuapi_DsReplicaObjectIdentifier3Binary_sid;
+       proto_item *item = NULL;
+       proto_tree *tree = NULL;
+       int old_offset;
+       guint32 level;
+
+       old_offset = offset;
+       if (parent_tree) {
+               tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_DsGetNCChangesCtr, &item, "drsuapi_DsGetNCChangesCtr");
+       }
+
+       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level);
+       ALIGN_TO_8_BYTES;
+
+       switch(level) {
+               case 1:
+                       offset = drsuapi_dissect_element_DsGetNCChangesCtr_ctr1(tvb, offset, pinfo, tree, di, drep);
+               break;
+
+               case 6:
+                       offset = drsuapi_dissect_element_DsGetNCChangesCtr_ctr6(tvb, offset, pinfo, tree, di, drep);
+               break;
+
+               case 9:
+                       offset = drsuapi_dissect_element_DsGetNCChangesCtr_ctr9(tvb, offset, pinfo, tree, di, drep);
+               break;
+       }
+       proto_item_set_len(item, offset-old_offset);
 
-               offset = dissect_ndr_nt_SID28(tvb, offset, pinfo, tree, di, drep);
-       
 
        return offset;
 }
 
+/* IDL: struct { */
+/* IDL:        [ref] drsuapi_DsReplicaObjectIdentifier *naming_context; */
+/* IDL:        [charset(DOS)] [ref] uint8 *dest_dsa_dns_name; */
+/* IDL:        GUID dest_dsa_guid; */
+/* IDL:        drsuapi_DrsOptions options; */
+/* IDL: } */
+
 static int
-drsuapi_dissect_element_DsReplicaObjectIdentifier3Binary___ndr_size_dn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaUpdateRefsRequest1_naming_context(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjectIdentifier3Binary___ndr_size_dn, 0);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaUpdateRefsRequest1_naming_context_, NDR_POINTER_REF, "Pointer to Naming Context (drsuapi_DsReplicaObjectIdentifier)",hf_drsuapi_drsuapi_DsReplicaUpdateRefsRequest1_naming_context);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaObjectIdentifier3Binary_dn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaUpdateRefsRequest1_naming_context_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       /* TODO drsuapi_dissect_element_DsReplicaObjectIdentifier3Binary_dn IS_INLINE */
+       offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaUpdateRefsRequest1_naming_context,0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaObjectIdentifier3Binary_dn_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaUpdateRefsRequest1_dest_dsa_dns_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaUpdateRefsRequest1_dest_dsa_dns_name_, NDR_POINTER_REF, "Pointer to Dest Dsa Dns Name (uint8)",hf_drsuapi_drsuapi_DsReplicaUpdateRefsRequest1_dest_dsa_dns_name);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsReplicaUpdateRefsRequest1_dest_dsa_dns_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjectIdentifier3Binary_dn, 0);
+       char *data;
+
+       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint8), hf_drsuapi_drsuapi_DsReplicaUpdateRefsRequest1_dest_dsa_dns_name, FALSE, &data);
+       proto_item_append_text(tree, ": %s", data);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaObjectIdentifier3Binary___ndr_size_binary(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaUpdateRefsRequest1_dest_dsa_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjectIdentifier3Binary___ndr_size_binary, 0);
+       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaUpdateRefsRequest1_dest_dsa_guid, NULL);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaObjectIdentifier3Binary_binary(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaUpdateRefsRequest1_options(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_datablob(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjectIdentifier3Binary_binary, 1);
+       offset = drsuapi_dissect_bitmap_DrsOptions(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaUpdateRefsRequest1_options, 0);
 
        return offset;
 }
 
 int
-drsuapi_dissect_struct_DsReplicaObjectIdentifier3Binary(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_struct_DsReplicaUpdateRefsRequest1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
        proto_item *item = NULL;
        proto_tree *tree = NULL;
        int old_offset;
 
-       ALIGN_TO_4_BYTES;
+       ALIGN_TO_5_BYTES;
 
        old_offset = offset;
 
        if (parent_tree) {
                item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaObjectIdentifier3Binary);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaUpdateRefsRequest1);
        }
 
-       offset = drsuapi_dissect_element_DsReplicaObjectIdentifier3Binary___ndr_size(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsReplicaObjectIdentifier3Binary___ndr_size_sid(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsReplicaObjectIdentifier3Binary_guid(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsReplicaObjectIdentifier3Binary_sid(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsReplicaObjectIdentifier3Binary___ndr_size_dn(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaUpdateRefsRequest1_naming_context(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaObjectIdentifier3Binary_dn(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaUpdateRefsRequest1_dest_dsa_dns_name(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaObjectIdentifier3Binary___ndr_size_binary(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaUpdateRefsRequest1_dest_dsa_guid(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaObjectIdentifier3Binary_binary(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaUpdateRefsRequest1_options(tvb, offset, pinfo, tree, di, drep);
 
 
        proto_item_set_len(item, offset-old_offset);
 
 
        if (di->call_data->flags & DCERPC_IS_NDR64) {
-               ALIGN_TO_4_BYTES;
+               ALIGN_TO_5_BYTES;
        }
 
        return offset;
@@ -7045,58 +9701,91 @@ drsuapi_dissect_struct_DsReplicaObjectIdentifier3Binary(tvbuff_t *tvb _U_, int o
 
 
 /* IDL: struct { */
-/* IDL:        drsuapi_DsAttributeId attid; */
-/* IDL:        drsuapi_DsAttributeValueCtr value_ctr; */
+/* IDL:        [ref] drsuapi_DsReplicaObjectIdentifier *naming_context; */
+/* IDL:        [charset(DOS)] [ref] uint8 *dest_dsa_dns_name; */
+/* IDL:        GUID dest_dsa_guid; */
+/* IDL:        drsuapi_DrsOptions options; */
+/* IDL:        GUID correlationID; */
+/* IDL:        [unique(1)] [value(NULL)] drsuapi_VAR_SIZE_BUFFER_WITH_VERSION *reserved_buffer; */
 /* IDL: } */
 
 static int
-drsuapi_dissect_element_DsReplicaAttribute_value_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaUpdateRefsRequest2_naming_context(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsAttributeValueCtr(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaAttribute_value_ctr,0);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaUpdateRefsRequest2_naming_context_, NDR_POINTER_REF, "Pointer to Naming Context (drsuapi_DsReplicaObjectIdentifier)",hf_drsuapi_drsuapi_DsReplicaUpdateRefsRequest2_naming_context);
 
        return offset;
 }
 
+static int
+drsuapi_dissect_element_DsReplicaUpdateRefsRequest2_naming_context_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaUpdateRefsRequest2_naming_context,0);
 
-/* IDL: struct { */
-/* IDL:        [range(0,1048576)] uint32 num_attributes; */
-/* IDL:        [size_is(num_attributes)] [unique(1)] drsuapi_DsReplicaAttribute *attributes; */
-/* IDL: } */
+       return offset;
+}
 
 static int
-drsuapi_dissect_element_DsReplicaAttributeCtr_num_attributes(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaUpdateRefsRequest2_dest_dsa_dns_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAttributeCtr_num_attributes, 0);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaUpdateRefsRequest2_dest_dsa_dns_name_, NDR_POINTER_REF, "Pointer to Dest Dsa Dns Name (uint8)",hf_drsuapi_drsuapi_DsReplicaUpdateRefsRequest2_dest_dsa_dns_name);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaAttributeCtr_attributes(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaUpdateRefsRequest2_dest_dsa_dns_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaAttributeCtr_attributes_, NDR_POINTER_UNIQUE, "Pointer to Attributes (drsuapi_DsReplicaAttribute)",hf_drsuapi_drsuapi_DsReplicaAttributeCtr_attributes);
+       char *data;
+
+       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint8), hf_drsuapi_drsuapi_DsReplicaUpdateRefsRequest2_dest_dsa_dns_name, FALSE, &data);
+       proto_item_append_text(tree, ": %s", data);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaAttributeCtr_attributes_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaUpdateRefsRequest2_dest_dsa_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaAttributeCtr_attributes__);
+       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaUpdateRefsRequest2_dest_dsa_guid, NULL);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaAttributeCtr_attributes__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaUpdateRefsRequest2_options(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaAttribute(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaAttributeCtr_attributes,0);
+       offset = drsuapi_dissect_bitmap_DrsOptions(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaUpdateRefsRequest2_options, 0);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsReplicaUpdateRefsRequest2_correlationID(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaUpdateRefsRequest2_correlationID, NULL);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsReplicaUpdateRefsRequest2_reserved_buffer(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaUpdateRefsRequest2_reserved_buffer_, NDR_POINTER_UNIQUE, "Pointer to Reserved Buffer (drsuapi_VAR_SIZE_BUFFER_WITH_VERSION)",hf_drsuapi_drsuapi_DsReplicaUpdateRefsRequest2_reserved_buffer);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsReplicaUpdateRefsRequest2_reserved_buffer_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = drsuapi_dissect_struct_VAR_SIZE_BUFFER_WITH_VERSION(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaUpdateRefsRequest2_reserved_buffer,0);
 
        return offset;
 }
 
 int
-drsuapi_dissect_struct_DsReplicaAttributeCtr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_struct_DsReplicaUpdateRefsRequest2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
        proto_item *item = NULL;
        proto_tree *tree = NULL;
@@ -7108,12 +9797,20 @@ drsuapi_dissect_struct_DsReplicaAttributeCtr(tvbuff_t *tvb _U_, int offset _U_,
 
        if (parent_tree) {
                item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaAttributeCtr);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaUpdateRefsRequest2);
        }
 
-       offset = drsuapi_dissect_element_DsReplicaAttributeCtr_num_attributes(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaUpdateRefsRequest2_naming_context(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaAttributeCtr_attributes(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaUpdateRefsRequest2_dest_dsa_dns_name(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsReplicaUpdateRefsRequest2_dest_dsa_guid(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsReplicaUpdateRefsRequest2_options(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsReplicaUpdateRefsRequest2_correlationID(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsReplicaUpdateRefsRequest2_reserved_buffer(tvb, offset, pinfo, tree, di, drep);
 
 
        proto_item_set_len(item, offset-old_offset);
@@ -7127,150 +9824,156 @@ drsuapi_dissect_struct_DsReplicaAttributeCtr(tvbuff_t *tvb _U_, int offset _U_,
 }
 
 
-/* IDL: bitmap { */
-/* IDL:        DRSUAPI_DS_REPLICA_OBJECT_FROM_MASTER =  0x00000001 , */
-/* IDL:        DRSUAPI_DS_REPLICA_OBJECT_DYNAMIC =  0x00000002 , */
-/* IDL:        DRSUAPI_DS_REPLICA_OBJECT_REMOTE_MODIFY =  0x00010000 , */
+/* IDL: [switch_type(uint32)] union { */
+/* IDL: [case(1)] [case(1)] drsuapi_DsReplicaUpdateRefsRequest1 req1; */
+/* IDL: [case(2)] [case(2)] drsuapi_DsReplicaUpdateRefsRequest2 req2; */
 /* IDL: } */
 
-int
-drsuapi_dissect_bitmap_DsReplicaObjectFlags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+static int
+drsuapi_dissect_element_DsReplicaUpdateRefsRequest_req1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       proto_item *item;
-       static int * const drsuapi_drsuapi_DsReplicaObjectFlags_fields[] = {
-               &hf_drsuapi_drsuapi_DsReplicaObjectFlags_DRSUAPI_DS_REPLICA_OBJECT_FROM_MASTER,
-               &hf_drsuapi_drsuapi_DsReplicaObjectFlags_DRSUAPI_DS_REPLICA_OBJECT_DYNAMIC,
-               &hf_drsuapi_drsuapi_DsReplicaObjectFlags_DRSUAPI_DS_REPLICA_OBJECT_REMOTE_MODIFY,
-               NULL
-       };
-       guint32 flags;
-       ALIGN_TO_4_BYTES;
+       offset = drsuapi_dissect_struct_DsReplicaUpdateRefsRequest1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaUpdateRefsRequest_req1,0);
 
-       item = proto_tree_add_bitmask_with_flags(parent_tree, tvb, offset, hf_index,
-                               ett_drsuapi_drsuapi_DsReplicaObjectFlags, drsuapi_drsuapi_DsReplicaObjectFlags_fields, DREP_ENC_INTEGER(drep), BMT_NO_FALSE);
+       return offset;
+}
 
-       offset = dissect_ndr_uint32(tvb, offset, pinfo, parent_tree, di, drep, -1, &flags);
+static int
+drsuapi_dissect_element_DsReplicaUpdateRefsRequest_req2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = drsuapi_dissect_struct_DsReplicaUpdateRefsRequest2(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaUpdateRefsRequest_req2,0);
 
-       if (!flags)
-               proto_item_append_text(item, ": (No values set)");
+       return offset;
+}
 
-       if (flags & (~0x00010003)) {
-               flags &= (~0x00010003);
-               proto_item_append_text(item, "Unknown bitmap value 0x%x", flags);
+static int
+drsuapi_dissect_DsReplicaUpdateRefsRequest(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+{
+       proto_item *item = NULL;
+       proto_tree *tree = NULL;
+       int old_offset;
+       guint32 level;
+
+       old_offset = offset;
+       if (parent_tree) {
+               tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_DsReplicaUpdateRefsRequest, &item, "drsuapi_DsReplicaUpdateRefsRequest");
        }
 
-       return offset;
-}
+       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level);
+       ALIGN_TO_5_BYTES;
 
+       switch(level) {
+               case 1:
+                       offset = drsuapi_dissect_element_DsReplicaUpdateRefsRequest_req1(tvb, offset, pinfo, tree, di, drep);
+               break;
 
-/* IDL: struct { */
-/* IDL:        [unique(1)] drsuapi_DsReplicaObjectIdentifier *identifier; */
-/* IDL:        drsuapi_DsReplicaObjectFlags flags; */
-/* IDL:        drsuapi_DsReplicaAttributeCtr attribute_ctr; */
-/* IDL: } */
+               case 2:
+                       offset = drsuapi_dissect_element_DsReplicaUpdateRefsRequest_req2(tvb, offset, pinfo, tree, di, drep);
+               break;
+       }
+       proto_item_set_len(item, offset-old_offset);
 
-static int
-drsuapi_dissect_element_DsReplicaObject_identifier(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaObject_identifier_, NDR_POINTER_UNIQUE, "Pointer to Identifier (drsuapi_DsReplicaObjectIdentifier)",hf_drsuapi_drsuapi_DsReplicaObject_identifier);
 
        return offset;
 }
 
+/* IDL: struct { */
+/* IDL:        [ref] drsuapi_DsReplicaObjectIdentifier *naming_context; */
+/* IDL:        [charset(UTF16)] [unique(1)] uint16 *source_dsa_address; */
+/* IDL:        uint8 schedule[84]; */
+/* IDL:        drsuapi_DrsOptions options; */
+/* IDL: } */
+
 static int
-drsuapi_dissect_element_DsReplicaObject_identifier_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaAddRequest1_naming_context(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaObject_identifier,0);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaAddRequest1_naming_context_, NDR_POINTER_REF, "Pointer to Naming Context (drsuapi_DsReplicaObjectIdentifier)",hf_drsuapi_drsuapi_DsReplicaAddRequest1_naming_context);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaObject_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaAddRequest1_naming_context_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_bitmap_DsReplicaObjectFlags(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObject_flags, 0);
+       offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaAddRequest1_naming_context,0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaObject_attribute_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaAddRequest1_source_dsa_address(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaAttributeCtr(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaObject_attribute_ctr,0);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaAddRequest1_source_dsa_address_, NDR_POINTER_UNIQUE, "Pointer to Source Dsa Address (uint16)",hf_drsuapi_drsuapi_DsReplicaAddRequest1_source_dsa_address);
 
        return offset;
 }
 
-
-/* IDL: struct { */
-/* IDL:        uint32 version; */
-/* IDL:        NTTIME_1sec originating_change_time; */
-/* IDL:        GUID originating_invocation_id; */
-/* IDL:        hyper originating_usn; */
-/* IDL: } */
-
 static int
-drsuapi_dissect_element_DsReplicaMetaData_version(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaAddRequest1_source_dsa_address_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaMetaData_version, 0);
+       char *data;
+
+       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsReplicaAddRequest1_source_dsa_address, FALSE, &data);
+       proto_item_append_text(tree, ": %s", data);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaMetaData_originating_change_time(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaAddRequest1_schedule(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaMetaData_originating_change_time);
+       int i;
+       for (i = 0; i < 84; i++)
+               offset = drsuapi_dissect_element_DsReplicaAddRequest1_schedule_(tvb, offset, pinfo, tree, di, drep);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaMetaData_originating_invocation_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaAddRequest1_schedule_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaMetaData_originating_invocation_id, NULL);
+       offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAddRequest1_schedule, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaMetaData_originating_usn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaAddRequest1_options(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaMetaData_originating_usn, NULL);
+       offset = drsuapi_dissect_bitmap_DrsOptions(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAddRequest1_options, 0);
 
        return offset;
 }
 
 int
-drsuapi_dissect_struct_DsReplicaMetaData(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_struct_DsReplicaAddRequest1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
        proto_item *item = NULL;
        proto_tree *tree = NULL;
        int old_offset;
 
-       ALIGN_TO_8_BYTES;
+       ALIGN_TO_5_BYTES;
 
        old_offset = offset;
 
        if (parent_tree) {
                item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaMetaData);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaAddRequest1);
        }
 
-       offset = drsuapi_dissect_element_DsReplicaMetaData_version(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaAddRequest1_naming_context(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaMetaData_originating_change_time(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaAddRequest1_source_dsa_address(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaMetaData_originating_invocation_id(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaAddRequest1_schedule(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaMetaData_originating_usn(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaAddRequest1_options(tvb, offset, pinfo, tree, di, drep);
 
 
        proto_item_set_len(item, offset-old_offset);
 
 
        if (di->call_data->flags & DCERPC_IS_NDR64) {
-               ALIGN_TO_8_BYTES;
+               ALIGN_TO_5_BYTES;
        }
 
        return offset;
@@ -7278,132 +9981,109 @@ drsuapi_dissect_struct_DsReplicaMetaData(tvbuff_t *tvb _U_, int offset _U_, pack
 
 
 /* IDL: struct { */
-/* IDL:        [range(0,1048576)] uint32 count; */
-/* IDL:        [size_is(count)] drsuapi_DsReplicaMetaData meta_data[*]; */
+/* IDL:        [ref] drsuapi_DsReplicaObjectIdentifier *naming_context; */
+/* IDL:        [unique(1)] drsuapi_DsReplicaObjectIdentifier *source_dsa_dn; */
+/* IDL:        [unique(1)] drsuapi_DsReplicaObjectIdentifier *transport_dn; */
+/* IDL:        [charset(UTF16)] [unique(1)] uint16 *source_dsa_address; */
+/* IDL:        uint8 schedule[84]; */
+/* IDL:        drsuapi_DrsOptions options; */
 /* IDL: } */
 
 static int
-drsuapi_dissect_element_DsReplicaMetaDataCtr_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaAddRequest2_naming_context(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaMetaDataCtr_count, 0);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaAddRequest2_naming_context_, NDR_POINTER_REF, "Pointer to Naming Context (drsuapi_DsReplicaObjectIdentifier)",hf_drsuapi_drsuapi_DsReplicaAddRequest2_naming_context);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaMetaDataCtr_meta_data(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaAddRequest2_naming_context_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaMetaDataCtr_meta_data_);
+       offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaAddRequest2_naming_context,0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaMetaDataCtr_meta_data_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaAddRequest2_source_dsa_dn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaMetaData(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaMetaDataCtr_meta_data,0);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaAddRequest2_source_dsa_dn_, NDR_POINTER_UNIQUE, "Pointer to Source Dsa Dn (drsuapi_DsReplicaObjectIdentifier)",hf_drsuapi_drsuapi_DsReplicaAddRequest2_source_dsa_dn);
 
        return offset;
 }
 
-int
-drsuapi_dissect_struct_DsReplicaMetaDataCtr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+static int
+drsuapi_dissect_element_DsReplicaAddRequest2_source_dsa_dn_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       proto_item *item = NULL;
-       proto_tree *tree = NULL;
-       int old_offset;
-
-       ALIGN_TO_8_BYTES;
-
-       old_offset = offset;
-
-       if (parent_tree) {
-               item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaMetaDataCtr);
-       }
-
-       offset = drsuapi_dissect_element_DsReplicaMetaDataCtr_count(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsReplicaMetaDataCtr_meta_data(tvb, offset, pinfo, tree, di, drep);
-
-
-       proto_item_set_len(item, offset-old_offset);
-
-
-       if (di->call_data->flags & DCERPC_IS_NDR64) {
-               ALIGN_TO_8_BYTES;
-       }
+       offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaAddRequest2_source_dsa_dn,0);
 
        return offset;
 }
 
-
-/* IDL: struct { */
-/* IDL:        [max_recursion(20000)] [unique(1)] drsuapi_DsReplicaObjectListItemEx *next_object; */
-/* IDL:        drsuapi_DsReplicaObject object; */
-/* IDL:        uint32 is_nc_prefix; */
-/* IDL:        [unique(1)] GUID *parent_object_guid; */
-/* IDL:        [unique(1)] drsuapi_DsReplicaMetaDataCtr *meta_data_ctr; */
-/* IDL: } */
-
 static int
-drsuapi_dissect_element_DsReplicaObjectListItemEx_next_object(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaAddRequest2_transport_dn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaObjectListItemEx_next_object_, NDR_POINTER_UNIQUE, "Pointer to Next Object (drsuapi_DsReplicaObjectListItemEx)",hf_drsuapi_drsuapi_DsReplicaObjectListItemEx_next_object);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaAddRequest2_transport_dn_, NDR_POINTER_UNIQUE, "Pointer to Transport Dn (drsuapi_DsReplicaObjectIdentifier)",hf_drsuapi_drsuapi_DsReplicaAddRequest2_transport_dn);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaObjectListItemEx_object(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaAddRequest2_transport_dn_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaObject(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaObjectListItemEx_object,0);
+       offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaAddRequest2_transport_dn,0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaObjectListItemEx_is_nc_prefix(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaAddRequest2_source_dsa_address(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjectListItemEx_is_nc_prefix, 0);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaAddRequest2_source_dsa_address_, NDR_POINTER_UNIQUE, "Pointer to Source Dsa Address (uint16)",hf_drsuapi_drsuapi_DsReplicaAddRequest2_source_dsa_address);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaObjectListItemEx_parent_object_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaAddRequest2_source_dsa_address_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaObjectListItemEx_parent_object_guid_, NDR_POINTER_UNIQUE, "Pointer to Parent Object Guid (GUID)",hf_drsuapi_drsuapi_DsReplicaObjectListItemEx_parent_object_guid);
+       char *data;
+
+       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsReplicaAddRequest2_source_dsa_address, FALSE, &data);
+       proto_item_append_text(tree, ": %s", data);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaObjectListItemEx_parent_object_guid_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaAddRequest2_schedule(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjectListItemEx_parent_object_guid, NULL);
+       int i;
+       for (i = 0; i < 84; i++)
+               offset = drsuapi_dissect_element_DsReplicaAddRequest2_schedule_(tvb, offset, pinfo, tree, di, drep);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaObjectListItemEx_meta_data_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaAddRequest2_schedule_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaObjectListItemEx_meta_data_ctr_, NDR_POINTER_UNIQUE, "Pointer to Meta Data Ctr (drsuapi_DsReplicaMetaDataCtr)",hf_drsuapi_drsuapi_DsReplicaObjectListItemEx_meta_data_ctr);
+       offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAddRequest2_schedule, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaObjectListItemEx_meta_data_ctr_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaAddRequest2_options(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaMetaDataCtr(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaObjectListItemEx_meta_data_ctr,0);
+       offset = drsuapi_dissect_bitmap_DrsOptions(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAddRequest2_options, 0);
 
        return offset;
 }
 
 int
-drsuapi_dissect_struct_DsReplicaObjectListItemEx(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_struct_DsReplicaAddRequest2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
        proto_item *item = NULL;
        proto_tree *tree = NULL;
@@ -7415,18 +10095,20 @@ drsuapi_dissect_struct_DsReplicaObjectListItemEx(tvbuff_t *tvb _U_, int offset _
 
        if (parent_tree) {
                item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaObjectListItemEx);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaAddRequest2);
        }
 
-       offset = drsuapi_dissect_element_DsReplicaObjectListItemEx_next_object(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaAddRequest2_naming_context(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaObjectListItemEx_object(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaAddRequest2_source_dsa_dn(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaObjectListItemEx_is_nc_prefix(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaAddRequest2_transport_dn(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaObjectListItemEx_parent_object_guid(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaAddRequest2_source_dsa_address(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaObjectListItemEx_meta_data_ctr(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaAddRequest2_schedule(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsReplicaAddRequest2_options(tvb, offset, pinfo, tree, di, drep);
 
 
        proto_item_set_len(item, offset-old_offset);
@@ -7441,988 +10123,1045 @@ drsuapi_dissect_struct_DsReplicaObjectListItemEx(tvbuff_t *tvb _U_, int offset _
 
 
 /* IDL: struct { */
-/* IDL:        GUID source_dsa_guid; */
-/* IDL:        GUID source_dsa_invocation_id; */
-/* IDL:        [unique(1)] drsuapi_DsReplicaObjectIdentifier *naming_context; */
-/* IDL:        drsuapi_DsReplicaHighWaterMark old_highwatermark; */
-/* IDL:        drsuapi_DsReplicaHighWaterMark new_highwatermark; */
-/* IDL:        [unique(1)] drsuapi_DsReplicaCursorCtrEx *uptodateness_vector; */
-/* IDL:        drsuapi_DsReplicaOIDMapping_Ctr mapping_ctr; */
-/* IDL:        drsuapi_DsExtendedError extended_ret; */
-/* IDL:        uint32 object_count; */
-/* IDL:        [value(ndr_size_drsuapi_DsGetNCChangesCtr1(r,ndr->flags)+55)] uint32 __ndr_size; */
-/* IDL:        [unique(1)] drsuapi_DsReplicaObjectListItemEx *first_object; */
-/* IDL:        uint32 more_data; */
+/* IDL:        [ref] drsuapi_DsReplicaObjectIdentifier *naming_context; */
+/* IDL:        [unique(1)] drsuapi_DsReplicaObjectIdentifier *source_dsa_dn; */
+/* IDL:        [unique(1)] drsuapi_DsReplicaObjectIdentifier *transport_dn; */
+/* IDL:        [charset(UTF16)] [unique(1)] uint16 *source_dsa_address; */
+/* IDL:        uint8 schedule[84]; */
+/* IDL:        drsuapi_DrsOptions options; */
+/* IDL:        GUID correlationID; */
+/* IDL:        [unique(1)] [value(NULL)] drsuapi_VAR_SIZE_BUFFER_WITH_VERSION *reserved_buffer; */
 /* IDL: } */
 
 static int
-drsuapi_dissect_element_DsGetNCChangesCtr1_source_dsa_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaAddRequest3_naming_context(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesCtr1_source_dsa_guid, NULL);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaAddRequest3_naming_context_, NDR_POINTER_REF, "Pointer to Naming Context (drsuapi_DsReplicaObjectIdentifier)",hf_drsuapi_drsuapi_DsReplicaAddRequest3_naming_context);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChangesCtr1_source_dsa_invocation_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaAddRequest3_naming_context_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesCtr1_source_dsa_invocation_id, NULL);
+       offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaAddRequest3_naming_context,0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChangesCtr1_naming_context(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaAddRequest3_source_dsa_dn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNCChangesCtr1_naming_context_, NDR_POINTER_UNIQUE, "Pointer to Naming Context (drsuapi_DsReplicaObjectIdentifier)",hf_drsuapi_drsuapi_DsGetNCChangesCtr1_naming_context);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaAddRequest3_source_dsa_dn_, NDR_POINTER_UNIQUE, "Pointer to Source Dsa Dn (drsuapi_DsReplicaObjectIdentifier)",hf_drsuapi_drsuapi_DsReplicaAddRequest3_source_dsa_dn);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChangesCtr1_naming_context_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaAddRequest3_source_dsa_dn_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesCtr1_naming_context,0);
+       offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaAddRequest3_source_dsa_dn,0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChangesCtr1_old_highwatermark(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaAddRequest3_transport_dn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaHighWaterMark(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesCtr1_old_highwatermark,0);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaAddRequest3_transport_dn_, NDR_POINTER_UNIQUE, "Pointer to Transport Dn (drsuapi_DsReplicaObjectIdentifier)",hf_drsuapi_drsuapi_DsReplicaAddRequest3_transport_dn);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChangesCtr1_new_highwatermark(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaAddRequest3_transport_dn_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaHighWaterMark(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesCtr1_new_highwatermark,0);
+       offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaAddRequest3_transport_dn,0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChangesCtr1_uptodateness_vector(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaAddRequest3_source_dsa_address(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNCChangesCtr1_uptodateness_vector_, NDR_POINTER_UNIQUE, "Pointer to Uptodateness Vector (drsuapi_DsReplicaCursorCtrEx)",hf_drsuapi_drsuapi_DsGetNCChangesCtr1_uptodateness_vector);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaAddRequest3_source_dsa_address_, NDR_POINTER_UNIQUE, "Pointer to Source Dsa Address (uint16)",hf_drsuapi_drsuapi_DsReplicaAddRequest3_source_dsa_address);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChangesCtr1_uptodateness_vector_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaAddRequest3_source_dsa_address_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaCursorCtrEx(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesCtr1_uptodateness_vector,0);
-
-       return offset;
-}
+       char *data;
 
-static int
-drsuapi_dissect_element_DsGetNCChangesCtr1_mapping_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = drsuapi_dissect_struct_DsReplicaOIDMapping_Ctr(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesCtr1_mapping_ctr,0);
+       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsReplicaAddRequest3_source_dsa_address, FALSE, &data);
+       proto_item_append_text(tree, ": %s", data);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChangesCtr1_extended_ret(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaAddRequest3_schedule(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_enum_DsExtendedError(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesCtr1_extended_ret, 0);
+       int i;
+       for (i = 0; i < 84; i++)
+               offset = drsuapi_dissect_element_DsReplicaAddRequest3_schedule_(tvb, offset, pinfo, tree, di, drep);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChangesCtr1_object_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaAddRequest3_schedule_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesCtr1_object_count, 0);
+       offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAddRequest3_schedule, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChangesCtr1___ndr_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaAddRequest3_options(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesCtr1___ndr_size, 0);
+       offset = drsuapi_dissect_bitmap_DrsOptions(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAddRequest3_options, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChangesCtr1_first_object(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaAddRequest3_correlationID(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNCChangesCtr1_first_object_, NDR_POINTER_UNIQUE, "Pointer to First Object (drsuapi_DsReplicaObjectListItemEx)",hf_drsuapi_drsuapi_DsGetNCChangesCtr1_first_object);
+       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAddRequest3_correlationID, NULL);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChangesCtr1_first_object_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaAddRequest3_reserved_buffer(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaObjectListItemEx(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesCtr1_first_object,0);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaAddRequest3_reserved_buffer_, NDR_POINTER_UNIQUE, "Pointer to Reserved Buffer (drsuapi_VAR_SIZE_BUFFER_WITH_VERSION)",hf_drsuapi_drsuapi_DsReplicaAddRequest3_reserved_buffer);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChangesCtr1_more_data(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaAddRequest3_reserved_buffer_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesCtr1_more_data, 0);
+       offset = drsuapi_dissect_struct_VAR_SIZE_BUFFER_WITH_VERSION(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaAddRequest3_reserved_buffer,0);
 
        return offset;
 }
 
 int
-drsuapi_dissect_struct_DsGetNCChangesCtr1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_struct_DsReplicaAddRequest3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
        proto_item *item = NULL;
        proto_tree *tree = NULL;
        int old_offset;
 
-       ALIGN_TO_8_BYTES;
+       ALIGN_TO_5_BYTES;
 
        old_offset = offset;
 
        if (parent_tree) {
                item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsGetNCChangesCtr1);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaAddRequest3);
        }
 
-       offset = drsuapi_dissect_element_DsGetNCChangesCtr1_source_dsa_guid(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsGetNCChangesCtr1_source_dsa_invocation_id(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsGetNCChangesCtr1_naming_context(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsGetNCChangesCtr1_old_highwatermark(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsGetNCChangesCtr1_new_highwatermark(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaAddRequest3_naming_context(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsGetNCChangesCtr1_uptodateness_vector(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaAddRequest3_source_dsa_dn(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsGetNCChangesCtr1_mapping_ctr(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaAddRequest3_transport_dn(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsGetNCChangesCtr1_extended_ret(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaAddRequest3_source_dsa_address(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsGetNCChangesCtr1_object_count(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaAddRequest3_schedule(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsGetNCChangesCtr1___ndr_size(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaAddRequest3_options(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsGetNCChangesCtr1_first_object(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaAddRequest3_correlationID(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsGetNCChangesCtr1_more_data(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaAddRequest3_reserved_buffer(tvb, offset, pinfo, tree, di, drep);
 
 
        proto_item_set_len(item, offset-old_offset);
 
 
        if (di->call_data->flags & DCERPC_IS_NDR64) {
-               ALIGN_TO_8_BYTES;
+               ALIGN_TO_5_BYTES;
        }
 
        return offset;
 }
 
 
-/* IDL: bitmap { */
-/* IDL:        DRSUAPI_DS_LINKED_ATTRIBUTE_FLAG_ACTIVE =  0x00000001 , */
+/* IDL: [switch_type(uint32)] union { */
+/* IDL: [case(1)] [case(1)] drsuapi_DsReplicaAddRequest1 req1; */
+/* IDL: [case(2)] [case(2)] drsuapi_DsReplicaAddRequest2 req2; */
+/* IDL: [case(3)] [case(3)] drsuapi_DsReplicaAddRequest3 req3; */
 /* IDL: } */
 
-int
-drsuapi_dissect_bitmap_DsLinkedAttributeFlags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+static int
+drsuapi_dissect_element_DsReplicaAddRequest_req1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       proto_item *item;
-       static int * const drsuapi_drsuapi_DsLinkedAttributeFlags_fields[] = {
-               &hf_drsuapi_drsuapi_DsLinkedAttributeFlags_DRSUAPI_DS_LINKED_ATTRIBUTE_FLAG_ACTIVE,
-               NULL
-       };
-       guint32 flags;
-       ALIGN_TO_4_BYTES;
-
-       item = proto_tree_add_bitmask_with_flags(parent_tree, tvb, offset, hf_index,
-                               ett_drsuapi_drsuapi_DsLinkedAttributeFlags, drsuapi_drsuapi_DsLinkedAttributeFlags_fields, DREP_ENC_INTEGER(drep), BMT_NO_FALSE);
-
-       offset = dissect_ndr_uint32(tvb, offset, pinfo, parent_tree, di, drep, -1, &flags);
+       offset = drsuapi_dissect_struct_DsReplicaAddRequest1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaAddRequest_req1,0);
 
-       if (!flags)
-               proto_item_append_text(item, ": (No values set)");
+       return offset;
+}
 
-       if (flags & (~0x00000001)) {
-               flags &= (~0x00000001);
-               proto_item_append_text(item, "Unknown bitmap value 0x%x", flags);
-       }
+static int
+drsuapi_dissect_element_DsReplicaAddRequest_req2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = drsuapi_dissect_struct_DsReplicaAddRequest2(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaAddRequest_req2,0);
 
        return offset;
 }
 
-
-/* IDL: struct { */
-/* IDL:        [unique(1)] drsuapi_DsReplicaObjectIdentifier *identifier; */
-/* IDL:        drsuapi_DsAttributeId attid; */
-/* IDL:        drsuapi_DsAttributeValue value; */
-/* IDL:        drsuapi_DsLinkedAttributeFlags flags; */
-/* IDL:        NTTIME_1sec originating_add_time; */
-/* IDL:        drsuapi_DsReplicaMetaData meta_data; */
-/* IDL: } */
-
 static int
-drsuapi_dissect_element_DsReplicaLinkedAttribute_identifier(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaAddRequest_req3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaLinkedAttribute_identifier_, NDR_POINTER_UNIQUE, "Pointer to Identifier (drsuapi_DsReplicaObjectIdentifier)",hf_drsuapi_drsuapi_DsReplicaLinkedAttribute_identifier);
+       offset = drsuapi_dissect_struct_DsReplicaAddRequest3(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaAddRequest_req3,0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaLinkedAttribute_identifier_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_DsReplicaAddRequest(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaLinkedAttribute_identifier,0);
+       proto_item *item = NULL;
+       proto_tree *tree = NULL;
+       int old_offset;
+       guint32 level;
+
+       old_offset = offset;
+       if (parent_tree) {
+               tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_DsReplicaAddRequest, &item, "drsuapi_DsReplicaAddRequest");
+       }
+
+       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level);
+       ALIGN_TO_5_BYTES;
+
+       switch(level) {
+               case 1:
+                       offset = drsuapi_dissect_element_DsReplicaAddRequest_req1(tvb, offset, pinfo, tree, di, drep);
+               break;
+
+               case 2:
+                       offset = drsuapi_dissect_element_DsReplicaAddRequest_req2(tvb, offset, pinfo, tree, di, drep);
+               break;
+
+               case 3:
+                       offset = drsuapi_dissect_element_DsReplicaAddRequest_req3(tvb, offset, pinfo, tree, di, drep);
+               break;
+       }
+       proto_item_set_len(item, offset-old_offset);
+
 
        return offset;
 }
 
+/* IDL: struct { */
+/* IDL:        [ref] drsuapi_DsReplicaObjectIdentifier *naming_context; */
+/* IDL:        [charset(UTF8)] [unique(1)] uint8 *source_dsa_address; */
+/* IDL:        drsuapi_DrsOptions options; */
+/* IDL: } */
+
 static int
-drsuapi_dissect_element_DsReplicaLinkedAttribute_attid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaDelRequest1_naming_context(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_enum_DsAttributeId(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaLinkedAttribute_attid, 0);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaDelRequest1_naming_context_, NDR_POINTER_REF, "Pointer to Naming Context (drsuapi_DsReplicaObjectIdentifier)",hf_drsuapi_drsuapi_DsReplicaDelRequest1_naming_context);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaLinkedAttribute_value(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaDelRequest1_naming_context_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsAttributeValue(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaLinkedAttribute_value,0);
+       offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaDelRequest1_naming_context,0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaLinkedAttribute_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaDelRequest1_source_dsa_address(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_bitmap_DsLinkedAttributeFlags(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaLinkedAttribute_flags, 0);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaDelRequest1_source_dsa_address_, NDR_POINTER_UNIQUE, "Pointer to Source Dsa Address (uint8)",hf_drsuapi_drsuapi_DsReplicaDelRequest1_source_dsa_address);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaLinkedAttribute_originating_add_time(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaDelRequest1_source_dsa_address_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaLinkedAttribute_originating_add_time);
+       char *data;
+
+       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint8), hf_drsuapi_drsuapi_DsReplicaDelRequest1_source_dsa_address, FALSE, &data);
+       proto_item_append_text(tree, ": %s", data);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaLinkedAttribute_meta_data(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaDelRequest1_options(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaMetaData(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaLinkedAttribute_meta_data,0);
+       offset = drsuapi_dissect_bitmap_DrsOptions(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaDelRequest1_options, 0);
 
        return offset;
 }
 
 int
-drsuapi_dissect_struct_DsReplicaLinkedAttribute(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_struct_DsReplicaDelRequest1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
        proto_item *item = NULL;
        proto_tree *tree = NULL;
        int old_offset;
 
-       ALIGN_TO_8_BYTES;
+       ALIGN_TO_5_BYTES;
 
        old_offset = offset;
 
        if (parent_tree) {
                item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaLinkedAttribute);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaDelRequest1);
        }
 
-       offset = drsuapi_dissect_element_DsReplicaLinkedAttribute_identifier(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsReplicaLinkedAttribute_attid(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsReplicaLinkedAttribute_value(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsReplicaLinkedAttribute_flags(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaDelRequest1_naming_context(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaLinkedAttribute_originating_add_time(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaDelRequest1_source_dsa_address(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaLinkedAttribute_meta_data(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaDelRequest1_options(tvb, offset, pinfo, tree, di, drep);
 
 
        proto_item_set_len(item, offset-old_offset);
 
 
        if (di->call_data->flags & DCERPC_IS_NDR64) {
-               ALIGN_TO_8_BYTES;
+               ALIGN_TO_5_BYTES;
        }
 
        return offset;
 }
 
 
-/* IDL: struct { */
-/* IDL:        [unique(1)] drsuapi_DsReplicaObjectIdentifier *identifier; */
-/* IDL:        drsuapi_DsAttributeId attid; */
-/* IDL:        drsuapi_DsAttributeValue value; */
-/* IDL:        drsuapi_DsLinkedAttributeFlags flags; */
-/* IDL:        NTTIME_1sec originating_add_time; */
-/* IDL:        drsuapi_DsReplicaMetaData meta_data; */
-/* IDL:        uint32 unused1; */
-/* IDL:        uint32 unused2; */
-/* IDL:        uint32 unused3; */
-/* IDL:        NTTIME_1sec timeExpired; */
+/* IDL: [switch_type(uint32)] union { */
+/* IDL: [case(1)] [case(1)] drsuapi_DsReplicaDelRequest1 req1; */
 /* IDL: } */
 
 static int
-drsuapi_dissect_element_DsReplicaLinkedAttribute3_identifier(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaDelRequest_req1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaLinkedAttribute3_identifier_, NDR_POINTER_UNIQUE, "Pointer to Identifier (drsuapi_DsReplicaObjectIdentifier)",hf_drsuapi_drsuapi_DsReplicaLinkedAttribute3_identifier);
+       offset = drsuapi_dissect_struct_DsReplicaDelRequest1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaDelRequest_req1,0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaLinkedAttribute3_identifier_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_DsReplicaDelRequest(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaLinkedAttribute3_identifier,0);
+       proto_item *item = NULL;
+       proto_tree *tree = NULL;
+       int old_offset;
+       guint32 level;
+
+       old_offset = offset;
+       if (parent_tree) {
+               tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_DsReplicaDelRequest, &item, "drsuapi_DsReplicaDelRequest");
+       }
+
+       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level);
+       ALIGN_TO_5_BYTES;
+
+       switch(level) {
+               case 1:
+                       offset = drsuapi_dissect_element_DsReplicaDelRequest_req1(tvb, offset, pinfo, tree, di, drep);
+               break;
+       }
+       proto_item_set_len(item, offset-old_offset);
+
 
        return offset;
 }
 
+/* IDL: struct { */
+/* IDL:        [ref] drsuapi_DsReplicaObjectIdentifier *naming_context; */
+/* IDL:        GUID source_dra; */
+/* IDL:        [charset(UTF16)] [unique(1)] uint16 *source_dra_address; */
+/* IDL:        uint8 schedule[84]; */
+/* IDL:        drsuapi_DrsOptions replica_flags; */
+/* IDL:        uint32 modify_fields; */
+/* IDL:        drsuapi_DrsOptions options; */
+/* IDL: } */
+
 static int
-drsuapi_dissect_element_DsReplicaLinkedAttribute3_attid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaModRequest1_naming_context(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_enum_DsAttributeId(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaLinkedAttribute3_attid, 0);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaModRequest1_naming_context_, NDR_POINTER_REF, "Pointer to Naming Context (drsuapi_DsReplicaObjectIdentifier)",hf_drsuapi_drsuapi_DsReplicaModRequest1_naming_context);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaLinkedAttribute3_value(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaModRequest1_naming_context_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsAttributeValue(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaLinkedAttribute3_value,0);
+       offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaModRequest1_naming_context,0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaLinkedAttribute3_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaModRequest1_source_dra(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_bitmap_DsLinkedAttributeFlags(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaLinkedAttribute3_flags, 0);
+       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaModRequest1_source_dra, NULL);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaLinkedAttribute3_originating_add_time(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaModRequest1_source_dra_address(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaLinkedAttribute3_originating_add_time);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaModRequest1_source_dra_address_, NDR_POINTER_UNIQUE, "Pointer to Source Dra Address (uint16)",hf_drsuapi_drsuapi_DsReplicaModRequest1_source_dra_address);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaLinkedAttribute3_meta_data(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaModRequest1_source_dra_address_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaMetaData(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaLinkedAttribute3_meta_data,0);
+       char *data;
+
+       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsReplicaModRequest1_source_dra_address, FALSE, &data);
+       proto_item_append_text(tree, ": %s", data);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaLinkedAttribute3_unused1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaModRequest1_schedule(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaLinkedAttribute3_unused1, 0);
+       int i;
+       for (i = 0; i < 84; i++)
+               offset = drsuapi_dissect_element_DsReplicaModRequest1_schedule_(tvb, offset, pinfo, tree, di, drep);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaLinkedAttribute3_unused2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaModRequest1_schedule_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaLinkedAttribute3_unused2, 0);
+       offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaModRequest1_schedule, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaLinkedAttribute3_unused3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaModRequest1_replica_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaLinkedAttribute3_unused3, 0);
+       offset = drsuapi_dissect_bitmap_DrsOptions(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaModRequest1_replica_flags, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaLinkedAttribute3_timeExpired(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaModRequest1_modify_fields(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaLinkedAttribute3_timeExpired);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaModRequest1_modify_fields, 0);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsReplicaModRequest1_options(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = drsuapi_dissect_bitmap_DrsOptions(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaModRequest1_options, 0);
 
        return offset;
 }
 
 int
-drsuapi_dissect_struct_DsReplicaLinkedAttribute3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_struct_DsReplicaModRequest1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
        proto_item *item = NULL;
        proto_tree *tree = NULL;
        int old_offset;
 
-       ALIGN_TO_8_BYTES;
+       ALIGN_TO_5_BYTES;
 
        old_offset = offset;
 
        if (parent_tree) {
                item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaLinkedAttribute3);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaModRequest1);
        }
 
-       offset = drsuapi_dissect_element_DsReplicaLinkedAttribute3_identifier(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsReplicaLinkedAttribute3_attid(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsReplicaLinkedAttribute3_value(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsReplicaLinkedAttribute3_flags(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsReplicaLinkedAttribute3_originating_add_time(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsReplicaLinkedAttribute3_meta_data(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsReplicaLinkedAttribute3_unused1(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsReplicaLinkedAttribute3_unused2(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsReplicaLinkedAttribute3_unused3(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsReplicaLinkedAttribute3_timeExpired(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaModRequest1_naming_context(tvb, offset, pinfo, tree, di, drep);
 
+       offset = drsuapi_dissect_element_DsReplicaModRequest1_source_dra(tvb, offset, pinfo, tree, di, drep);
 
-       proto_item_set_len(item, offset-old_offset);
+       offset = drsuapi_dissect_element_DsReplicaModRequest1_source_dra_address(tvb, offset, pinfo, tree, di, drep);
 
+       offset = drsuapi_dissect_element_DsReplicaModRequest1_schedule(tvb, offset, pinfo, tree, di, drep);
 
-       if (di->call_data->flags & DCERPC_IS_NDR64) {
-               ALIGN_TO_8_BYTES;
-       }
+       offset = drsuapi_dissect_element_DsReplicaModRequest1_replica_flags(tvb, offset, pinfo, tree, di, drep);
 
-       return offset;
-}
+       offset = drsuapi_dissect_element_DsReplicaModRequest1_modify_fields(tvb, offset, pinfo, tree, di, drep);
 
+       offset = drsuapi_dissect_element_DsReplicaModRequest1_options(tvb, offset, pinfo, tree, di, drep);
 
-/* IDL: struct { */
-/* IDL:        GUID source_dsa_guid; */
-/* IDL:        GUID source_dsa_invocation_id; */
-/* IDL:        [unique(1)] drsuapi_DsReplicaObjectIdentifier *naming_context; */
-/* IDL:        drsuapi_DsReplicaHighWaterMark old_highwatermark; */
-/* IDL:        drsuapi_DsReplicaHighWaterMark new_highwatermark; */
-/* IDL:        [unique(1)] drsuapi_DsReplicaCursor2CtrEx *uptodateness_vector; */
-/* IDL:        drsuapi_DsReplicaOIDMapping_Ctr mapping_ctr; */
-/* IDL:        drsuapi_DsExtendedError extended_ret; */
-/* IDL:        uint32 object_count; */
-/* IDL:        [value(ndr_size_drsuapi_DsGetNCChangesCtr6(r,ndr->flags)+55)] uint32 __ndr_size; */
-/* IDL:        [unique(1)] drsuapi_DsReplicaObjectListItemEx *first_object; */
-/* IDL:        uint32 more_data; */
-/* IDL:        uint32 nc_object_count; */
-/* IDL:        uint32 nc_linked_attributes_count; */
-/* IDL:        [range(0,1048576)] uint32 linked_attributes_count; */
-/* IDL:        [size_is(linked_attributes_count)] [unique(1)] drsuapi_DsReplicaLinkedAttribute *linked_attributes; */
-/* IDL:        WERROR drs_error; */
-/* IDL: } */
 
-static int
-drsuapi_dissect_element_DsGetNCChangesCtr6_source_dsa_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesCtr6_source_dsa_guid, NULL);
+       proto_item_set_len(item, offset-old_offset);
 
-       return offset;
-}
 
-static int
-drsuapi_dissect_element_DsGetNCChangesCtr6_source_dsa_invocation_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesCtr6_source_dsa_invocation_id, NULL);
+       if (di->call_data->flags & DCERPC_IS_NDR64) {
+               ALIGN_TO_5_BYTES;
+       }
 
        return offset;
 }
 
-static int
-drsuapi_dissect_element_DsGetNCChangesCtr6_naming_context(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNCChangesCtr6_naming_context_, NDR_POINTER_UNIQUE, "Pointer to Naming Context (drsuapi_DsReplicaObjectIdentifier)",hf_drsuapi_drsuapi_DsGetNCChangesCtr6_naming_context);
 
-       return offset;
-}
+/* IDL: [switch_type(uint32)] union { */
+/* IDL: [case(1)] [case(1)] drsuapi_DsReplicaModRequest1 req1; */
+/* IDL: } */
 
 static int
-drsuapi_dissect_element_DsGetNCChangesCtr6_naming_context_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaModRequest_req1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesCtr6_naming_context,0);
+       offset = drsuapi_dissect_struct_DsReplicaModRequest1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaModRequest_req1,0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChangesCtr6_old_highwatermark(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_DsReplicaModRequest(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaHighWaterMark(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesCtr6_old_highwatermark,0);
+       proto_item *item = NULL;
+       proto_tree *tree = NULL;
+       int old_offset;
+       guint32 level;
 
-       return offset;
-}
+       old_offset = offset;
+       if (parent_tree) {
+               tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_DsReplicaModRequest, &item, "drsuapi_DsReplicaModRequest");
+       }
 
-static int
-drsuapi_dissect_element_DsGetNCChangesCtr6_new_highwatermark(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = drsuapi_dissect_struct_DsReplicaHighWaterMark(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesCtr6_new_highwatermark,0);
+       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level);
+       ALIGN_TO_5_BYTES;
 
-       return offset;
-}
+       switch(level) {
+               case 1:
+                       offset = drsuapi_dissect_element_DsReplicaModRequest_req1(tvb, offset, pinfo, tree, di, drep);
+               break;
+       }
+       proto_item_set_len(item, offset-old_offset);
 
-static int
-drsuapi_dissect_element_DsGetNCChangesCtr6_uptodateness_vector(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNCChangesCtr6_uptodateness_vector_, NDR_POINTER_UNIQUE, "Pointer to Uptodateness Vector (drsuapi_DsReplicaCursor2CtrEx)",hf_drsuapi_drsuapi_DsGetNCChangesCtr6_uptodateness_vector);
 
        return offset;
 }
 
-static int
-drsuapi_dissect_element_DsGetNCChangesCtr6_uptodateness_vector_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = drsuapi_dissect_struct_DsReplicaCursor2CtrEx(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesCtr6_uptodateness_vector,0);
+/* IDL: enum { */
+/* IDL:        DRSUAPI_DS_MEMBERSHIP_TYPE_UNIVERSAL_AND_DOMAIN_GROUPS=1, */
+/* IDL:        DRSUAPI_DS_MEMBERSHIP_TYPE_DOMAIN_LOCAL_GROUPS=2, */
+/* IDL:        DRSUAPI_DS_MEMBERSHIP_TYPE_DOMAIN_GROUPS=3, */
+/* IDL:        DRSUAPI_DS_MEMBERSHIP_TYPE_DOMAIN_LOCAL_GROUPS2=4, */
+/* IDL:        DRSUAPI_DS_MEMBERSHIP_TYPE_UNIVERSAL_GROUPS=5, */
+/* IDL:        DRSUAPI_DS_MEMBERSHIP_TYPE_GROUPMEMBERS=6, */
+/* IDL:        DRSUAPI_DS_MEMBERSHIP_TYPE_DOMAIN_GROUPS2=7, */
+/* IDL: } */
 
+int
+drsuapi_dissect_enum_DsMembershipType(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 *param _U_)
+{
+       guint32 parameter=0;
+       if (param) {
+               parameter = *param;
+       }
+       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &parameter);
+       if (param) {
+               *param = parameter;
+       }
        return offset;
 }
 
+
+/* IDL: struct { */
+/* IDL:        NTSTATUS status; */
+/* IDL:        [range(0,10000)] uint32 num_memberships; */
+/* IDL:        [range(0,10000)] uint32 num_sids; */
+/* IDL:        [size_is(num_memberships)] [unique(1)] drsuapi_DsReplicaObjectIdentifier **info_array; */
+/* IDL:        [size_is(num_memberships)] [unique(1)] security_GroupAttrs *group_attrs; */
+/* IDL:        [size_is(num_sids)] [unique(1)] dom_sid28 **sids; */
+/* IDL: } */
+
 static int
-drsuapi_dissect_element_DsGetNCChangesCtr6_mapping_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetMembershipsCtr1_status(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaOIDMapping_Ctr(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesCtr6_mapping_ctr,0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetMembershipsCtr1_status, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChangesCtr6_extended_ret(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetMembershipsCtr1_num_memberships(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_enum_DsExtendedError(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesCtr6_extended_ret, 0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetMembershipsCtr1_num_memberships, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChangesCtr6_object_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetMembershipsCtr1_num_sids(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesCtr6_object_count, 0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetMembershipsCtr1_num_sids, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChangesCtr6___ndr_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetMembershipsCtr1_info_array(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesCtr6___ndr_size, 0);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetMembershipsCtr1_info_array_, NDR_POINTER_UNIQUE, "Pointer to Info Array (drsuapi_DsReplicaObjectIdentifier)",hf_drsuapi_drsuapi_DsGetMembershipsCtr1_info_array);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChangesCtr6_first_object(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetMembershipsCtr1_info_array_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNCChangesCtr6_first_object_, NDR_POINTER_UNIQUE, "Pointer to First Object (drsuapi_DsReplicaObjectListItemEx)",hf_drsuapi_drsuapi_DsGetNCChangesCtr6_first_object);
+       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetMembershipsCtr1_info_array__);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChangesCtr6_first_object_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetMembershipsCtr1_info_array__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaObjectListItemEx(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesCtr6_first_object,0);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetMembershipsCtr1_info_array___, NDR_POINTER_UNIQUE, "Pointer to Info Array (drsuapi_DsReplicaObjectIdentifier)",hf_drsuapi_drsuapi_DsGetMembershipsCtr1_info_array);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChangesCtr6_more_data(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetMembershipsCtr1_info_array___(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesCtr6_more_data, 0);
+       offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetMembershipsCtr1_info_array,0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChangesCtr6_nc_object_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetMembershipsCtr1_group_attrs(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesCtr6_nc_object_count, 0);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetMembershipsCtr1_group_attrs_, NDR_POINTER_UNIQUE, "Pointer to Group Attrs (security_GroupAttrs)",hf_drsuapi_drsuapi_DsGetMembershipsCtr1_group_attrs);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChangesCtr6_nc_linked_attributes_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetMembershipsCtr1_group_attrs_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesCtr6_nc_linked_attributes_count, 0);
+       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetMembershipsCtr1_group_attrs__);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChangesCtr6_linked_attributes_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetMembershipsCtr1_group_attrs__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesCtr6_linked_attributes_count, 0);
+       offset = drsuapi_dissect_bitmap_security_GroupAttrs(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetMembershipsCtr1_group_attrs, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChangesCtr6_linked_attributes(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetMembershipsCtr1_sids(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNCChangesCtr6_linked_attributes_, NDR_POINTER_UNIQUE, "Pointer to Linked Attributes (drsuapi_DsReplicaLinkedAttribute)",hf_drsuapi_drsuapi_DsGetNCChangesCtr6_linked_attributes);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetMembershipsCtr1_sids_, NDR_POINTER_UNIQUE, "Pointer to Sids (dom_sid28)",hf_drsuapi_drsuapi_DsGetMembershipsCtr1_sids);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChangesCtr6_linked_attributes_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetMembershipsCtr1_sids_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNCChangesCtr6_linked_attributes__);
+       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetMembershipsCtr1_sids__);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChangesCtr6_linked_attributes__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetMembershipsCtr1_sids__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaLinkedAttribute(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesCtr6_linked_attributes,0);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetMembershipsCtr1_sids___, NDR_POINTER_UNIQUE, "Pointer to Sids (dom_sid28)",hf_drsuapi_drsuapi_DsGetMembershipsCtr1_sids);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChangesCtr6_drs_error(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetMembershipsCtr1_sids___(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesCtr6_drs_error, 0);
+
+               di->hf_index = hf_drsuapi_drsuapi_DsGetMembershipsCtr1_sids;
+
+               offset = dissect_ndr_nt_SID28(tvb, offset, pinfo, tree, di, drep);
+
 
        return offset;
 }
 
 int
-drsuapi_dissect_struct_DsGetNCChangesCtr6(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_struct_DsGetMembershipsCtr1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
        proto_item *item = NULL;
        proto_tree *tree = NULL;
        int old_offset;
 
-       ALIGN_TO_8_BYTES;
+       ALIGN_TO_5_BYTES;
 
        old_offset = offset;
 
        if (parent_tree) {
                item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsGetNCChangesCtr6);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsGetMembershipsCtr1);
        }
 
-       offset = drsuapi_dissect_element_DsGetNCChangesCtr6_source_dsa_guid(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsGetNCChangesCtr6_source_dsa_invocation_id(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsGetNCChangesCtr6_naming_context(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsGetNCChangesCtr6_old_highwatermark(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsGetNCChangesCtr6_new_highwatermark(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsGetNCChangesCtr6_uptodateness_vector(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsGetNCChangesCtr6_mapping_ctr(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsGetNCChangesCtr6_extended_ret(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsGetNCChangesCtr6_object_count(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsGetNCChangesCtr6___ndr_size(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsGetNCChangesCtr6_first_object(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsGetNCChangesCtr6_more_data(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsGetMembershipsCtr1_status(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsGetNCChangesCtr6_nc_object_count(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsGetMembershipsCtr1_num_memberships(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsGetNCChangesCtr6_nc_linked_attributes_count(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsGetMembershipsCtr1_num_sids(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsGetNCChangesCtr6_linked_attributes_count(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsGetMembershipsCtr1_info_array(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsGetNCChangesCtr6_linked_attributes(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsGetMembershipsCtr1_group_attrs(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsGetNCChangesCtr6_drs_error(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsGetMembershipsCtr1_sids(tvb, offset, pinfo, tree, di, drep);
 
 
        proto_item_set_len(item, offset-old_offset);
 
 
        if (di->call_data->flags & DCERPC_IS_NDR64) {
-               ALIGN_TO_8_BYTES;
+               ALIGN_TO_5_BYTES;
        }
 
        return offset;
 }
 
 
-/* IDL: struct { */
-/* IDL:        GUID source_dsa_guid; */
-/* IDL:        GUID source_dsa_invocation_id; */
-/* IDL:        [unique(1)] drsuapi_DsReplicaObjectIdentifier *naming_context; */
-/* IDL:        drsuapi_DsReplicaHighWaterMark old_highwatermark; */
-/* IDL:        drsuapi_DsReplicaHighWaterMark new_highwatermark; */
-/* IDL:        [unique(1)] drsuapi_DsReplicaCursor2CtrEx *uptodateness_vector; */
-/* IDL:        drsuapi_DsReplicaOIDMapping_Ctr mapping_ctr; */
-/* IDL:        drsuapi_DsExtendedError extended_ret; */
-/* IDL:        uint32 object_count; */
-/* IDL:        [value(ndr_size_drsuapi_DsGetNCChangesCtr9(r,ndr->flags)+55)] uint32 __ndr_size; */
-/* IDL:        [unique(1)] drsuapi_DsReplicaObjectListItemEx *first_object; */
-/* IDL:        uint32 more_data; */
-/* IDL:        uint32 nc_object_count; */
-/* IDL:        uint32 nc_linked_attributes_count; */
-/* IDL:        [range(0,1048576)] uint32 linked_attributes_count; */
-/* IDL:        [size_is(linked_attributes_count)] [unique(1)] drsuapi_DsReplicaLinkedAttribute3 *linked_attributes; */
-/* IDL:        WERROR drs_error; */
+/* IDL: [switch_type(uint32)] union { */
+/* IDL: [case(1)] [case(1)] drsuapi_DsGetMembershipsCtr1 ctr1; */
 /* IDL: } */
 
 static int
-drsuapi_dissect_element_DsGetNCChangesCtr9_source_dsa_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetMembershipsCtr_ctr1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesCtr9_source_dsa_guid, NULL);
+       offset = drsuapi_dissect_struct_DsGetMembershipsCtr1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetMembershipsCtr_ctr1,0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChangesCtr9_source_dsa_invocation_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_DsGetMembershipsCtr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
-       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesCtr9_source_dsa_invocation_id, NULL);
+       proto_item *item = NULL;
+       proto_tree *tree = NULL;
+       int old_offset;
+       guint32 level;
 
-       return offset;
-}
+       old_offset = offset;
+       if (parent_tree) {
+               tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_DsGetMembershipsCtr, &item, "drsuapi_DsGetMembershipsCtr");
+       }
+
+       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level);
+       ALIGN_TO_5_BYTES;
+
+       switch(level) {
+               case 1:
+                       offset = drsuapi_dissect_element_DsGetMembershipsCtr_ctr1(tvb, offset, pinfo, tree, di, drep);
+               break;
+       }
+       proto_item_set_len(item, offset-old_offset);
 
-static int
-drsuapi_dissect_element_DsGetNCChangesCtr9_naming_context(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNCChangesCtr9_naming_context_, NDR_POINTER_UNIQUE, "Pointer to Naming Context (drsuapi_DsReplicaObjectIdentifier)",hf_drsuapi_drsuapi_DsGetNCChangesCtr9_naming_context);
 
        return offset;
 }
 
+/* IDL: struct { */
+/* IDL:        [range(1,10000)] uint32 count; */
+/* IDL:        [size_is(count)] [unique(1)] drsuapi_DsReplicaObjectIdentifier **info_array; */
+/* IDL:        uint32 flags; */
+/* IDL:        [range(1,7)] drsuapi_DsMembershipType type; */
+/* IDL:        [unique(1)] drsuapi_DsReplicaObjectIdentifier *domain; */
+/* IDL: } */
+
 static int
-drsuapi_dissect_element_DsGetNCChangesCtr9_naming_context_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetMembershipsRequest1_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesCtr9_naming_context,0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetMembershipsRequest1_count, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChangesCtr9_old_highwatermark(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetMembershipsRequest1_info_array(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaHighWaterMark(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesCtr9_old_highwatermark,0);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetMembershipsRequest1_info_array_, NDR_POINTER_UNIQUE, "Pointer to Info Array (drsuapi_DsReplicaObjectIdentifier)",hf_drsuapi_drsuapi_DsGetMembershipsRequest1_info_array);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChangesCtr9_new_highwatermark(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetMembershipsRequest1_info_array_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaHighWaterMark(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesCtr9_new_highwatermark,0);
+       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetMembershipsRequest1_info_array__);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChangesCtr9_uptodateness_vector(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetMembershipsRequest1_info_array__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNCChangesCtr9_uptodateness_vector_, NDR_POINTER_UNIQUE, "Pointer to Uptodateness Vector (drsuapi_DsReplicaCursor2CtrEx)",hf_drsuapi_drsuapi_DsGetNCChangesCtr9_uptodateness_vector);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetMembershipsRequest1_info_array___, NDR_POINTER_UNIQUE, "Pointer to Info Array (drsuapi_DsReplicaObjectIdentifier)",hf_drsuapi_drsuapi_DsGetMembershipsRequest1_info_array);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChangesCtr9_uptodateness_vector_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetMembershipsRequest1_info_array___(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaCursor2CtrEx(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesCtr9_uptodateness_vector,0);
+       offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetMembershipsRequest1_info_array,0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChangesCtr9_mapping_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetMembershipsRequest1_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaOIDMapping_Ctr(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesCtr9_mapping_ctr,0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetMembershipsRequest1_flags, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChangesCtr9_extended_ret(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetMembershipsRequest1_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_enum_DsExtendedError(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesCtr9_extended_ret, 0);
+       offset = drsuapi_dissect_enum_DsMembershipType(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetMembershipsRequest1_type, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChangesCtr9_object_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetMembershipsRequest1_domain(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesCtr9_object_count, 0);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetMembershipsRequest1_domain_, NDR_POINTER_UNIQUE, "Pointer to Domain (drsuapi_DsReplicaObjectIdentifier)",hf_drsuapi_drsuapi_DsGetMembershipsRequest1_domain);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChangesCtr9___ndr_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetMembershipsRequest1_domain_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesCtr9___ndr_size, 0);
+       offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetMembershipsRequest1_domain,0);
 
        return offset;
 }
 
-static int
-drsuapi_dissect_element_DsGetNCChangesCtr9_first_object(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+int
+drsuapi_dissect_struct_DsGetMembershipsRequest1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNCChangesCtr9_first_object_, NDR_POINTER_UNIQUE, "Pointer to First Object (drsuapi_DsReplicaObjectListItemEx)",hf_drsuapi_drsuapi_DsGetNCChangesCtr9_first_object);
+       proto_item *item = NULL;
+       proto_tree *tree = NULL;
+       int old_offset;
+
+       ALIGN_TO_5_BYTES;
+
+       old_offset = offset;
+
+       if (parent_tree) {
+               item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsGetMembershipsRequest1);
+       }
+
+       offset = drsuapi_dissect_element_DsGetMembershipsRequest1_count(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsGetMembershipsRequest1_info_array(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsGetMembershipsRequest1_flags(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsGetMembershipsRequest1_type(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsGetMembershipsRequest1_domain(tvb, offset, pinfo, tree, di, drep);
+
+
+       proto_item_set_len(item, offset-old_offset);
+
+
+       if (di->call_data->flags & DCERPC_IS_NDR64) {
+               ALIGN_TO_5_BYTES;
+       }
 
        return offset;
 }
 
+
+/* IDL: [switch_type(uint32)] union { */
+/* IDL: [case(1)] [case(1)] drsuapi_DsGetMembershipsRequest1 req1; */
+/* IDL: } */
+
 static int
-drsuapi_dissect_element_DsGetNCChangesCtr9_first_object_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetMembershipsRequest_req1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaObjectListItemEx(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesCtr9_first_object,0);
+       offset = drsuapi_dissect_struct_DsGetMembershipsRequest1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetMembershipsRequest_req1,0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChangesCtr9_more_data(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_DsGetMembershipsRequest(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesCtr9_more_data, 0);
+       proto_item *item = NULL;
+       proto_tree *tree = NULL;
+       int old_offset;
+       guint32 level;
+
+       old_offset = offset;
+       if (parent_tree) {
+               tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_DsGetMembershipsRequest, &item, "drsuapi_DsGetMembershipsRequest");
+       }
+
+       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level);
+       ALIGN_TO_5_BYTES;
+
+       switch(level) {
+               case 1:
+                       offset = drsuapi_dissect_element_DsGetMembershipsRequest_req1(tvb, offset, pinfo, tree, di, drep);
+               break;
+       }
+       proto_item_set_len(item, offset-old_offset);
+
 
        return offset;
 }
 
-static int
-drsuapi_dissect_element_DsGetNCChangesCtr9_nc_object_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+/* IDL: bitmap { */
+/* IDL:        DRSUAPI_NT4_CHANGELOG_GET_CHANGELOG =  0x00000001 , */
+/* IDL:        DRSUAPI_NT4_CHANGELOG_GET_SERIAL_NUMBERS =  0x00000002 , */
+/* IDL: } */
+
+int
+drsuapi_dissect_bitmap_DsGetNT4ChangeLogFlags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesCtr9_nc_object_count, 0);
+       proto_item *item;
+       static int * const drsuapi_drsuapi_DsGetNT4ChangeLogFlags_fields[] = {
+               &hf_drsuapi_drsuapi_DsGetNT4ChangeLogFlags_DRSUAPI_NT4_CHANGELOG_GET_CHANGELOG,
+               &hf_drsuapi_drsuapi_DsGetNT4ChangeLogFlags_DRSUAPI_NT4_CHANGELOG_GET_SERIAL_NUMBERS,
+               NULL
+       };
+       guint32 flags;
+       ALIGN_TO_4_BYTES;
+
+       item = proto_tree_add_bitmask_with_flags(parent_tree, tvb, offset, hf_index,
+                               ett_drsuapi_drsuapi_DsGetNT4ChangeLogFlags, drsuapi_drsuapi_DsGetNT4ChangeLogFlags_fields, DREP_ENC_INTEGER(drep), BMT_NO_FALSE);
+
+       offset = dissect_ndr_uint32(tvb, offset, pinfo, parent_tree, di, drep, -1, &flags);
+
+       if (!flags)
+               proto_item_append_text(item, ": (No values set)");
+
+       if (flags & (~0x00000003)) {
+               flags &= (~0x00000003);
+               proto_item_append_text(item, "Unknown bitmap value 0x%x", flags);
+       }
 
        return offset;
 }
 
+
+/* IDL: struct { */
+/* IDL:        drsuapi_DsGetNT4ChangeLogFlags flags; */
+/* IDL:        uint32 preferred_maximum_length; */
+/* IDL:        [range(0,0x00A00000)] uint32 restart_length; */
+/* IDL:        [size_is(restart_length)] [unique(1)] uint8 *restart_data; */
+/* IDL: } */
+
 static int
-drsuapi_dissect_element_DsGetNCChangesCtr9_nc_linked_attributes_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetNT4ChangeLogRequest1_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesCtr9_nc_linked_attributes_count, 0);
+       offset = drsuapi_dissect_bitmap_DsGetNT4ChangeLogFlags(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNT4ChangeLogRequest1_flags, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChangesCtr9_linked_attributes_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetNT4ChangeLogRequest1_preferred_maximum_length(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesCtr9_linked_attributes_count, 0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNT4ChangeLogRequest1_preferred_maximum_length, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChangesCtr9_linked_attributes(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetNT4ChangeLogRequest1_restart_length(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNCChangesCtr9_linked_attributes_, NDR_POINTER_UNIQUE, "Pointer to Linked Attributes (drsuapi_DsReplicaLinkedAttribute3)",hf_drsuapi_drsuapi_DsGetNCChangesCtr9_linked_attributes);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNT4ChangeLogRequest1_restart_length, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChangesCtr9_linked_attributes_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetNT4ChangeLogRequest1_restart_data(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNCChangesCtr9_linked_attributes__);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNT4ChangeLogRequest1_restart_data_, NDR_POINTER_UNIQUE, "Pointer to Restart Data (uint8)",hf_drsuapi_drsuapi_DsGetNT4ChangeLogRequest1_restart_data);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChangesCtr9_linked_attributes__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetNT4ChangeLogRequest1_restart_data_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaLinkedAttribute3(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesCtr9_linked_attributes,0);
+       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNT4ChangeLogRequest1_restart_data__);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChangesCtr9_drs_error(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetNT4ChangeLogRequest1_restart_data__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChangesCtr9_drs_error, 0);
+       offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNT4ChangeLogRequest1_restart_data, 0);
 
        return offset;
 }
 
 int
-drsuapi_dissect_struct_DsGetNCChangesCtr9(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_struct_DsGetNT4ChangeLogRequest1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
        proto_item *item = NULL;
        proto_tree *tree = NULL;
        int old_offset;
 
-       ALIGN_TO_8_BYTES;
+       ALIGN_TO_5_BYTES;
 
        old_offset = offset;
 
        if (parent_tree) {
                item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsGetNCChangesCtr9);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsGetNT4ChangeLogRequest1);
        }
 
-       offset = drsuapi_dissect_element_DsGetNCChangesCtr9_source_dsa_guid(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsGetNCChangesCtr9_source_dsa_invocation_id(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsGetNCChangesCtr9_naming_context(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsGetNCChangesCtr9_old_highwatermark(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsGetNCChangesCtr9_new_highwatermark(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsGetNCChangesCtr9_uptodateness_vector(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsGetNCChangesCtr9_mapping_ctr(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsGetNCChangesCtr9_extended_ret(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsGetNCChangesCtr9_object_count(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsGetNCChangesCtr9___ndr_size(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsGetNCChangesCtr9_first_object(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsGetNCChangesCtr9_more_data(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsGetNCChangesCtr9_nc_object_count(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsGetNCChangesCtr9_nc_linked_attributes_count(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsGetNT4ChangeLogRequest1_flags(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsGetNCChangesCtr9_linked_attributes_count(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsGetNT4ChangeLogRequest1_preferred_maximum_length(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsGetNCChangesCtr9_linked_attributes(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsGetNT4ChangeLogRequest1_restart_length(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsGetNCChangesCtr9_drs_error(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsGetNT4ChangeLogRequest1_restart_data(tvb, offset, pinfo, tree, di, drep);
 
 
        proto_item_set_len(item, offset-old_offset);
 
 
        if (di->call_data->flags & DCERPC_IS_NDR64) {
-               ALIGN_TO_8_BYTES;
+               ALIGN_TO_5_BYTES;
        }
 
        return offset;
@@ -8430,37 +11169,19 @@ drsuapi_dissect_struct_DsGetNCChangesCtr9(tvbuff_t *tvb _U_, int offset _U_, pac
 
 
 /* IDL: [switch_type(uint32)] union { */
-/* IDL: [case(1)] [case(1)] drsuapi_DsGetNCChangesCtr1 ctr1; */
-/* IDL: [case(6)] [case(6)] drsuapi_DsGetNCChangesCtr6 ctr6; */
-/* IDL: [case(9)] [case(9)] drsuapi_DsGetNCChangesCtr9 ctr9; */
+/* IDL: [case(1)] [case(1)] drsuapi_DsGetNT4ChangeLogRequest1 req1; */
 /* IDL: } */
 
 static int
-drsuapi_dissect_element_DsGetNCChangesCtr_ctr1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = drsuapi_dissect_struct_DsGetNCChangesCtr1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesCtr_ctr1,0);
-
-       return offset;
-}
-
-static int
-drsuapi_dissect_element_DsGetNCChangesCtr_ctr6(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = drsuapi_dissect_struct_DsGetNCChangesCtr6(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesCtr_ctr6,0);
-
-       return offset;
-}
-
-static int
-drsuapi_dissect_element_DsGetNCChangesCtr_ctr9(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetNT4ChangeLogRequest_req1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsGetNCChangesCtr9(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesCtr_ctr9,0);
+       offset = drsuapi_dissect_struct_DsGetNT4ChangeLogRequest1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNT4ChangeLogRequest_req1,0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_DsGetNCChangesCtr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_DsGetNT4ChangeLogRequest(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
        proto_item *item = NULL;
        proto_tree *tree = NULL;
@@ -8469,23 +11190,15 @@ drsuapi_dissect_DsGetNCChangesCtr(tvbuff_t *tvb _U_, int offset _U_, packet_info
 
        old_offset = offset;
        if (parent_tree) {
-               tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_DsGetNCChangesCtr, &item, "drsuapi_DsGetNCChangesCtr");
+               tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_DsGetNT4ChangeLogRequest, &item, "drsuapi_DsGetNT4ChangeLogRequest");
        }
 
        offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level);
-       ALIGN_TO_8_BYTES;
+       ALIGN_TO_5_BYTES;
 
        switch(level) {
                case 1:
-                       offset = drsuapi_dissect_element_DsGetNCChangesCtr_ctr1(tvb, offset, pinfo, tree, di, drep);
-               break;
-
-               case 6:
-                       offset = drsuapi_dissect_element_DsGetNCChangesCtr_ctr6(tvb, offset, pinfo, tree, di, drep);
-               break;
-
-               case 9:
-                       offset = drsuapi_dissect_element_DsGetNCChangesCtr_ctr9(tvb, offset, pinfo, tree, di, drep);
+                       offset = drsuapi_dissect_element_DsGetNT4ChangeLogRequest_req1(tvb, offset, pinfo, tree, di, drep);
                break;
        }
        proto_item_set_len(item, offset-old_offset);
@@ -8494,218 +11207,184 @@ drsuapi_dissect_DsGetNCChangesCtr(tvbuff_t *tvb _U_, int offset _U_, packet_info
        return offset;
 }
 
-/* IDL: struct { */
-/* IDL:        [ref] drsuapi_DsReplicaObjectIdentifier *naming_context; */
-/* IDL:        [charset(DOS)] [ref] uint8 *dest_dsa_dns_name; */
-/* IDL:        GUID dest_dsa_guid; */
-/* IDL:        drsuapi_DrsOptions options; */
-/* IDL: } */
-
-static int
-drsuapi_dissect_element_DsReplicaUpdateRefsRequest1_naming_context(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaUpdateRefsRequest1_naming_context_, NDR_POINTER_REF, "Pointer to Naming Context (drsuapi_DsReplicaObjectIdentifier)",hf_drsuapi_drsuapi_DsReplicaUpdateRefsRequest1_naming_context);
-
-       return offset;
-}
-
+/* IDL: struct { */
+/* IDL:        [range(0,0x00A00000)] uint32 restart_length; */
+/* IDL:        [range(0,0x00A00000)] uint32 log_length; */
+/* IDL:        hyper sam_serial_number; */
+/* IDL:        NTTIME sam_creation_time; */
+/* IDL:        hyper builtin_serial_number; */
+/* IDL:        NTTIME builtin_creation_time; */
+/* IDL:        hyper lsa_serial_number; */
+/* IDL:        NTTIME lsa_creation_time; */
+/* IDL:        NTSTATUS status; */
+/* IDL:        [size_is(restart_length)] [unique(1)] uint8 *restart_data; */
+/* IDL:        [size_is(log_length)] [unique(1)] uint8 *log_data; */
+/* IDL: } */
+
 static int
-drsuapi_dissect_element_DsReplicaUpdateRefsRequest1_naming_context_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetNT4ChangeLogInfo1_restart_length(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaUpdateRefsRequest1_naming_context,0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNT4ChangeLogInfo1_restart_length, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaUpdateRefsRequest1_dest_dsa_dns_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetNT4ChangeLogInfo1_log_length(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaUpdateRefsRequest1_dest_dsa_dns_name_, NDR_POINTER_REF, "Pointer to Dest Dsa Dns Name (uint8)",hf_drsuapi_drsuapi_DsReplicaUpdateRefsRequest1_dest_dsa_dns_name);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNT4ChangeLogInfo1_log_length, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaUpdateRefsRequest1_dest_dsa_dns_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetNT4ChangeLogInfo1_sam_serial_number(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       char *data;
-
-       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint8), hf_drsuapi_drsuapi_DsReplicaUpdateRefsRequest1_dest_dsa_dns_name, FALSE, &data);
-       proto_item_append_text(tree, ": %s", data);
+       offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNT4ChangeLogInfo1_sam_serial_number, NULL);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaUpdateRefsRequest1_dest_dsa_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetNT4ChangeLogInfo1_sam_creation_time(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaUpdateRefsRequest1_dest_dsa_guid, NULL);
+       offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNT4ChangeLogInfo1_sam_creation_time);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaUpdateRefsRequest1_options(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetNT4ChangeLogInfo1_builtin_serial_number(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_bitmap_DrsOptions(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaUpdateRefsRequest1_options, 0);
+       offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNT4ChangeLogInfo1_builtin_serial_number, NULL);
 
        return offset;
 }
 
-int
-drsuapi_dissect_struct_DsReplicaUpdateRefsRequest1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+static int
+drsuapi_dissect_element_DsGetNT4ChangeLogInfo1_builtin_creation_time(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       proto_item *item = NULL;
-       proto_tree *tree = NULL;
-       int old_offset;
-
-       ALIGN_TO_5_BYTES;
-
-       old_offset = offset;
-
-       if (parent_tree) {
-               item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaUpdateRefsRequest1);
-       }
-
-       offset = drsuapi_dissect_element_DsReplicaUpdateRefsRequest1_naming_context(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsReplicaUpdateRefsRequest1_dest_dsa_dns_name(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsReplicaUpdateRefsRequest1_dest_dsa_guid(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsReplicaUpdateRefsRequest1_options(tvb, offset, pinfo, tree, di, drep);
-
-
-       proto_item_set_len(item, offset-old_offset);
-
-
-       if (di->call_data->flags & DCERPC_IS_NDR64) {
-               ALIGN_TO_5_BYTES;
-       }
+       offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNT4ChangeLogInfo1_builtin_creation_time);
 
        return offset;
 }
 
-
-/* IDL: struct { */
-/* IDL:        [ref] drsuapi_DsReplicaObjectIdentifier *naming_context; */
-/* IDL:        [charset(DOS)] [ref] uint8 *dest_dsa_dns_name; */
-/* IDL:        GUID dest_dsa_guid; */
-/* IDL:        drsuapi_DrsOptions options; */
-/* IDL:        GUID correlationID; */
-/* IDL:        [unique(1)] [value(NULL)] drsuapi_VAR_SIZE_BUFFER_WITH_VERSION *reserved_buffer; */
-/* IDL: } */
-
 static int
-drsuapi_dissect_element_DsReplicaUpdateRefsRequest2_naming_context(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetNT4ChangeLogInfo1_lsa_serial_number(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaUpdateRefsRequest2_naming_context_, NDR_POINTER_REF, "Pointer to Naming Context (drsuapi_DsReplicaObjectIdentifier)",hf_drsuapi_drsuapi_DsReplicaUpdateRefsRequest2_naming_context);
+       offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNT4ChangeLogInfo1_lsa_serial_number, NULL);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaUpdateRefsRequest2_naming_context_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetNT4ChangeLogInfo1_lsa_creation_time(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaUpdateRefsRequest2_naming_context,0);
+       offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNT4ChangeLogInfo1_lsa_creation_time);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaUpdateRefsRequest2_dest_dsa_dns_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetNT4ChangeLogInfo1_status(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaUpdateRefsRequest2_dest_dsa_dns_name_, NDR_POINTER_REF, "Pointer to Dest Dsa Dns Name (uint8)",hf_drsuapi_drsuapi_DsReplicaUpdateRefsRequest2_dest_dsa_dns_name);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNT4ChangeLogInfo1_status, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaUpdateRefsRequest2_dest_dsa_dns_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetNT4ChangeLogInfo1_restart_data(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       char *data;
-
-       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint8), hf_drsuapi_drsuapi_DsReplicaUpdateRefsRequest2_dest_dsa_dns_name, FALSE, &data);
-       proto_item_append_text(tree, ": %s", data);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNT4ChangeLogInfo1_restart_data_, NDR_POINTER_UNIQUE, "Pointer to Restart Data (uint8)",hf_drsuapi_drsuapi_DsGetNT4ChangeLogInfo1_restart_data);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaUpdateRefsRequest2_dest_dsa_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetNT4ChangeLogInfo1_restart_data_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaUpdateRefsRequest2_dest_dsa_guid, NULL);
+       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNT4ChangeLogInfo1_restart_data__);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaUpdateRefsRequest2_options(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetNT4ChangeLogInfo1_restart_data__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_bitmap_DrsOptions(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaUpdateRefsRequest2_options, 0);
+       offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNT4ChangeLogInfo1_restart_data, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaUpdateRefsRequest2_correlationID(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetNT4ChangeLogInfo1_log_data(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaUpdateRefsRequest2_correlationID, NULL);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNT4ChangeLogInfo1_log_data_, NDR_POINTER_UNIQUE, "Pointer to Log Data (uint8)",hf_drsuapi_drsuapi_DsGetNT4ChangeLogInfo1_log_data);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaUpdateRefsRequest2_reserved_buffer(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetNT4ChangeLogInfo1_log_data_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaUpdateRefsRequest2_reserved_buffer_, NDR_POINTER_UNIQUE, "Pointer to Reserved Buffer (drsuapi_VAR_SIZE_BUFFER_WITH_VERSION)",hf_drsuapi_drsuapi_DsReplicaUpdateRefsRequest2_reserved_buffer);
+       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNT4ChangeLogInfo1_log_data__);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaUpdateRefsRequest2_reserved_buffer_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetNT4ChangeLogInfo1_log_data__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_VAR_SIZE_BUFFER_WITH_VERSION(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaUpdateRefsRequest2_reserved_buffer,0);
+       offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNT4ChangeLogInfo1_log_data, 0);
 
        return offset;
 }
 
 int
-drsuapi_dissect_struct_DsReplicaUpdateRefsRequest2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_struct_DsGetNT4ChangeLogInfo1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
        proto_item *item = NULL;
        proto_tree *tree = NULL;
        int old_offset;
 
-       ALIGN_TO_5_BYTES;
+       ALIGN_TO_8_BYTES;
 
        old_offset = offset;
 
        if (parent_tree) {
                item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaUpdateRefsRequest2);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsGetNT4ChangeLogInfo1);
        }
 
-       offset = drsuapi_dissect_element_DsReplicaUpdateRefsRequest2_naming_context(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsGetNT4ChangeLogInfo1_restart_length(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaUpdateRefsRequest2_dest_dsa_dns_name(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsGetNT4ChangeLogInfo1_log_length(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaUpdateRefsRequest2_dest_dsa_guid(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsGetNT4ChangeLogInfo1_sam_serial_number(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaUpdateRefsRequest2_options(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsGetNT4ChangeLogInfo1_sam_creation_time(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaUpdateRefsRequest2_correlationID(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsGetNT4ChangeLogInfo1_builtin_serial_number(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaUpdateRefsRequest2_reserved_buffer(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsGetNT4ChangeLogInfo1_builtin_creation_time(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsGetNT4ChangeLogInfo1_lsa_serial_number(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsGetNT4ChangeLogInfo1_lsa_creation_time(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsGetNT4ChangeLogInfo1_status(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsGetNT4ChangeLogInfo1_restart_data(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsGetNT4ChangeLogInfo1_log_data(tvb, offset, pinfo, tree, di, drep);
 
 
        proto_item_set_len(item, offset-old_offset);
 
 
        if (di->call_data->flags & DCERPC_IS_NDR64) {
-               ALIGN_TO_5_BYTES;
+               ALIGN_TO_8_BYTES;
        }
 
        return offset;
@@ -8713,28 +11392,19 @@ drsuapi_dissect_struct_DsReplicaUpdateRefsRequest2(tvbuff_t *tvb _U_, int offset
 
 
 /* IDL: [switch_type(uint32)] union { */
-/* IDL: [case(1)] [case(1)] drsuapi_DsReplicaUpdateRefsRequest1 req1; */
-/* IDL: [case(2)] [case(2)] drsuapi_DsReplicaUpdateRefsRequest2 req2; */
+/* IDL: [case(1)] [case(1)] drsuapi_DsGetNT4ChangeLogInfo1 info1; */
 /* IDL: } */
 
 static int
-drsuapi_dissect_element_DsReplicaUpdateRefsRequest_req1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = drsuapi_dissect_struct_DsReplicaUpdateRefsRequest1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaUpdateRefsRequest_req1,0);
-
-       return offset;
-}
-
-static int
-drsuapi_dissect_element_DsReplicaUpdateRefsRequest_req2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetNT4ChangeLogInfo_info1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaUpdateRefsRequest2(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaUpdateRefsRequest_req2,0);
+       offset = drsuapi_dissect_struct_DsGetNT4ChangeLogInfo1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNT4ChangeLogInfo_info1,0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_DsReplicaUpdateRefsRequest(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_DsGetNT4ChangeLogInfo(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
        proto_item *item = NULL;
        proto_tree *tree = NULL;
@@ -8743,19 +11413,15 @@ drsuapi_dissect_DsReplicaUpdateRefsRequest(tvbuff_t *tvb _U_, int offset _U_, pa
 
        old_offset = offset;
        if (parent_tree) {
-               tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_DsReplicaUpdateRefsRequest, &item, "drsuapi_DsReplicaUpdateRefsRequest");
+               tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_DsGetNT4ChangeLogInfo, &item, "drsuapi_DsGetNT4ChangeLogInfo");
        }
 
        offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level);
-       ALIGN_TO_5_BYTES;
+       ALIGN_TO_8_BYTES;
 
        switch(level) {
                case 1:
-                       offset = drsuapi_dissect_element_DsReplicaUpdateRefsRequest_req1(tvb, offset, pinfo, tree, di, drep);
-               break;
-
-               case 2:
-                       offset = drsuapi_dissect_element_DsReplicaUpdateRefsRequest_req2(tvb, offset, pinfo, tree, di, drep);
+                       offset = drsuapi_dissect_element_DsGetNT4ChangeLogInfo_info1(tvb, offset, pinfo, tree, di, drep);
                break;
        }
        proto_item_set_len(item, offset-old_offset);
@@ -8764,76 +11430,126 @@ drsuapi_dissect_DsReplicaUpdateRefsRequest(tvbuff_t *tvb _U_, int offset _U_, pa
        return offset;
 }
 
-/* IDL: struct { */
-/* IDL:        [ref] drsuapi_DsReplicaObjectIdentifier *naming_context; */
-/* IDL:        [charset(UTF16)] [unique(1)] uint16 *source_dsa_address; */
-/* IDL:        uint8 schedule[84]; */
-/* IDL:        drsuapi_DrsOptions options; */
+/* IDL: enum { */
+/* IDL:        DRSUAPI_DS_NAME_STATUS_OK=0, */
+/* IDL:        DRSUAPI_DS_NAME_STATUS_RESOLVE_ERROR=1, */
+/* IDL:        DRSUAPI_DS_NAME_STATUS_NOT_FOUND=2, */
+/* IDL:        DRSUAPI_DS_NAME_STATUS_NOT_UNIQUE=3, */
+/* IDL:        DRSUAPI_DS_NAME_STATUS_NO_MAPPING=4, */
+/* IDL:        DRSUAPI_DS_NAME_STATUS_DOMAIN_ONLY=5, */
+/* IDL:        DRSUAPI_DS_NAME_STATUS_NO_SYNTACTICAL_MAPPING=6, */
+/* IDL:        DRSUAPI_DS_NAME_STATUS_TRUST_REFERRAL=7, */
+/* IDL: } */
+
+int
+drsuapi_dissect_enum_DsNameStatus(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 *param _U_)
+{
+       guint32 parameter=0;
+       if (param) {
+               parameter = *param;
+       }
+       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &parameter);
+       if (param) {
+               *param = parameter;
+       }
+       return offset;
+}
+
+
+/* IDL: enum { */
+/* IDL:        DRSUAPI_DS_NAME_FLAG_NO_FLAGS=0x0, */
+/* IDL:        DRSUAPI_DS_NAME_FLAG_SYNTACTICAL_ONLY=0x1, */
+/* IDL:        DRSUAPI_DS_NAME_FLAG_EVAL_AT_DC=0x2, */
+/* IDL:        DRSUAPI_DS_NAME_FLAG_GCVERIFY=0x4, */
+/* IDL:        DRSUAPI_DS_NAME_FLAG_TRUST_REFERRAL=0x8, */
+/* IDL: } */
+
+int
+drsuapi_dissect_enum_DsNameFlags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 *param _U_)
+{
+       guint32 parameter=0;
+       if (param) {
+               parameter = *param;
+       }
+       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &parameter);
+       if (param) {
+               *param = parameter;
+       }
+       return offset;
+}
+
+
+/* IDL: enum { */
+/* IDL:        DRSUAPI_DS_NAME_FORMAT_UNKNOWN=0x00000000, */
+/* IDL:        DRSUAPI_DS_NAME_FORMAT_FQDN_1779=0x00000001, */
+/* IDL:        DRSUAPI_DS_NAME_FORMAT_NT4_ACCOUNT=0x00000002, */
+/* IDL:        DRSUAPI_DS_NAME_FORMAT_DISPLAY=0x00000003, */
+/* IDL:        DRSUAPI_DS_NAME_FORMAT_GUID=0x00000006, */
+/* IDL:        DRSUAPI_DS_NAME_FORMAT_CANONICAL=0x00000007, */
+/* IDL:        DRSUAPI_DS_NAME_FORMAT_USER_PRINCIPAL=0x00000008, */
+/* IDL:        DRSUAPI_DS_NAME_FORMAT_CANONICAL_EX=0x00000009, */
+/* IDL:        DRSUAPI_DS_NAME_FORMAT_SERVICE_PRINCIPAL=0x0000000A, */
+/* IDL:        DRSUAPI_DS_NAME_FORMAT_SID_OR_SID_HISTORY=0x0000000B, */
+/* IDL:        DRSUAPI_DS_NAME_FORMAT_DNS_DOMAIN=0x0000000C, */
+/* IDL:        DRSUAPI_DS_NAME_FORMAT_UPN_AND_ALTSECID=0xFFFFFFEF, */
+/* IDL:        DRSUAPI_DS_NAME_FORMAT_NT4_ACCOUNT_NAME_SANS_DOMAIN_EX=0xFFFFFFF0, */
+/* IDL:        DRSUAPI_DS_NAME_FORMAT_LIST_GLOBAL_CATALOG_SERVERS=0xFFFFFFF1, */
+/* IDL:        DRSUAPI_DS_NAME_FORMAT_UPN_FOR_LOGON=0xFFFFFFF2, */
+/* IDL:        DRSUAPI_DS_NAME_FORMAT_LIST_SERVERS_WITH_DCS_IN_SITE=0xFFFFFFF3, */
+/* IDL:        DRSUAPI_DS_NAME_FORMAT_STRING_SID_NAME=0xFFFFFFF4, */
+/* IDL:        DRSUAPI_DS_NAME_FORMAT_ALT_SECURITY_IDENTITIES_NAME=0xFFFFFFF5, */
+/* IDL:        DRSUAPI_DS_NAME_FORMAT_LIST_NCS=0xFFFFFFF6, */
+/* IDL:        DRSUAPI_DS_NAME_FORMAT_LIST_DOMAINS=0xFFFFFFF7, */
+/* IDL:        DRSUAPI_DS_NAME_FORMAT_MAP_SCHEMA_GUID=0xFFFFFFF8, */
+/* IDL:        DRSUAPI_DS_NAME_FORMAT_NT4_ACCOUNT_NAME_SANS_DOMAIN=0xFFFFFFF9, */
+/* IDL:        DRSUAPI_DS_NAME_FORMAT_LIST_ROLES=0xFFFFFFFA, */
+/* IDL:        DRSUAPI_DS_NAME_FORMAT_LIST_INFO_FOR_SERVER=0xFFFFFFFB, */
+/* IDL:        DRSUAPI_DS_NAME_FORMAT_LIST_SERVERS_FOR_DOMAIN_IN_SITE=0xFFFFFFFC, */
+/* IDL:        DRSUAPI_DS_NAME_FORMAT_LIST_DOMAINS_IN_SITE=0xFFFFFFFD, */
+/* IDL:        DRSUAPI_DS_NAME_FORMAT_LIST_SERVERS_IN_SITE=0xFFFFFFFE, */
+/* IDL:        DRSUAPI_DS_NAME_FORMAT_LIST_SITES=0xFFFFFFFF, */
 /* IDL: } */
 
-static int
-drsuapi_dissect_element_DsReplicaAddRequest1_naming_context(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+int
+drsuapi_dissect_enum_DsNameFormat(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 *param _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaAddRequest1_naming_context_, NDR_POINTER_REF, "Pointer to Naming Context (drsuapi_DsReplicaObjectIdentifier)",hf_drsuapi_drsuapi_DsReplicaAddRequest1_naming_context);
-
+       guint32 parameter=0;
+       if (param) {
+               parameter = *param;
+       }
+       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &parameter);
+       if (param) {
+               *param = parameter;
+       }
        return offset;
 }
 
-static int
-drsuapi_dissect_element_DsReplicaAddRequest1_naming_context_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaAddRequest1_naming_context,0);
 
-       return offset;
-}
+/* IDL: struct { */
+/* IDL:        [charset(UTF16)] [unique(1)] uint16 *str; */
+/* IDL: } */
 
 static int
-drsuapi_dissect_element_DsReplicaAddRequest1_source_dsa_address(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsNameString_str(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaAddRequest1_source_dsa_address_, NDR_POINTER_UNIQUE, "Pointer to Source Dsa Address (uint16)",hf_drsuapi_drsuapi_DsReplicaAddRequest1_source_dsa_address);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsNameString_str_, NDR_POINTER_UNIQUE, "Pointer to Str (uint16)",hf_drsuapi_drsuapi_DsNameString_str);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaAddRequest1_source_dsa_address_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsNameString_str_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
        char *data;
 
-       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsReplicaAddRequest1_source_dsa_address, FALSE, &data);
+       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsNameString_str, FALSE, &data);
        proto_item_append_text(tree, ": %s", data);
 
        return offset;
 }
 
-static int
-drsuapi_dissect_element_DsReplicaAddRequest1_schedule(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       int i;
-       for (i = 0; i < 84; i++)
-               offset = drsuapi_dissect_element_DsReplicaAddRequest1_schedule_(tvb, offset, pinfo, tree, di, drep);
-
-       return offset;
-}
-
-static int
-drsuapi_dissect_element_DsReplicaAddRequest1_schedule_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAddRequest1_schedule, 0);
-
-       return offset;
-}
-
-static int
-drsuapi_dissect_element_DsReplicaAddRequest1_options(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = drsuapi_dissect_bitmap_DrsOptions(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAddRequest1_options, 0);
-
-       return offset;
-}
-
 int
-drsuapi_dissect_struct_DsReplicaAddRequest1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_struct_DsNameString(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
        proto_item *item = NULL;
        proto_tree *tree = NULL;
@@ -8845,16 +11561,10 @@ drsuapi_dissect_struct_DsReplicaAddRequest1(tvbuff_t *tvb _U_, int offset _U_, p
 
        if (parent_tree) {
                item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaAddRequest1);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsNameString);
        }
 
-       offset = drsuapi_dissect_element_DsReplicaAddRequest1_naming_context(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsReplicaAddRequest1_source_dsa_address(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsReplicaAddRequest1_schedule(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsReplicaAddRequest1_options(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsNameString_str(tvb, offset, pinfo, tree, di, drep);
 
 
        proto_item_set_len(item, offset-old_offset);
@@ -8869,109 +11579,89 @@ drsuapi_dissect_struct_DsReplicaAddRequest1(tvbuff_t *tvb _U_, int offset _U_, p
 
 
 /* IDL: struct { */
-/* IDL:        [ref] drsuapi_DsReplicaObjectIdentifier *naming_context; */
-/* IDL:        [unique(1)] drsuapi_DsReplicaObjectIdentifier *source_dsa_dn; */
-/* IDL:        [unique(1)] drsuapi_DsReplicaObjectIdentifier *transport_dn; */
-/* IDL:        [charset(UTF16)] [unique(1)] uint16 *source_dsa_address; */
-/* IDL:        uint8 schedule[84]; */
-/* IDL:        drsuapi_DrsOptions options; */
+/* IDL:        uint32 codepage; */
+/* IDL:        uint32 language; */
+/* IDL:        drsuapi_DsNameFlags format_flags; */
+/* IDL:        drsuapi_DsNameFormat format_offered; */
+/* IDL:        drsuapi_DsNameFormat format_desired; */
+/* IDL:        [range(1,10000)] uint32 count; */
+/* IDL:        [size_is(count)] [unique(1)] drsuapi_DsNameString *names; */
 /* IDL: } */
 
 static int
-drsuapi_dissect_element_DsReplicaAddRequest2_naming_context(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaAddRequest2_naming_context_, NDR_POINTER_REF, "Pointer to Naming Context (drsuapi_DsReplicaObjectIdentifier)",hf_drsuapi_drsuapi_DsReplicaAddRequest2_naming_context);
-
-       return offset;
-}
-
-static int
-drsuapi_dissect_element_DsReplicaAddRequest2_naming_context_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaAddRequest2_naming_context,0);
-
-       return offset;
-}
-
-static int
-drsuapi_dissect_element_DsReplicaAddRequest2_source_dsa_dn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsNameRequest1_codepage(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaAddRequest2_source_dsa_dn_, NDR_POINTER_UNIQUE, "Pointer to Source Dsa Dn (drsuapi_DsReplicaObjectIdentifier)",hf_drsuapi_drsuapi_DsReplicaAddRequest2_source_dsa_dn);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsNameRequest1_codepage, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaAddRequest2_source_dsa_dn_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsNameRequest1_language(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaAddRequest2_source_dsa_dn,0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsNameRequest1_language, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaAddRequest2_transport_dn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsNameRequest1_format_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaAddRequest2_transport_dn_, NDR_POINTER_UNIQUE, "Pointer to Transport Dn (drsuapi_DsReplicaObjectIdentifier)",hf_drsuapi_drsuapi_DsReplicaAddRequest2_transport_dn);
+       offset = drsuapi_dissect_enum_DsNameFlags(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsNameRequest1_format_flags, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaAddRequest2_transport_dn_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsNameRequest1_format_offered(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaAddRequest2_transport_dn,0);
+       offset = drsuapi_dissect_enum_DsNameFormat(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsNameRequest1_format_offered, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaAddRequest2_source_dsa_address(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsNameRequest1_format_desired(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaAddRequest2_source_dsa_address_, NDR_POINTER_UNIQUE, "Pointer to Source Dsa Address (uint16)",hf_drsuapi_drsuapi_DsReplicaAddRequest2_source_dsa_address);
+       offset = drsuapi_dissect_enum_DsNameFormat(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsNameRequest1_format_desired, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaAddRequest2_source_dsa_address_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsNameRequest1_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       char *data;
-
-       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsReplicaAddRequest2_source_dsa_address, FALSE, &data);
-       proto_item_append_text(tree, ": %s", data);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsNameRequest1_count, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaAddRequest2_schedule(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsNameRequest1_names(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       int i;
-       for (i = 0; i < 84; i++)
-               offset = drsuapi_dissect_element_DsReplicaAddRequest2_schedule_(tvb, offset, pinfo, tree, di, drep);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsNameRequest1_names_, NDR_POINTER_UNIQUE, "Pointer to Names (drsuapi_DsNameString)",hf_drsuapi_drsuapi_DsNameRequest1_names);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaAddRequest2_schedule_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsNameRequest1_names_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAddRequest2_schedule, 0);
+       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsNameRequest1_names__);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaAddRequest2_options(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsNameRequest1_names__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_bitmap_DrsOptions(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAddRequest2_options, 0);
+       offset = drsuapi_dissect_struct_DsNameString(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsNameRequest1_names,0);
 
        return offset;
 }
 
 int
-drsuapi_dissect_struct_DsReplicaAddRequest2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_struct_DsNameRequest1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
        proto_item *item = NULL;
        proto_tree *tree = NULL;
@@ -8983,20 +11673,22 @@ drsuapi_dissect_struct_DsReplicaAddRequest2(tvbuff_t *tvb _U_, int offset _U_, p
 
        if (parent_tree) {
                item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaAddRequest2);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsNameRequest1);
        }
 
-       offset = drsuapi_dissect_element_DsReplicaAddRequest2_naming_context(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsNameRequest1_codepage(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaAddRequest2_source_dsa_dn(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsNameRequest1_language(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaAddRequest2_transport_dn(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsNameRequest1_format_flags(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaAddRequest2_source_dsa_address(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsNameRequest1_format_offered(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaAddRequest2_schedule(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsNameRequest1_format_desired(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaAddRequest2_options(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsNameRequest1_count(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsNameRequest1_names(tvb, offset, pinfo, tree, di, drep);
 
 
        proto_item_set_len(item, offset-old_offset);
@@ -9010,136 +11702,170 @@ drsuapi_dissect_struct_DsReplicaAddRequest2(tvbuff_t *tvb _U_, int offset _U_, p
 }
 
 
-/* IDL: struct { */
-/* IDL:        [ref] drsuapi_DsReplicaObjectIdentifier *naming_context; */
-/* IDL:        [unique(1)] drsuapi_DsReplicaObjectIdentifier *source_dsa_dn; */
-/* IDL:        [unique(1)] drsuapi_DsReplicaObjectIdentifier *transport_dn; */
-/* IDL:        [charset(UTF16)] [unique(1)] uint16 *source_dsa_address; */
-/* IDL:        uint8 schedule[84]; */
-/* IDL:        drsuapi_DrsOptions options; */
-/* IDL:        GUID correlationID; */
-/* IDL:        [unique(1)] [value(NULL)] drsuapi_VAR_SIZE_BUFFER_WITH_VERSION *reserved_buffer; */
+/* IDL: [switch_type(uint32)] union { */
+/* IDL: [case(1)] [case(1)] drsuapi_DsNameRequest1 req1; */
 /* IDL: } */
 
 static int
-drsuapi_dissect_element_DsReplicaAddRequest3_naming_context(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsNameRequest_req1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaAddRequest3_naming_context_, NDR_POINTER_REF, "Pointer to Naming Context (drsuapi_DsReplicaObjectIdentifier)",hf_drsuapi_drsuapi_DsReplicaAddRequest3_naming_context);
+       offset = drsuapi_dissect_struct_DsNameRequest1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsNameRequest_req1,0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaAddRequest3_naming_context_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_DsNameRequest(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaAddRequest3_naming_context,0);
+       proto_item *item = NULL;
+       proto_tree *tree = NULL;
+       int old_offset;
+       guint32 level;
 
-       return offset;
-}
+       old_offset = offset;
+       if (parent_tree) {
+               tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_DsNameRequest, &item, "drsuapi_DsNameRequest");
+       }
+
+       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level);
+       ALIGN_TO_5_BYTES;
+
+       switch(level) {
+               case 1:
+                       offset = drsuapi_dissect_element_DsNameRequest_req1(tvb, offset, pinfo, tree, di, drep);
+               break;
+       }
+       proto_item_set_len(item, offset-old_offset);
 
-static int
-drsuapi_dissect_element_DsReplicaAddRequest3_source_dsa_dn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaAddRequest3_source_dsa_dn_, NDR_POINTER_UNIQUE, "Pointer to Source Dsa Dn (drsuapi_DsReplicaObjectIdentifier)",hf_drsuapi_drsuapi_DsReplicaAddRequest3_source_dsa_dn);
 
        return offset;
 }
 
+/* IDL: struct { */
+/* IDL:        drsuapi_DsNameStatus status; */
+/* IDL:        [charset(UTF16)] [unique(1)] uint16 *dns_domain_name; */
+/* IDL:        [charset(UTF16)] [unique(1)] uint16 *result_name; */
+/* IDL: } */
+
 static int
-drsuapi_dissect_element_DsReplicaAddRequest3_source_dsa_dn_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsNameInfo1_status(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaAddRequest3_source_dsa_dn,0);
+       offset = drsuapi_dissect_enum_DsNameStatus(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsNameInfo1_status, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaAddRequest3_transport_dn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsNameInfo1_dns_domain_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaAddRequest3_transport_dn_, NDR_POINTER_UNIQUE, "Pointer to Transport Dn (drsuapi_DsReplicaObjectIdentifier)",hf_drsuapi_drsuapi_DsReplicaAddRequest3_transport_dn);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsNameInfo1_dns_domain_name_, NDR_POINTER_UNIQUE, "Pointer to Dns Domain Name (uint16)",hf_drsuapi_drsuapi_DsNameInfo1_dns_domain_name);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaAddRequest3_transport_dn_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsNameInfo1_dns_domain_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaAddRequest3_transport_dn,0);
+       char *data;
+
+       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsNameInfo1_dns_domain_name, FALSE, &data);
+       proto_item_append_text(tree, ": %s", data);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaAddRequest3_source_dsa_address(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsNameInfo1_result_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaAddRequest3_source_dsa_address_, NDR_POINTER_UNIQUE, "Pointer to Source Dsa Address (uint16)",hf_drsuapi_drsuapi_DsReplicaAddRequest3_source_dsa_address);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsNameInfo1_result_name_, NDR_POINTER_UNIQUE, "Pointer to Result Name (uint16)",hf_drsuapi_drsuapi_DsNameInfo1_result_name);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaAddRequest3_source_dsa_address_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsNameInfo1_result_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
        char *data;
 
-       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsReplicaAddRequest3_source_dsa_address, FALSE, &data);
+       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsNameInfo1_result_name, FALSE, &data);
        proto_item_append_text(tree, ": %s", data);
 
        return offset;
 }
 
-static int
-drsuapi_dissect_element_DsReplicaAddRequest3_schedule(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       int i;
-       for (i = 0; i < 84; i++)
-               offset = drsuapi_dissect_element_DsReplicaAddRequest3_schedule_(tvb, offset, pinfo, tree, di, drep);
+int
+drsuapi_dissect_struct_DsNameInfo1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+{
+       proto_item *item = NULL;
+       proto_tree *tree = NULL;
+       int old_offset;
+
+       ALIGN_TO_5_BYTES;
+
+       old_offset = offset;
+
+       if (parent_tree) {
+               item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsNameInfo1);
+       }
+
+       offset = drsuapi_dissect_element_DsNameInfo1_status(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsNameInfo1_dns_domain_name(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsNameInfo1_result_name(tvb, offset, pinfo, tree, di, drep);
+
+
+       proto_item_set_len(item, offset-old_offset);
+
+
+       if (di->call_data->flags & DCERPC_IS_NDR64) {
+               ALIGN_TO_5_BYTES;
+       }
 
        return offset;
 }
 
-static int
-drsuapi_dissect_element_DsReplicaAddRequest3_schedule_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAddRequest3_schedule, 0);
 
-       return offset;
-}
+/* IDL: struct { */
+/* IDL:        uint32 count; */
+/* IDL:        [size_is(count)] [unique(1)] drsuapi_DsNameInfo1 *array; */
+/* IDL: } */
 
 static int
-drsuapi_dissect_element_DsReplicaAddRequest3_options(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsNameCtr1_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_bitmap_DrsOptions(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAddRequest3_options, 0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsNameCtr1_count, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaAddRequest3_correlationID(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsNameCtr1_array(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAddRequest3_correlationID, NULL);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsNameCtr1_array_, NDR_POINTER_UNIQUE, "Pointer to Array (drsuapi_DsNameInfo1)",hf_drsuapi_drsuapi_DsNameCtr1_array);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaAddRequest3_reserved_buffer(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsNameCtr1_array_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaAddRequest3_reserved_buffer_, NDR_POINTER_UNIQUE, "Pointer to Reserved Buffer (drsuapi_VAR_SIZE_BUFFER_WITH_VERSION)",hf_drsuapi_drsuapi_DsReplicaAddRequest3_reserved_buffer);
+       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsNameCtr1_array__);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaAddRequest3_reserved_buffer_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsNameCtr1_array__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_VAR_SIZE_BUFFER_WITH_VERSION(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaAddRequest3_reserved_buffer,0);
+       offset = drsuapi_dissect_struct_DsNameInfo1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsNameCtr1_array,0);
 
        return offset;
 }
 
 int
-drsuapi_dissect_struct_DsReplicaAddRequest3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_struct_DsNameCtr1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
        proto_item *item = NULL;
        proto_tree *tree = NULL;
@@ -9151,24 +11877,12 @@ drsuapi_dissect_struct_DsReplicaAddRequest3(tvbuff_t *tvb _U_, int offset _U_, p
 
        if (parent_tree) {
                item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaAddRequest3);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsNameCtr1);
        }
 
-       offset = drsuapi_dissect_element_DsReplicaAddRequest3_naming_context(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsReplicaAddRequest3_source_dsa_dn(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsReplicaAddRequest3_transport_dn(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsReplicaAddRequest3_source_dsa_address(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsReplicaAddRequest3_schedule(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsReplicaAddRequest3_options(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsReplicaAddRequest3_correlationID(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsNameCtr1_count(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaAddRequest3_reserved_buffer(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsNameCtr1_array(tvb, offset, pinfo, tree, di, drep);
 
 
        proto_item_set_len(item, offset-old_offset);
@@ -9183,37 +11897,27 @@ drsuapi_dissect_struct_DsReplicaAddRequest3(tvbuff_t *tvb _U_, int offset _U_, p
 
 
 /* IDL: [switch_type(uint32)] union { */
-/* IDL: [case(1)] [case(1)] drsuapi_DsReplicaAddRequest1 req1; */
-/* IDL: [case(2)] [case(2)] drsuapi_DsReplicaAddRequest2 req2; */
-/* IDL: [case(3)] [case(3)] drsuapi_DsReplicaAddRequest3 req3; */
+/* IDL: [case(1)] [case(1)] [unique(1)] drsuapi_DsNameCtr1 *ctr1; */
 /* IDL: } */
 
 static int
-drsuapi_dissect_element_DsReplicaAddRequest_req1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = drsuapi_dissect_struct_DsReplicaAddRequest1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaAddRequest_req1,0);
-
-       return offset;
-}
-
-static int
-drsuapi_dissect_element_DsReplicaAddRequest_req2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsNameCtr_ctr1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaAddRequest2(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaAddRequest_req2,0);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsNameCtr_ctr1_, NDR_POINTER_UNIQUE, "Pointer to Ctr1 (drsuapi_DsNameCtr1)",hf_drsuapi_drsuapi_DsNameCtr_ctr1);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaAddRequest_req3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsNameCtr_ctr1_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaAddRequest3(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaAddRequest_req3,0);
+       offset = drsuapi_dissect_struct_DsNameCtr1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsNameCtr_ctr1,0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_DsReplicaAddRequest(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_DsNameCtr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
        proto_item *item = NULL;
        proto_tree *tree = NULL;
@@ -9222,7 +11926,7 @@ drsuapi_dissect_DsReplicaAddRequest(tvbuff_t *tvb _U_, int offset _U_, packet_in
 
        old_offset = offset;
        if (parent_tree) {
-               tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_DsReplicaAddRequest, &item, "drsuapi_DsReplicaAddRequest");
+               tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_DsNameCtr, &item, "drsuapi_DsNameCtr");
        }
 
        offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level);
@@ -9230,15 +11934,7 @@ drsuapi_dissect_DsReplicaAddRequest(tvbuff_t *tvb _U_, int offset _U_, packet_in
 
        switch(level) {
                case 1:
-                       offset = drsuapi_dissect_element_DsReplicaAddRequest_req1(tvb, offset, pinfo, tree, di, drep);
-               break;
-
-               case 2:
-                       offset = drsuapi_dissect_element_DsReplicaAddRequest_req2(tvb, offset, pinfo, tree, di, drep);
-               break;
-
-               case 3:
-                       offset = drsuapi_dissect_element_DsReplicaAddRequest_req3(tvb, offset, pinfo, tree, di, drep);
+                       offset = drsuapi_dissect_element_DsNameCtr_ctr1(tvb, offset, pinfo, tree, di, drep);
                break;
        }
        proto_item_set_len(item, offset-old_offset);
@@ -9247,57 +11943,104 @@ drsuapi_dissect_DsReplicaAddRequest(tvbuff_t *tvb _U_, int offset _U_, packet_in
        return offset;
 }
 
+/* IDL: enum { */
+/* IDL:        DRSUAPI_DS_SPN_OPERATION_ADD=0, */
+/* IDL:        DRSUAPI_DS_SPN_OPERATION_REPLACE=1, */
+/* IDL:        DRSUAPI_DS_SPN_OPERATION_DELETE=2, */
+/* IDL: } */
+
+int
+drsuapi_dissect_enum_DsSpnOperation(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 *param _U_)
+{
+       guint32 parameter=0;
+       if (param) {
+               parameter = *param;
+       }
+       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &parameter);
+       if (param) {
+               *param = parameter;
+       }
+       return offset;
+}
+
+
 /* IDL: struct { */
-/* IDL:        [ref] drsuapi_DsReplicaObjectIdentifier *naming_context; */
-/* IDL:        [charset(UTF8)] [unique(1)] uint8 *source_dsa_address; */
-/* IDL:        drsuapi_DrsOptions options; */
+/* IDL:        drsuapi_DsSpnOperation operation; */
+/* IDL:        uint32 unknown1; */
+/* IDL:        [charset(UTF16)] [unique(1)] uint16 *object_dn; */
+/* IDL:        [range(0,10000)] uint32 count; */
+/* IDL:        [size_is(count)] [unique(1)] drsuapi_DsNameString *spn_names; */
 /* IDL: } */
 
 static int
-drsuapi_dissect_element_DsReplicaDelRequest1_naming_context(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsWriteAccountSpnRequest1_operation(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaDelRequest1_naming_context_, NDR_POINTER_REF, "Pointer to Naming Context (drsuapi_DsReplicaObjectIdentifier)",hf_drsuapi_drsuapi_DsReplicaDelRequest1_naming_context);
+       offset = drsuapi_dissect_enum_DsSpnOperation(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsWriteAccountSpnRequest1_operation, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaDelRequest1_naming_context_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsWriteAccountSpnRequest1_unknown1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaDelRequest1_naming_context,0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsWriteAccountSpnRequest1_unknown1, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaDelRequest1_source_dsa_address(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsWriteAccountSpnRequest1_object_dn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaDelRequest1_source_dsa_address_, NDR_POINTER_UNIQUE, "Pointer to Source Dsa Address (uint8)",hf_drsuapi_drsuapi_DsReplicaDelRequest1_source_dsa_address);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsWriteAccountSpnRequest1_object_dn_, NDR_POINTER_UNIQUE, "Pointer to Object Dn (uint16)",hf_drsuapi_drsuapi_DsWriteAccountSpnRequest1_object_dn);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaDelRequest1_source_dsa_address_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsWriteAccountSpnRequest1_object_dn_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
        char *data;
 
-       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint8), hf_drsuapi_drsuapi_DsReplicaDelRequest1_source_dsa_address, FALSE, &data);
+       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsWriteAccountSpnRequest1_object_dn, FALSE, &data);
        proto_item_append_text(tree, ": %s", data);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaDelRequest1_options(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsWriteAccountSpnRequest1_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_bitmap_DrsOptions(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaDelRequest1_options, 0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsWriteAccountSpnRequest1_count, 0);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsWriteAccountSpnRequest1_spn_names(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsWriteAccountSpnRequest1_spn_names_, NDR_POINTER_UNIQUE, "Pointer to Spn Names (drsuapi_DsNameString)",hf_drsuapi_drsuapi_DsWriteAccountSpnRequest1_spn_names);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsWriteAccountSpnRequest1_spn_names_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsWriteAccountSpnRequest1_spn_names__);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsWriteAccountSpnRequest1_spn_names__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = drsuapi_dissect_struct_DsNameString(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsWriteAccountSpnRequest1_spn_names,0);
 
        return offset;
 }
 
 int
-drsuapi_dissect_struct_DsReplicaDelRequest1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_struct_DsWriteAccountSpnRequest1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
        proto_item *item = NULL;
        proto_tree *tree = NULL;
@@ -9309,14 +12052,18 @@ drsuapi_dissect_struct_DsReplicaDelRequest1(tvbuff_t *tvb _U_, int offset _U_, p
 
        if (parent_tree) {
                item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaDelRequest1);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsWriteAccountSpnRequest1);
        }
 
-       offset = drsuapi_dissect_element_DsReplicaDelRequest1_naming_context(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsWriteAccountSpnRequest1_operation(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaDelRequest1_source_dsa_address(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsWriteAccountSpnRequest1_unknown1(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaDelRequest1_options(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsWriteAccountSpnRequest1_object_dn(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsWriteAccountSpnRequest1_count(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsWriteAccountSpnRequest1_spn_names(tvb, offset, pinfo, tree, di, drep);
 
 
        proto_item_set_len(item, offset-old_offset);
@@ -9331,19 +12078,19 @@ drsuapi_dissect_struct_DsReplicaDelRequest1(tvbuff_t *tvb _U_, int offset _U_, p
 
 
 /* IDL: [switch_type(uint32)] union { */
-/* IDL: [case(1)] [case(1)] drsuapi_DsReplicaDelRequest1 req1; */
+/* IDL: [case(1)] [case(1)] drsuapi_DsWriteAccountSpnRequest1 req1; */
 /* IDL: } */
 
 static int
-drsuapi_dissect_element_DsReplicaDelRequest_req1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsWriteAccountSpnRequest_req1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaDelRequest1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaDelRequest_req1,0);
+       offset = drsuapi_dissect_struct_DsWriteAccountSpnRequest1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsWriteAccountSpnRequest_req1,0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_DsReplicaDelRequest(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_DsWriteAccountSpnRequest(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
        proto_item *item = NULL;
        proto_tree *tree = NULL;
@@ -9352,7 +12099,7 @@ drsuapi_dissect_DsReplicaDelRequest(tvbuff_t *tvb _U_, int offset _U_, packet_in
 
        old_offset = offset;
        if (parent_tree) {
-               tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_DsReplicaDelRequest, &item, "drsuapi_DsReplicaDelRequest");
+               tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_DsWriteAccountSpnRequest, &item, "drsuapi_DsWriteAccountSpnRequest");
        }
 
        offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level);
@@ -9360,7 +12107,7 @@ drsuapi_dissect_DsReplicaDelRequest(tvbuff_t *tvb _U_, int offset _U_, packet_in
 
        switch(level) {
                case 1:
-                       offset = drsuapi_dissect_element_DsReplicaDelRequest_req1(tvb, offset, pinfo, tree, di, drep);
+                       offset = drsuapi_dissect_element_DsWriteAccountSpnRequest_req1(tvb, offset, pinfo, tree, di, drep);
                break;
        }
        proto_item_set_len(item, offset-old_offset);
@@ -9370,102 +12117,140 @@ drsuapi_dissect_DsReplicaDelRequest(tvbuff_t *tvb _U_, int offset _U_, packet_in
 }
 
 /* IDL: struct { */
-/* IDL:        [ref] drsuapi_DsReplicaObjectIdentifier *naming_context; */
-/* IDL:        GUID source_dra; */
-/* IDL:        [charset(UTF16)] [unique(1)] uint16 *source_dra_address; */
-/* IDL:        uint8 schedule[84]; */
-/* IDL:        drsuapi_DrsOptions replica_flags; */
-/* IDL:        uint32 modify_fields; */
-/* IDL:        drsuapi_DrsOptions options; */
+/* IDL:        WERROR status; */
 /* IDL: } */
 
 static int
-drsuapi_dissect_element_DsReplicaModRequest1_naming_context(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsWriteAccountSpnResult1_status(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaModRequest1_naming_context_, NDR_POINTER_REF, "Pointer to Naming Context (drsuapi_DsReplicaObjectIdentifier)",hf_drsuapi_drsuapi_DsReplicaModRequest1_naming_context);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsWriteAccountSpnResult1_status, 0);
 
        return offset;
 }
 
-static int
-drsuapi_dissect_element_DsReplicaModRequest1_naming_context_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+int
+drsuapi_dissect_struct_DsWriteAccountSpnResult1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaModRequest1_naming_context,0);
+       proto_item *item = NULL;
+       proto_tree *tree = NULL;
+       int old_offset;
 
-       return offset;
-}
+       ALIGN_TO_4_BYTES;
 
-static int
-drsuapi_dissect_element_DsReplicaModRequest1_source_dra(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaModRequest1_source_dra, NULL);
+       old_offset = offset;
+
+       if (parent_tree) {
+               item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsWriteAccountSpnResult1);
+       }
+
+       offset = drsuapi_dissect_element_DsWriteAccountSpnResult1_status(tvb, offset, pinfo, tree, di, drep);
+
+
+       proto_item_set_len(item, offset-old_offset);
+
+
+       if (di->call_data->flags & DCERPC_IS_NDR64) {
+               ALIGN_TO_4_BYTES;
+       }
 
        return offset;
 }
 
+
+/* IDL: [switch_type(uint32)] union { */
+/* IDL: [case(1)] [case(1)] drsuapi_DsWriteAccountSpnResult1 res1; */
+/* IDL: } */
+
 static int
-drsuapi_dissect_element_DsReplicaModRequest1_source_dra_address(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsWriteAccountSpnResult_res1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaModRequest1_source_dra_address_, NDR_POINTER_UNIQUE, "Pointer to Source Dra Address (uint16)",hf_drsuapi_drsuapi_DsReplicaModRequest1_source_dra_address);
+       offset = drsuapi_dissect_struct_DsWriteAccountSpnResult1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsWriteAccountSpnResult_res1,0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaModRequest1_source_dra_address_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_DsWriteAccountSpnResult(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
-       char *data;
+       proto_item *item = NULL;
+       proto_tree *tree = NULL;
+       int old_offset;
+       guint32 level;
+
+       old_offset = offset;
+       if (parent_tree) {
+               tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_DsWriteAccountSpnResult, &item, "drsuapi_DsWriteAccountSpnResult");
+       }
+
+       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level);
+       ALIGN_TO_4_BYTES;
+
+       switch(level) {
+               case 1:
+                       offset = drsuapi_dissect_element_DsWriteAccountSpnResult_res1(tvb, offset, pinfo, tree, di, drep);
+               break;
+       }
+       proto_item_set_len(item, offset-old_offset);
 
-       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsReplicaModRequest1_source_dra_address, FALSE, &data);
-       proto_item_append_text(tree, ": %s", data);
 
        return offset;
 }
 
+/* IDL: struct { */
+/* IDL:        [charset(UTF16)] [unique(1)] uint16 *server_dn; */
+/* IDL:        [charset(UTF16)] [unique(1)] uint16 *domain_dn; */
+/* IDL:        uint32 commit; */
+/* IDL: } */
+
 static int
-drsuapi_dissect_element_DsReplicaModRequest1_schedule(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsRemoveDSServerRequest1_server_dn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       int i;
-       for (i = 0; i < 84; i++)
-               offset = drsuapi_dissect_element_DsReplicaModRequest1_schedule_(tvb, offset, pinfo, tree, di, drep);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsRemoveDSServerRequest1_server_dn_, NDR_POINTER_UNIQUE, "Pointer to Server Dn (uint16)",hf_drsuapi_drsuapi_DsRemoveDSServerRequest1_server_dn);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaModRequest1_schedule_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsRemoveDSServerRequest1_server_dn_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaModRequest1_schedule, 0);
+       char *data;
+
+       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsRemoveDSServerRequest1_server_dn, FALSE, &data);
+       proto_item_append_text(tree, ": %s", data);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaModRequest1_replica_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsRemoveDSServerRequest1_domain_dn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_bitmap_DrsOptions(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaModRequest1_replica_flags, 0);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsRemoveDSServerRequest1_domain_dn_, NDR_POINTER_UNIQUE, "Pointer to Domain Dn (uint16)",hf_drsuapi_drsuapi_DsRemoveDSServerRequest1_domain_dn);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaModRequest1_modify_fields(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsRemoveDSServerRequest1_domain_dn_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaModRequest1_modify_fields, 0);
+       char *data;
+
+       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsRemoveDSServerRequest1_domain_dn, FALSE, &data);
+       proto_item_append_text(tree, ": %s", data);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaModRequest1_options(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsRemoveDSServerRequest1_commit(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_bitmap_DrsOptions(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaModRequest1_options, 0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsRemoveDSServerRequest1_commit, 0);
 
        return offset;
 }
 
 int
-drsuapi_dissect_struct_DsReplicaModRequest1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_struct_DsRemoveDSServerRequest1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
        proto_item *item = NULL;
        proto_tree *tree = NULL;
@@ -9477,22 +12262,14 @@ drsuapi_dissect_struct_DsReplicaModRequest1(tvbuff_t *tvb _U_, int offset _U_, p
 
        if (parent_tree) {
                item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaModRequest1);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsRemoveDSServerRequest1);
        }
 
-       offset = drsuapi_dissect_element_DsReplicaModRequest1_naming_context(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsReplicaModRequest1_source_dra(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsReplicaModRequest1_source_dra_address(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsReplicaModRequest1_schedule(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsReplicaModRequest1_replica_flags(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsRemoveDSServerRequest1_server_dn(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaModRequest1_modify_fields(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsRemoveDSServerRequest1_domain_dn(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaModRequest1_options(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsRemoveDSServerRequest1_commit(tvb, offset, pinfo, tree, di, drep);
 
 
        proto_item_set_len(item, offset-old_offset);
@@ -9507,19 +12284,19 @@ drsuapi_dissect_struct_DsReplicaModRequest1(tvbuff_t *tvb _U_, int offset _U_, p
 
 
 /* IDL: [switch_type(uint32)] union { */
-/* IDL: [case(1)] [case(1)] drsuapi_DsReplicaModRequest1 req1; */
+/* IDL: [case(1)] [case(1)] drsuapi_DsRemoveDSServerRequest1 req1; */
 /* IDL: } */
 
 static int
-drsuapi_dissect_element_DsReplicaModRequest_req1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsRemoveDSServerRequest_req1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaModRequest1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaModRequest_req1,0);
+       offset = drsuapi_dissect_struct_DsRemoveDSServerRequest1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsRemoveDSServerRequest_req1,0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_DsReplicaModRequest(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_DsRemoveDSServerRequest(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
        proto_item *item = NULL;
        proto_tree *tree = NULL;
@@ -9528,7 +12305,7 @@ drsuapi_dissect_DsReplicaModRequest(tvbuff_t *tvb _U_, int offset _U_, packet_in
 
        old_offset = offset;
        if (parent_tree) {
-               tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_DsReplicaModRequest, &item, "drsuapi_DsReplicaModRequest");
+               tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_DsRemoveDSServerRequest, &item, "drsuapi_DsRemoveDSServerRequest");
        }
 
        offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level);
@@ -9536,7 +12313,7 @@ drsuapi_dissect_DsReplicaModRequest(tvbuff_t *tvb _U_, int offset _U_, packet_in
 
        switch(level) {
                case 1:
-                       offset = drsuapi_dissect_element_DsReplicaModRequest_req1(tvb, offset, pinfo, tree, di, drep);
+                       offset = drsuapi_dissect_element_DsRemoveDSServerRequest_req1(tvb, offset, pinfo, tree, di, drep);
                break;
        }
        proto_item_set_len(item, offset-old_offset);
@@ -9545,158 +12322,143 @@ drsuapi_dissect_DsReplicaModRequest(tvbuff_t *tvb _U_, int offset _U_, packet_in
        return offset;
 }
 
-/* IDL: enum { */
-/* IDL:        DRSUAPI_DS_MEMBERSHIP_TYPE_UNIVERSAL_AND_DOMAIN_GROUPS=1, */
-/* IDL:        DRSUAPI_DS_MEMBERSHIP_TYPE_DOMAIN_LOCAL_GROUPS=2, */
-/* IDL:        DRSUAPI_DS_MEMBERSHIP_TYPE_DOMAIN_GROUPS=3, */
-/* IDL:        DRSUAPI_DS_MEMBERSHIP_TYPE_DOMAIN_LOCAL_GROUPS2=4, */
-/* IDL:        DRSUAPI_DS_MEMBERSHIP_TYPE_UNIVERSAL_GROUPS=5, */
-/* IDL:        DRSUAPI_DS_MEMBERSHIP_TYPE_GROUPMEMBERS=6, */
-/* IDL:        DRSUAPI_DS_MEMBERSHIP_TYPE_DOMAIN_GROUPS2=7, */
-/* IDL: } */
-
-int
-drsuapi_dissect_enum_DsMembershipType(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 *param _U_)
-{
-       guint32 parameter=0;
-       if (param) {
-               parameter = *param;
-       }
-       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &parameter);
-       if (param) {
-               *param = parameter;
-       }
-       return offset;
-}
-
-
 /* IDL: struct { */
-/* IDL:        NTSTATUS status; */
-/* IDL:        [range(0,10000)] uint32 num_memberships; */
-/* IDL:        [range(0,10000)] uint32 num_sids; */
-/* IDL:        [size_is(num_memberships)] [unique(1)] drsuapi_DsReplicaObjectIdentifier **info_array; */
-/* IDL:        [size_is(num_memberships)] [unique(1)] security_GroupAttrs *group_attrs; */
-/* IDL:        [size_is(num_sids)] [unique(1)] dom_sid28 **sids; */
+/* IDL:        uint32 last_dc_in_domain; */
 /* IDL: } */
 
 static int
-drsuapi_dissect_element_DsGetMembershipsCtr1_status(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsRemoveDSServerResult1_last_dc_in_domain(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetMembershipsCtr1_status, 0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsRemoveDSServerResult1_last_dc_in_domain, 0);
 
        return offset;
 }
 
-static int
-drsuapi_dissect_element_DsGetMembershipsCtr1_num_memberships(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+int
+drsuapi_dissect_struct_DsRemoveDSServerResult1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetMembershipsCtr1_num_memberships, 0);
+       proto_item *item = NULL;
+       proto_tree *tree = NULL;
+       int old_offset;
 
-       return offset;
-}
+       ALIGN_TO_4_BYTES;
 
-static int
-drsuapi_dissect_element_DsGetMembershipsCtr1_num_sids(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetMembershipsCtr1_num_sids, 0);
+       old_offset = offset;
 
-       return offset;
-}
+       if (parent_tree) {
+               item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsRemoveDSServerResult1);
+       }
 
-static int
-drsuapi_dissect_element_DsGetMembershipsCtr1_info_array(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetMembershipsCtr1_info_array_, NDR_POINTER_UNIQUE, "Pointer to Info Array (drsuapi_DsReplicaObjectIdentifier)",hf_drsuapi_drsuapi_DsGetMembershipsCtr1_info_array);
+       offset = drsuapi_dissect_element_DsRemoveDSServerResult1_last_dc_in_domain(tvb, offset, pinfo, tree, di, drep);
 
-       return offset;
-}
 
-static int
-drsuapi_dissect_element_DsGetMembershipsCtr1_info_array_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetMembershipsCtr1_info_array__);
+       proto_item_set_len(item, offset-old_offset);
 
-       return offset;
-}
 
-static int
-drsuapi_dissect_element_DsGetMembershipsCtr1_info_array__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetMembershipsCtr1_info_array___, NDR_POINTER_UNIQUE, "Pointer to Info Array (drsuapi_DsReplicaObjectIdentifier)",hf_drsuapi_drsuapi_DsGetMembershipsCtr1_info_array);
+       if (di->call_data->flags & DCERPC_IS_NDR64) {
+               ALIGN_TO_4_BYTES;
+       }
 
        return offset;
 }
 
-static int
-drsuapi_dissect_element_DsGetMembershipsCtr1_info_array___(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetMembershipsCtr1_info_array,0);
 
-       return offset;
-}
+/* IDL: [switch_type(uint32)] union { */
+/* IDL: [case(1)] [case(1)] drsuapi_DsRemoveDSServerResult1 res1; */
+/* IDL: } */
 
 static int
-drsuapi_dissect_element_DsGetMembershipsCtr1_group_attrs(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsRemoveDSServerResult_res1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetMembershipsCtr1_group_attrs_, NDR_POINTER_UNIQUE, "Pointer to Group Attrs (security_GroupAttrs)",hf_drsuapi_drsuapi_DsGetMembershipsCtr1_group_attrs);
+       offset = drsuapi_dissect_struct_DsRemoveDSServerResult1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsRemoveDSServerResult_res1,0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetMembershipsCtr1_group_attrs_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_DsRemoveDSServerResult(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
-       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetMembershipsCtr1_group_attrs__);
+       proto_item *item = NULL;
+       proto_tree *tree = NULL;
+       int old_offset;
+       guint32 level;
 
-       return offset;
-}
+       old_offset = offset;
+       if (parent_tree) {
+               tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_DsRemoveDSServerResult, &item, "drsuapi_DsRemoveDSServerResult");
+       }
+
+       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level);
+       ALIGN_TO_4_BYTES;
+
+       switch(level) {
+               case 1:
+                       offset = drsuapi_dissect_element_DsRemoveDSServerResult_res1(tvb, offset, pinfo, tree, di, drep);
+               break;
+       }
+       proto_item_set_len(item, offset-old_offset);
 
-static int
-drsuapi_dissect_element_DsGetMembershipsCtr1_group_attrs__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = drsuapi_dissect_bitmap_security_GroupAttrs(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetMembershipsCtr1_group_attrs, 0);
 
        return offset;
 }
 
-static int
-drsuapi_dissect_element_DsGetMembershipsCtr1_sids(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetMembershipsCtr1_sids_, NDR_POINTER_UNIQUE, "Pointer to Sids (dom_sid28)",hf_drsuapi_drsuapi_DsGetMembershipsCtr1_sids);
+/* IDL: enum { */
+/* IDL:        DRSUAPI_DC_INFO_CTR_1=1, */
+/* IDL:        DRSUAPI_DC_INFO_CTR_2=2, */
+/* IDL:        DRSUAPI_DC_INFO_CTR_3=3, */
+/* IDL:        DRSUAPI_DC_CONNECTION_CTR_01=0xFFFFFFFF, */
+/* IDL: } */
 
+int
+drsuapi_dissect_enum_DsGetDCInfoCtrLevels(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 *param _U_)
+{
+       guint32 parameter=0;
+       if (param) {
+               parameter = *param;
+       }
+       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &parameter);
+       if (param) {
+               *param = parameter;
+       }
        return offset;
 }
 
+
+/* IDL: struct { */
+/* IDL:        [charset(UTF16)] [unique(1)] uint16 *domain_name; */
+/* IDL:        drsuapi_DsGetDCInfoCtrLevels level; */
+/* IDL: } */
+
 static int
-drsuapi_dissect_element_DsGetMembershipsCtr1_sids_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetDCInfoRequest1_domain_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetMembershipsCtr1_sids__);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetDCInfoRequest1_domain_name_, NDR_POINTER_UNIQUE, "Pointer to Domain Name (uint16)",hf_drsuapi_drsuapi_DsGetDCInfoRequest1_domain_name);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetMembershipsCtr1_sids__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetDCInfoRequest1_domain_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetMembershipsCtr1_sids___, NDR_POINTER_UNIQUE, "Pointer to Sids (dom_sid28)",hf_drsuapi_drsuapi_DsGetMembershipsCtr1_sids);
+       char *data;
+
+       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsGetDCInfoRequest1_domain_name, FALSE, &data);
+       proto_item_append_text(tree, ": %s", data);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetMembershipsCtr1_sids___(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetDCInfoRequest1_level(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       
-               di->hf_index = hf_drsuapi_drsuapi_DsGetMembershipsCtr1_sids;
-
-               offset = dissect_ndr_nt_SID28(tvb, offset, pinfo, tree, di, drep);
-       
+       offset = drsuapi_dissect_enum_DsGetDCInfoCtrLevels(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDCInfoRequest1_level, 0);
 
        return offset;
 }
 
 int
-drsuapi_dissect_struct_DsGetMembershipsCtr1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_struct_DsGetDCInfoRequest1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
        proto_item *item = NULL;
        proto_tree *tree = NULL;
@@ -9708,20 +12470,12 @@ drsuapi_dissect_struct_DsGetMembershipsCtr1(tvbuff_t *tvb _U_, int offset _U_, p
 
        if (parent_tree) {
                item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsGetMembershipsCtr1);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsGetDCInfoRequest1);
        }
 
-       offset = drsuapi_dissect_element_DsGetMembershipsCtr1_status(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsGetMembershipsCtr1_num_memberships(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsGetMembershipsCtr1_num_sids(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsGetMembershipsCtr1_info_array(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsGetMembershipsCtr1_group_attrs(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsGetDCInfoRequest1_domain_name(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsGetMembershipsCtr1_sids(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsGetDCInfoRequest1_level(tvb, offset, pinfo, tree, di, drep);
 
 
        proto_item_set_len(item, offset-old_offset);
@@ -9736,19 +12490,19 @@ drsuapi_dissect_struct_DsGetMembershipsCtr1(tvbuff_t *tvb _U_, int offset _U_, p
 
 
 /* IDL: [switch_type(uint32)] union { */
-/* IDL: [case(1)] [case(1)] drsuapi_DsGetMembershipsCtr1 ctr1; */
+/* IDL: [case(1)] [case(1)] drsuapi_DsGetDCInfoRequest1 req1; */
 /* IDL: } */
 
 static int
-drsuapi_dissect_element_DsGetMembershipsCtr_ctr1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetDCInfoRequest_req1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsGetMembershipsCtr1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetMembershipsCtr_ctr1,0);
+       offset = drsuapi_dissect_struct_DsGetDCInfoRequest1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetDCInfoRequest_req1,0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_DsGetMembershipsCtr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_DsGetDCInfoRequest(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
        proto_item *item = NULL;
        proto_tree *tree = NULL;
@@ -9757,7 +12511,7 @@ drsuapi_dissect_DsGetMembershipsCtr(tvbuff_t *tvb _U_, int offset _U_, packet_in
 
        old_offset = offset;
        if (parent_tree) {
-               tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_DsGetMembershipsCtr, &item, "drsuapi_DsGetMembershipsCtr");
+               tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_DsGetDCInfoRequest, &item, "drsuapi_DsGetDCInfoRequest");
        }
 
        offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level);
@@ -9765,7 +12519,7 @@ drsuapi_dissect_DsGetMembershipsCtr(tvbuff_t *tvb _U_, int offset _U_, packet_in
 
        switch(level) {
                case 1:
-                       offset = drsuapi_dissect_element_DsGetMembershipsCtr_ctr1(tvb, offset, pinfo, tree, di, drep);
+                       offset = drsuapi_dissect_element_DsGetDCInfoRequest_req1(tvb, offset, pinfo, tree, di, drep);
                break;
        }
        proto_item_set_len(item, offset-old_offset);
@@ -9775,190 +12529,162 @@ drsuapi_dissect_DsGetMembershipsCtr(tvbuff_t *tvb _U_, int offset _U_, packet_in
 }
 
 /* IDL: struct { */
-/* IDL:        [range(1,10000)] uint32 count; */
-/* IDL:        [size_is(count)] [unique(1)] drsuapi_DsReplicaObjectIdentifier **info_array; */
-/* IDL:        uint32 flags; */
-/* IDL:        [range(1,7)] drsuapi_DsMembershipType type; */
-/* IDL:        [unique(1)] drsuapi_DsReplicaObjectIdentifier *domain; */
+/* IDL:        [charset(UTF16)] [unique(1)] uint16 *netbios_name; */
+/* IDL:        [charset(UTF16)] [unique(1)] uint16 *dns_name; */
+/* IDL:        [charset(UTF16)] [unique(1)] uint16 *site_name; */
+/* IDL:        [charset(UTF16)] [unique(1)] uint16 *computer_dn; */
+/* IDL:        [charset(UTF16)] [unique(1)] uint16 *server_dn; */
+/* IDL:        uint32 is_pdc; */
+/* IDL:        uint32 is_enabled; */
 /* IDL: } */
 
 static int
-drsuapi_dissect_element_DsGetMembershipsRequest1_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetDCInfo1_netbios_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetMembershipsRequest1_count, 0);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetDCInfo1_netbios_name_, NDR_POINTER_UNIQUE, "Pointer to Netbios Name (uint16)",hf_drsuapi_drsuapi_DsGetDCInfo1_netbios_name);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetMembershipsRequest1_info_array(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetDCInfo1_netbios_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetMembershipsRequest1_info_array_, NDR_POINTER_UNIQUE, "Pointer to Info Array (drsuapi_DsReplicaObjectIdentifier)",hf_drsuapi_drsuapi_DsGetMembershipsRequest1_info_array);
+       char *data;
+
+       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsGetDCInfo1_netbios_name, FALSE, &data);
+       proto_item_append_text(tree, ": %s", data);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetMembershipsRequest1_info_array_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetDCInfo1_dns_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetMembershipsRequest1_info_array__);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetDCInfo1_dns_name_, NDR_POINTER_UNIQUE, "Pointer to Dns Name (uint16)",hf_drsuapi_drsuapi_DsGetDCInfo1_dns_name);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetMembershipsRequest1_info_array__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetDCInfo1_dns_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetMembershipsRequest1_info_array___, NDR_POINTER_UNIQUE, "Pointer to Info Array (drsuapi_DsReplicaObjectIdentifier)",hf_drsuapi_drsuapi_DsGetMembershipsRequest1_info_array);
+       char *data;
+
+       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsGetDCInfo1_dns_name, FALSE, &data);
+       proto_item_append_text(tree, ": %s", data);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetMembershipsRequest1_info_array___(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetDCInfo1_site_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetMembershipsRequest1_info_array,0);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetDCInfo1_site_name_, NDR_POINTER_UNIQUE, "Pointer to Site Name (uint16)",hf_drsuapi_drsuapi_DsGetDCInfo1_site_name);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetMembershipsRequest1_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetDCInfo1_site_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetMembershipsRequest1_flags, 0);
+       char *data;
+
+       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsGetDCInfo1_site_name, FALSE, &data);
+       proto_item_append_text(tree, ": %s", data);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetMembershipsRequest1_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetDCInfo1_computer_dn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_enum_DsMembershipType(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetMembershipsRequest1_type, 0);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetDCInfo1_computer_dn_, NDR_POINTER_UNIQUE, "Pointer to Computer Dn (uint16)",hf_drsuapi_drsuapi_DsGetDCInfo1_computer_dn);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetMembershipsRequest1_domain(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetDCInfo1_computer_dn_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetMembershipsRequest1_domain_, NDR_POINTER_UNIQUE, "Pointer to Domain (drsuapi_DsReplicaObjectIdentifier)",hf_drsuapi_drsuapi_DsGetMembershipsRequest1_domain);
+       char *data;
+
+       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsGetDCInfo1_computer_dn, FALSE, &data);
+       proto_item_append_text(tree, ": %s", data);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetMembershipsRequest1_domain_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetDCInfo1_server_dn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetMembershipsRequest1_domain,0);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetDCInfo1_server_dn_, NDR_POINTER_UNIQUE, "Pointer to Server Dn (uint16)",hf_drsuapi_drsuapi_DsGetDCInfo1_server_dn);
 
        return offset;
 }
 
-int
-drsuapi_dissect_struct_DsGetMembershipsRequest1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+static int
+drsuapi_dissect_element_DsGetDCInfo1_server_dn_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       proto_item *item = NULL;
-       proto_tree *tree = NULL;
-       int old_offset;
-
-       ALIGN_TO_5_BYTES;
-
-       old_offset = offset;
-
-       if (parent_tree) {
-               item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsGetMembershipsRequest1);
-       }
-
-       offset = drsuapi_dissect_element_DsGetMembershipsRequest1_count(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsGetMembershipsRequest1_info_array(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsGetMembershipsRequest1_flags(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsGetMembershipsRequest1_type(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsGetMembershipsRequest1_domain(tvb, offset, pinfo, tree, di, drep);
-
-
-       proto_item_set_len(item, offset-old_offset);
-
+       char *data;
 
-       if (di->call_data->flags & DCERPC_IS_NDR64) {
-               ALIGN_TO_5_BYTES;
-       }
+       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsGetDCInfo1_server_dn, FALSE, &data);
+       proto_item_append_text(tree, ": %s", data);
 
        return offset;
 }
 
+static int
+drsuapi_dissect_element_DsGetDCInfo1_is_pdc(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDCInfo1_is_pdc, 0);
 
-/* IDL: [switch_type(uint32)] union { */
-/* IDL: [case(1)] [case(1)] drsuapi_DsGetMembershipsRequest1 req1; */
-/* IDL: } */
+       return offset;
+}
 
 static int
-drsuapi_dissect_element_DsGetMembershipsRequest_req1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetDCInfo1_is_enabled(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsGetMembershipsRequest1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetMembershipsRequest_req1,0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDCInfo1_is_enabled, 0);
 
        return offset;
 }
 
-static int
-drsuapi_dissect_DsGetMembershipsRequest(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+int
+drsuapi_dissect_struct_DsGetDCInfo1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
        proto_item *item = NULL;
        proto_tree *tree = NULL;
        int old_offset;
-       guint32 level;
+
+       ALIGN_TO_5_BYTES;
 
        old_offset = offset;
+
        if (parent_tree) {
-               tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_DsGetMembershipsRequest, &item, "drsuapi_DsGetMembershipsRequest");
+               item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsGetDCInfo1);
        }
 
-       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level);
-       ALIGN_TO_5_BYTES;
+       offset = drsuapi_dissect_element_DsGetDCInfo1_netbios_name(tvb, offset, pinfo, tree, di, drep);
 
-       switch(level) {
-               case 1:
-                       offset = drsuapi_dissect_element_DsGetMembershipsRequest_req1(tvb, offset, pinfo, tree, di, drep);
-               break;
-       }
-       proto_item_set_len(item, offset-old_offset);
+       offset = drsuapi_dissect_element_DsGetDCInfo1_dns_name(tvb, offset, pinfo, tree, di, drep);
 
+       offset = drsuapi_dissect_element_DsGetDCInfo1_site_name(tvb, offset, pinfo, tree, di, drep);
 
-       return offset;
-}
+       offset = drsuapi_dissect_element_DsGetDCInfo1_computer_dn(tvb, offset, pinfo, tree, di, drep);
 
-/* IDL: bitmap { */
-/* IDL:        DRSUAPI_NT4_CHANGELOG_GET_CHANGELOG =  0x00000001 , */
-/* IDL:        DRSUAPI_NT4_CHANGELOG_GET_SERIAL_NUMBERS =  0x00000002 , */
-/* IDL: } */
+       offset = drsuapi_dissect_element_DsGetDCInfo1_server_dn(tvb, offset, pinfo, tree, di, drep);
 
-int
-drsuapi_dissect_bitmap_DsGetNT4ChangeLogFlags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
-{
-       proto_item *item;
-       static int * const drsuapi_drsuapi_DsGetNT4ChangeLogFlags_fields[] = {
-               &hf_drsuapi_drsuapi_DsGetNT4ChangeLogFlags_DRSUAPI_NT4_CHANGELOG_GET_CHANGELOG,
-               &hf_drsuapi_drsuapi_DsGetNT4ChangeLogFlags_DRSUAPI_NT4_CHANGELOG_GET_SERIAL_NUMBERS,
-               NULL
-       };
-       guint32 flags;
-       ALIGN_TO_4_BYTES;
+       offset = drsuapi_dissect_element_DsGetDCInfo1_is_pdc(tvb, offset, pinfo, tree, di, drep);
 
-       item = proto_tree_add_bitmask_with_flags(parent_tree, tvb, offset, hf_index,
-                               ett_drsuapi_drsuapi_DsGetNT4ChangeLogFlags, drsuapi_drsuapi_DsGetNT4ChangeLogFlags_fields, DREP_ENC_INTEGER(drep), BMT_NO_FALSE);
+       offset = drsuapi_dissect_element_DsGetDCInfo1_is_enabled(tvb, offset, pinfo, tree, di, drep);
 
-       offset = dissect_ndr_uint32(tvb, offset, pinfo, parent_tree, di, drep, -1, &flags);
 
-       if (!flags)
-               proto_item_append_text(item, ": (No values set)");
+       proto_item_set_len(item, offset-old_offset);
 
-       if (flags & (~0x00000003)) {
-               flags &= (~0x00000003);
-               proto_item_append_text(item, "Unknown bitmap value 0x%x", flags);
+
+       if (di->call_data->flags & DCERPC_IS_NDR64) {
+               ALIGN_TO_5_BYTES;
        }
 
        return offset;
@@ -9966,62 +12692,44 @@ drsuapi_dissect_bitmap_DsGetNT4ChangeLogFlags(tvbuff_t *tvb _U_, int offset _U_,
 
 
 /* IDL: struct { */
-/* IDL:        drsuapi_DsGetNT4ChangeLogFlags flags; */
-/* IDL:        uint32 preferred_maximum_length; */
-/* IDL:        [range(0,0x00A00000)] uint32 restart_length; */
-/* IDL:        [size_is(restart_length)] [unique(1)] uint8 *restart_data; */
+/* IDL:        [range(0,10000)] uint32 count; */
+/* IDL:        [size_is(count)] [unique(1)] drsuapi_DsGetDCInfo1 *array; */
 /* IDL: } */
 
 static int
-drsuapi_dissect_element_DsGetNT4ChangeLogRequest1_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = drsuapi_dissect_bitmap_DsGetNT4ChangeLogFlags(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNT4ChangeLogRequest1_flags, 0);
-
-       return offset;
-}
-
-static int
-drsuapi_dissect_element_DsGetNT4ChangeLogRequest1_preferred_maximum_length(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNT4ChangeLogRequest1_preferred_maximum_length, 0);
-
-       return offset;
-}
-
-static int
-drsuapi_dissect_element_DsGetNT4ChangeLogRequest1_restart_length(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetDCInfoCtr1_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNT4ChangeLogRequest1_restart_length, 0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDCInfoCtr1_count, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNT4ChangeLogRequest1_restart_data(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetDCInfoCtr1_array(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNT4ChangeLogRequest1_restart_data_, NDR_POINTER_UNIQUE, "Pointer to Restart Data (uint8)",hf_drsuapi_drsuapi_DsGetNT4ChangeLogRequest1_restart_data);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetDCInfoCtr1_array_, NDR_POINTER_UNIQUE, "Pointer to Array (drsuapi_DsGetDCInfo1)",hf_drsuapi_drsuapi_DsGetDCInfoCtr1_array);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNT4ChangeLogRequest1_restart_data_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetDCInfoCtr1_array_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNT4ChangeLogRequest1_restart_data__);
+       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetDCInfoCtr1_array__);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNT4ChangeLogRequest1_restart_data__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetDCInfoCtr1_array__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNT4ChangeLogRequest1_restart_data, 0);
+       offset = drsuapi_dissect_struct_DsGetDCInfo1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetDCInfoCtr1_array,0);
 
        return offset;
 }
 
 int
-drsuapi_dissect_struct_DsGetNT4ChangeLogRequest1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_struct_DsGetDCInfoCtr1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
        proto_item *item = NULL;
        proto_tree *tree = NULL;
@@ -10033,16 +12741,12 @@ drsuapi_dissect_struct_DsGetNT4ChangeLogRequest1(tvbuff_t *tvb _U_, int offset _
 
        if (parent_tree) {
                item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsGetNT4ChangeLogRequest1);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsGetDCInfoCtr1);
        }
 
-       offset = drsuapi_dissect_element_DsGetNT4ChangeLogRequest1_flags(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsGetNT4ChangeLogRequest1_preferred_maximum_length(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsGetNT4ChangeLogRequest1_restart_length(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsGetDCInfoCtr1_count(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsGetNT4ChangeLogRequest1_restart_data(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsGetDCInfoCtr1_array(tvb, offset, pinfo, tree, di, drep);
 
 
        proto_item_set_len(item, offset-old_offset);
@@ -10056,388 +12760,307 @@ drsuapi_dissect_struct_DsGetNT4ChangeLogRequest1(tvbuff_t *tvb _U_, int offset _
 }
 
 
-/* IDL: [switch_type(uint32)] union { */
-/* IDL: [case(1)] [case(1)] drsuapi_DsGetNT4ChangeLogRequest1 req1; */
-/* IDL: } */
+/* IDL: struct { */
+/* IDL:        [charset(UTF16)] [unique(1)] uint16 *netbios_name; */
+/* IDL:        [charset(UTF16)] [unique(1)] uint16 *dns_name; */
+/* IDL:        [charset(UTF16)] [unique(1)] uint16 *site_name; */
+/* IDL:        [charset(UTF16)] [unique(1)] uint16 *site_dn; */
+/* IDL:        [charset(UTF16)] [unique(1)] uint16 *computer_dn; */
+/* IDL:        [charset(UTF16)] [unique(1)] uint16 *server_dn; */
+/* IDL:        [charset(UTF16)] [unique(1)] uint16 *ntds_dn; */
+/* IDL:        uint32 is_pdc; */
+/* IDL:        uint32 is_enabled; */
+/* IDL:        uint32 is_gc; */
+/* IDL:        GUID site_guid; */
+/* IDL:        GUID computer_guid; */
+/* IDL:        GUID server_guid; */
+/* IDL:        GUID ntds_guid; */
+/* IDL: } */
+
+static int
+drsuapi_dissect_element_DsGetDCInfo2_netbios_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetDCInfo2_netbios_name_, NDR_POINTER_UNIQUE, "Pointer to Netbios Name (uint16)",hf_drsuapi_drsuapi_DsGetDCInfo2_netbios_name);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsGetDCInfo2_netbios_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       char *data;
+
+       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsGetDCInfo2_netbios_name, FALSE, &data);
+       proto_item_append_text(tree, ": %s", data);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsGetDCInfo2_dns_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetDCInfo2_dns_name_, NDR_POINTER_UNIQUE, "Pointer to Dns Name (uint16)",hf_drsuapi_drsuapi_DsGetDCInfo2_dns_name);
+
+       return offset;
+}
 
 static int
-drsuapi_dissect_element_DsGetNT4ChangeLogRequest_req1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetDCInfo2_dns_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsGetNT4ChangeLogRequest1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNT4ChangeLogRequest_req1,0);
+       char *data;
+
+       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsGetDCInfo2_dns_name, FALSE, &data);
+       proto_item_append_text(tree, ": %s", data);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_DsGetNT4ChangeLogRequest(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_element_DsGetDCInfo2_site_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       proto_item *item = NULL;
-       proto_tree *tree = NULL;
-       int old_offset;
-       guint32 level;
-
-       old_offset = offset;
-       if (parent_tree) {
-               tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_DsGetNT4ChangeLogRequest, &item, "drsuapi_DsGetNT4ChangeLogRequest");
-       }
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetDCInfo2_site_name_, NDR_POINTER_UNIQUE, "Pointer to Site Name (uint16)",hf_drsuapi_drsuapi_DsGetDCInfo2_site_name);
 
-       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level);
-       ALIGN_TO_5_BYTES;
+       return offset;
+}
 
-       switch(level) {
-               case 1:
-                       offset = drsuapi_dissect_element_DsGetNT4ChangeLogRequest_req1(tvb, offset, pinfo, tree, di, drep);
-               break;
-       }
-       proto_item_set_len(item, offset-old_offset);
+static int
+drsuapi_dissect_element_DsGetDCInfo2_site_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       char *data;
 
+       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsGetDCInfo2_site_name, FALSE, &data);
+       proto_item_append_text(tree, ": %s", data);
 
        return offset;
 }
 
-/* IDL: struct { */
-/* IDL:        [range(0,0x00A00000)] uint32 restart_length; */
-/* IDL:        [range(0,0x00A00000)] uint32 log_length; */
-/* IDL:        hyper sam_serial_number; */
-/* IDL:        NTTIME sam_creation_time; */
-/* IDL:        hyper builtin_serial_number; */
-/* IDL:        NTTIME builtin_creation_time; */
-/* IDL:        hyper lsa_serial_number; */
-/* IDL:        NTTIME lsa_creation_time; */
-/* IDL:        NTSTATUS status; */
-/* IDL:        [size_is(restart_length)] [unique(1)] uint8 *restart_data; */
-/* IDL:        [size_is(log_length)] [unique(1)] uint8 *log_data; */
-/* IDL: } */
-
 static int
-drsuapi_dissect_element_DsGetNT4ChangeLogInfo1_restart_length(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetDCInfo2_site_dn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNT4ChangeLogInfo1_restart_length, 0);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetDCInfo2_site_dn_, NDR_POINTER_UNIQUE, "Pointer to Site Dn (uint16)",hf_drsuapi_drsuapi_DsGetDCInfo2_site_dn);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNT4ChangeLogInfo1_log_length(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetDCInfo2_site_dn_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNT4ChangeLogInfo1_log_length, 0);
+       char *data;
+
+       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsGetDCInfo2_site_dn, FALSE, &data);
+       proto_item_append_text(tree, ": %s", data);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNT4ChangeLogInfo1_sam_serial_number(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetDCInfo2_computer_dn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNT4ChangeLogInfo1_sam_serial_number, NULL);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetDCInfo2_computer_dn_, NDR_POINTER_UNIQUE, "Pointer to Computer Dn (uint16)",hf_drsuapi_drsuapi_DsGetDCInfo2_computer_dn);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNT4ChangeLogInfo1_sam_creation_time(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetDCInfo2_computer_dn_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNT4ChangeLogInfo1_sam_creation_time);
+       char *data;
+
+       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsGetDCInfo2_computer_dn, FALSE, &data);
+       proto_item_append_text(tree, ": %s", data);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNT4ChangeLogInfo1_builtin_serial_number(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetDCInfo2_server_dn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNT4ChangeLogInfo1_builtin_serial_number, NULL);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetDCInfo2_server_dn_, NDR_POINTER_UNIQUE, "Pointer to Server Dn (uint16)",hf_drsuapi_drsuapi_DsGetDCInfo2_server_dn);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNT4ChangeLogInfo1_builtin_creation_time(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetDCInfo2_server_dn_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNT4ChangeLogInfo1_builtin_creation_time);
+       char *data;
+
+       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsGetDCInfo2_server_dn, FALSE, &data);
+       proto_item_append_text(tree, ": %s", data);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNT4ChangeLogInfo1_lsa_serial_number(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetDCInfo2_ntds_dn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNT4ChangeLogInfo1_lsa_serial_number, NULL);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetDCInfo2_ntds_dn_, NDR_POINTER_UNIQUE, "Pointer to Ntds Dn (uint16)",hf_drsuapi_drsuapi_DsGetDCInfo2_ntds_dn);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNT4ChangeLogInfo1_lsa_creation_time(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetDCInfo2_ntds_dn_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNT4ChangeLogInfo1_lsa_creation_time);
+       char *data;
+
+       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsGetDCInfo2_ntds_dn, FALSE, &data);
+       proto_item_append_text(tree, ": %s", data);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNT4ChangeLogInfo1_status(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetDCInfo2_is_pdc(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNT4ChangeLogInfo1_status, 0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDCInfo2_is_pdc, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNT4ChangeLogInfo1_restart_data(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetDCInfo2_is_enabled(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNT4ChangeLogInfo1_restart_data_, NDR_POINTER_UNIQUE, "Pointer to Restart Data (uint8)",hf_drsuapi_drsuapi_DsGetNT4ChangeLogInfo1_restart_data);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDCInfo2_is_enabled, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNT4ChangeLogInfo1_restart_data_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetDCInfo2_is_gc(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNT4ChangeLogInfo1_restart_data__);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDCInfo2_is_gc, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNT4ChangeLogInfo1_restart_data__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetDCInfo2_site_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNT4ChangeLogInfo1_restart_data, 0);
+       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDCInfo2_site_guid, NULL);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNT4ChangeLogInfo1_log_data(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetDCInfo2_computer_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNT4ChangeLogInfo1_log_data_, NDR_POINTER_UNIQUE, "Pointer to Log Data (uint8)",hf_drsuapi_drsuapi_DsGetNT4ChangeLogInfo1_log_data);
+       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDCInfo2_computer_guid, NULL);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNT4ChangeLogInfo1_log_data_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetDCInfo2_server_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNT4ChangeLogInfo1_log_data__);
+       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDCInfo2_server_guid, NULL);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNT4ChangeLogInfo1_log_data__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetDCInfo2_ntds_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNT4ChangeLogInfo1_log_data, 0);
+       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDCInfo2_ntds_guid, NULL);
 
        return offset;
 }
 
 int
-drsuapi_dissect_struct_DsGetNT4ChangeLogInfo1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_struct_DsGetDCInfo2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
        proto_item *item = NULL;
        proto_tree *tree = NULL;
        int old_offset;
 
-       ALIGN_TO_8_BYTES;
+       ALIGN_TO_5_BYTES;
 
        old_offset = offset;
 
        if (parent_tree) {
                item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsGetNT4ChangeLogInfo1);
-       }
-
-       offset = drsuapi_dissect_element_DsGetNT4ChangeLogInfo1_restart_length(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsGetNT4ChangeLogInfo1_log_length(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsGetNT4ChangeLogInfo1_sam_serial_number(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsGetNT4ChangeLogInfo1_sam_creation_time(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsGetNT4ChangeLogInfo1_builtin_serial_number(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsGetNT4ChangeLogInfo1_builtin_creation_time(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsGetNT4ChangeLogInfo1_lsa_serial_number(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsGetNT4ChangeLogInfo1_lsa_creation_time(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsGetNT4ChangeLogInfo1_status(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsGetNT4ChangeLogInfo1_restart_data(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsGetNT4ChangeLogInfo1_log_data(tvb, offset, pinfo, tree, di, drep);
-
-
-       proto_item_set_len(item, offset-old_offset);
-
-
-       if (di->call_data->flags & DCERPC_IS_NDR64) {
-               ALIGN_TO_8_BYTES;
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsGetDCInfo2);
        }
 
-       return offset;
-}
-
-
-/* IDL: [switch_type(uint32)] union { */
-/* IDL: [case(1)] [case(1)] drsuapi_DsGetNT4ChangeLogInfo1 info1; */
-/* IDL: } */
-
-static int
-drsuapi_dissect_element_DsGetNT4ChangeLogInfo_info1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = drsuapi_dissect_struct_DsGetNT4ChangeLogInfo1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNT4ChangeLogInfo_info1,0);
+       offset = drsuapi_dissect_element_DsGetDCInfo2_netbios_name(tvb, offset, pinfo, tree, di, drep);
 
-       return offset;
-}
+       offset = drsuapi_dissect_element_DsGetDCInfo2_dns_name(tvb, offset, pinfo, tree, di, drep);
 
-static int
-drsuapi_dissect_DsGetNT4ChangeLogInfo(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
-{
-       proto_item *item = NULL;
-       proto_tree *tree = NULL;
-       int old_offset;
-       guint32 level;
+       offset = drsuapi_dissect_element_DsGetDCInfo2_site_name(tvb, offset, pinfo, tree, di, drep);
 
-       old_offset = offset;
-       if (parent_tree) {
-               tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_DsGetNT4ChangeLogInfo, &item, "drsuapi_DsGetNT4ChangeLogInfo");
-       }
+       offset = drsuapi_dissect_element_DsGetDCInfo2_site_dn(tvb, offset, pinfo, tree, di, drep);
 
-       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level);
-       ALIGN_TO_8_BYTES;
+       offset = drsuapi_dissect_element_DsGetDCInfo2_computer_dn(tvb, offset, pinfo, tree, di, drep);
 
-       switch(level) {
-               case 1:
-                       offset = drsuapi_dissect_element_DsGetNT4ChangeLogInfo_info1(tvb, offset, pinfo, tree, di, drep);
-               break;
-       }
-       proto_item_set_len(item, offset-old_offset);
+       offset = drsuapi_dissect_element_DsGetDCInfo2_server_dn(tvb, offset, pinfo, tree, di, drep);
 
+       offset = drsuapi_dissect_element_DsGetDCInfo2_ntds_dn(tvb, offset, pinfo, tree, di, drep);
 
-       return offset;
-}
+       offset = drsuapi_dissect_element_DsGetDCInfo2_is_pdc(tvb, offset, pinfo, tree, di, drep);
 
-/* IDL: enum { */
-/* IDL:        DRSUAPI_DS_NAME_STATUS_OK=0, */
-/* IDL:        DRSUAPI_DS_NAME_STATUS_RESOLVE_ERROR=1, */
-/* IDL:        DRSUAPI_DS_NAME_STATUS_NOT_FOUND=2, */
-/* IDL:        DRSUAPI_DS_NAME_STATUS_NOT_UNIQUE=3, */
-/* IDL:        DRSUAPI_DS_NAME_STATUS_NO_MAPPING=4, */
-/* IDL:        DRSUAPI_DS_NAME_STATUS_DOMAIN_ONLY=5, */
-/* IDL:        DRSUAPI_DS_NAME_STATUS_NO_SYNTACTICAL_MAPPING=6, */
-/* IDL:        DRSUAPI_DS_NAME_STATUS_TRUST_REFERRAL=7, */
-/* IDL: } */
+       offset = drsuapi_dissect_element_DsGetDCInfo2_is_enabled(tvb, offset, pinfo, tree, di, drep);
 
-int
-drsuapi_dissect_enum_DsNameStatus(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 *param _U_)
-{
-       guint32 parameter=0;
-       if (param) {
-               parameter = *param;
-       }
-       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &parameter);
-       if (param) {
-               *param = parameter;
-       }
-       return offset;
-}
+       offset = drsuapi_dissect_element_DsGetDCInfo2_is_gc(tvb, offset, pinfo, tree, di, drep);
 
+       offset = drsuapi_dissect_element_DsGetDCInfo2_site_guid(tvb, offset, pinfo, tree, di, drep);
 
-/* IDL: enum { */
-/* IDL:        DRSUAPI_DS_NAME_FLAG_NO_FLAGS=0x0, */
-/* IDL:        DRSUAPI_DS_NAME_FLAG_SYNTACTICAL_ONLY=0x1, */
-/* IDL:        DRSUAPI_DS_NAME_FLAG_EVAL_AT_DC=0x2, */
-/* IDL:        DRSUAPI_DS_NAME_FLAG_GCVERIFY=0x4, */
-/* IDL:        DRSUAPI_DS_NAME_FLAG_TRUST_REFERRAL=0x8, */
-/* IDL: } */
+       offset = drsuapi_dissect_element_DsGetDCInfo2_computer_guid(tvb, offset, pinfo, tree, di, drep);
 
-int
-drsuapi_dissect_enum_DsNameFlags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 *param _U_)
-{
-       guint32 parameter=0;
-       if (param) {
-               parameter = *param;
-       }
-       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &parameter);
-       if (param) {
-               *param = parameter;
+       offset = drsuapi_dissect_element_DsGetDCInfo2_server_guid(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsGetDCInfo2_ntds_guid(tvb, offset, pinfo, tree, di, drep);
+
+
+       proto_item_set_len(item, offset-old_offset);
+
+
+       if (di->call_data->flags & DCERPC_IS_NDR64) {
+               ALIGN_TO_5_BYTES;
        }
+
        return offset;
 }
 
 
-/* IDL: enum { */
-/* IDL:        DRSUAPI_DS_NAME_FORMAT_UNKNOWN=0x00000000, */
-/* IDL:        DRSUAPI_DS_NAME_FORMAT_FQDN_1779=0x00000001, */
-/* IDL:        DRSUAPI_DS_NAME_FORMAT_NT4_ACCOUNT=0x00000002, */
-/* IDL:        DRSUAPI_DS_NAME_FORMAT_DISPLAY=0x00000003, */
-/* IDL:        DRSUAPI_DS_NAME_FORMAT_GUID=0x00000006, */
-/* IDL:        DRSUAPI_DS_NAME_FORMAT_CANONICAL=0x00000007, */
-/* IDL:        DRSUAPI_DS_NAME_FORMAT_USER_PRINCIPAL=0x00000008, */
-/* IDL:        DRSUAPI_DS_NAME_FORMAT_CANONICAL_EX=0x00000009, */
-/* IDL:        DRSUAPI_DS_NAME_FORMAT_SERVICE_PRINCIPAL=0x0000000A, */
-/* IDL:        DRSUAPI_DS_NAME_FORMAT_SID_OR_SID_HISTORY=0x0000000B, */
-/* IDL:        DRSUAPI_DS_NAME_FORMAT_DNS_DOMAIN=0x0000000C, */
-/* IDL:        DRSUAPI_DS_NAME_FORMAT_UPN_AND_ALTSECID=0xFFFFFFEF, */
-/* IDL:        DRSUAPI_DS_NAME_FORMAT_NT4_ACCOUNT_NAME_SANS_DOMAIN_EX=0xFFFFFFF0, */
-/* IDL:        DRSUAPI_DS_NAME_FORMAT_LIST_GLOBAL_CATALOG_SERVERS=0xFFFFFFF1, */
-/* IDL:        DRSUAPI_DS_NAME_FORMAT_UPN_FOR_LOGON=0xFFFFFFF2, */
-/* IDL:        DRSUAPI_DS_NAME_FORMAT_LIST_SERVERS_WITH_DCS_IN_SITE=0xFFFFFFF3, */
-/* IDL:        DRSUAPI_DS_NAME_FORMAT_STRING_SID_NAME=0xFFFFFFF4, */
-/* IDL:        DRSUAPI_DS_NAME_FORMAT_ALT_SECURITY_IDENTITIES_NAME=0xFFFFFFF5, */
-/* IDL:        DRSUAPI_DS_NAME_FORMAT_LIST_NCS=0xFFFFFFF6, */
-/* IDL:        DRSUAPI_DS_NAME_FORMAT_LIST_DOMAINS=0xFFFFFFF7, */
-/* IDL:        DRSUAPI_DS_NAME_FORMAT_MAP_SCHEMA_GUID=0xFFFFFFF8, */
-/* IDL:        DRSUAPI_DS_NAME_FORMAT_NT4_ACCOUNT_NAME_SANS_DOMAIN=0xFFFFFFF9, */
-/* IDL:        DRSUAPI_DS_NAME_FORMAT_LIST_ROLES=0xFFFFFFFA, */
-/* IDL:        DRSUAPI_DS_NAME_FORMAT_LIST_INFO_FOR_SERVER=0xFFFFFFFB, */
-/* IDL:        DRSUAPI_DS_NAME_FORMAT_LIST_SERVERS_FOR_DOMAIN_IN_SITE=0xFFFFFFFC, */
-/* IDL:        DRSUAPI_DS_NAME_FORMAT_LIST_DOMAINS_IN_SITE=0xFFFFFFFD, */
-/* IDL:        DRSUAPI_DS_NAME_FORMAT_LIST_SERVERS_IN_SITE=0xFFFFFFFE, */
-/* IDL:        DRSUAPI_DS_NAME_FORMAT_LIST_SITES=0xFFFFFFFF, */
+/* IDL: struct { */
+/* IDL:        [range(0,10000)] uint32 count; */
+/* IDL:        [size_is(count)] [unique(1)] drsuapi_DsGetDCInfo2 *array; */
 /* IDL: } */
 
-int
-drsuapi_dissect_enum_DsNameFormat(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 *param _U_)
+static int
+drsuapi_dissect_element_DsGetDCInfoCtr2_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       guint32 parameter=0;
-       if (param) {
-               parameter = *param;
-       }
-       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &parameter);
-       if (param) {
-               *param = parameter;
-       }
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDCInfoCtr2_count, 0);
+
        return offset;
 }
 
+static int
+drsuapi_dissect_element_DsGetDCInfoCtr2_array(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetDCInfoCtr2_array_, NDR_POINTER_UNIQUE, "Pointer to Array (drsuapi_DsGetDCInfo2)",hf_drsuapi_drsuapi_DsGetDCInfoCtr2_array);
 
-/* IDL: struct { */
-/* IDL:        [charset(UTF16)] [unique(1)] uint16 *str; */
-/* IDL: } */
+       return offset;
+}
 
 static int
-drsuapi_dissect_element_DsNameString_str(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetDCInfoCtr2_array_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsNameString_str_, NDR_POINTER_UNIQUE, "Pointer to Str (uint16)",hf_drsuapi_drsuapi_DsNameString_str);
+       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetDCInfoCtr2_array__);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsNameString_str_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetDCInfoCtr2_array__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       char *data;
-
-       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsNameString_str, FALSE, &data);
-       proto_item_append_text(tree, ": %s", data);
+       offset = drsuapi_dissect_struct_DsGetDCInfo2(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetDCInfoCtr2_array,0);
 
        return offset;
 }
 
 int
-drsuapi_dissect_struct_DsNameString(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_struct_DsGetDCInfoCtr2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
        proto_item *item = NULL;
        proto_tree *tree = NULL;
@@ -10449,10 +13072,12 @@ drsuapi_dissect_struct_DsNameString(tvbuff_t *tvb _U_, int offset _U_, packet_in
 
        if (parent_tree) {
                item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsNameString);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsGetDCInfoCtr2);
        }
 
-       offset = drsuapi_dissect_element_DsNameString_str(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsGetDCInfoCtr2_count(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsGetDCInfoCtr2_array(tvb, offset, pinfo, tree, di, drep);
 
 
        proto_item_set_len(item, offset-old_offset);
@@ -10467,222 +13092,222 @@ drsuapi_dissect_struct_DsNameString(tvbuff_t *tvb _U_, int offset _U_, packet_in
 
 
 /* IDL: struct { */
-/* IDL:        uint32 codepage; */
-/* IDL:        uint32 language; */
-/* IDL:        drsuapi_DsNameFlags format_flags; */
-/* IDL:        drsuapi_DsNameFormat format_offered; */
-/* IDL:        drsuapi_DsNameFormat format_desired; */
-/* IDL:        [range(1,10000)] uint32 count; */
-/* IDL:        [size_is(count)] [unique(1)] drsuapi_DsNameString *names; */
+/* IDL:        [charset(UTF16)] [unique(1)] uint16 *netbios_name; */
+/* IDL:        [charset(UTF16)] [unique(1)] uint16 *dns_name; */
+/* IDL:        [charset(UTF16)] [unique(1)] uint16 *site_name; */
+/* IDL:        [charset(UTF16)] [unique(1)] uint16 *site_dn; */
+/* IDL:        [charset(UTF16)] [unique(1)] uint16 *computer_dn; */
+/* IDL:        [charset(UTF16)] [unique(1)] uint16 *server_dn; */
+/* IDL:        [charset(UTF16)] [unique(1)] uint16 *ntds_dn; */
+/* IDL:        uint32 is_pdc; */
+/* IDL:        uint32 is_enabled; */
+/* IDL:        uint32 is_gc; */
+/* IDL:        uint32 is_rodc; */
+/* IDL:        GUID site_guid; */
+/* IDL:        GUID computer_guid; */
+/* IDL:        GUID server_guid; */
+/* IDL:        GUID ntds_guid; */
 /* IDL: } */
 
 static int
-drsuapi_dissect_element_DsNameRequest1_codepage(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetDCInfo3_netbios_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsNameRequest1_codepage, 0);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetDCInfo3_netbios_name_, NDR_POINTER_UNIQUE, "Pointer to Netbios Name (uint16)",hf_drsuapi_drsuapi_DsGetDCInfo3_netbios_name);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsNameRequest1_language(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetDCInfo3_netbios_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsNameRequest1_language, 0);
+       char *data;
+
+       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsGetDCInfo3_netbios_name, FALSE, &data);
+       proto_item_append_text(tree, ": %s", data);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsNameRequest1_format_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetDCInfo3_dns_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_enum_DsNameFlags(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsNameRequest1_format_flags, 0);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetDCInfo3_dns_name_, NDR_POINTER_UNIQUE, "Pointer to Dns Name (uint16)",hf_drsuapi_drsuapi_DsGetDCInfo3_dns_name);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsNameRequest1_format_offered(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetDCInfo3_dns_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_enum_DsNameFormat(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsNameRequest1_format_offered, 0);
+       char *data;
+
+       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsGetDCInfo3_dns_name, FALSE, &data);
+       proto_item_append_text(tree, ": %s", data);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsNameRequest1_format_desired(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetDCInfo3_site_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_enum_DsNameFormat(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsNameRequest1_format_desired, 0);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetDCInfo3_site_name_, NDR_POINTER_UNIQUE, "Pointer to Site Name (uint16)",hf_drsuapi_drsuapi_DsGetDCInfo3_site_name);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsNameRequest1_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetDCInfo3_site_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsNameRequest1_count, 0);
+       char *data;
+
+       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsGetDCInfo3_site_name, FALSE, &data);
+       proto_item_append_text(tree, ": %s", data);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsNameRequest1_names(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetDCInfo3_site_dn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsNameRequest1_names_, NDR_POINTER_UNIQUE, "Pointer to Names (drsuapi_DsNameString)",hf_drsuapi_drsuapi_DsNameRequest1_names);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetDCInfo3_site_dn_, NDR_POINTER_UNIQUE, "Pointer to Site Dn (uint16)",hf_drsuapi_drsuapi_DsGetDCInfo3_site_dn);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsNameRequest1_names_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetDCInfo3_site_dn_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsNameRequest1_names__);
+       char *data;
+
+       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsGetDCInfo3_site_dn, FALSE, &data);
+       proto_item_append_text(tree, ": %s", data);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsNameRequest1_names__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetDCInfo3_computer_dn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsNameString(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsNameRequest1_names,0);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetDCInfo3_computer_dn_, NDR_POINTER_UNIQUE, "Pointer to Computer Dn (uint16)",hf_drsuapi_drsuapi_DsGetDCInfo3_computer_dn);
 
        return offset;
 }
 
-int
-drsuapi_dissect_struct_DsNameRequest1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+static int
+drsuapi_dissect_element_DsGetDCInfo3_computer_dn_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       proto_item *item = NULL;
-       proto_tree *tree = NULL;
-       int old_offset;
-
-       ALIGN_TO_5_BYTES;
-
-       old_offset = offset;
-
-       if (parent_tree) {
-               item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsNameRequest1);
-       }
+       char *data;
 
-       offset = drsuapi_dissect_element_DsNameRequest1_codepage(tvb, offset, pinfo, tree, di, drep);
+       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsGetDCInfo3_computer_dn, FALSE, &data);
+       proto_item_append_text(tree, ": %s", data);
 
-       offset = drsuapi_dissect_element_DsNameRequest1_language(tvb, offset, pinfo, tree, di, drep);
+       return offset;
+}
 
-       offset = drsuapi_dissect_element_DsNameRequest1_format_flags(tvb, offset, pinfo, tree, di, drep);
+static int
+drsuapi_dissect_element_DsGetDCInfo3_server_dn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetDCInfo3_server_dn_, NDR_POINTER_UNIQUE, "Pointer to Server Dn (uint16)",hf_drsuapi_drsuapi_DsGetDCInfo3_server_dn);
 
-       offset = drsuapi_dissect_element_DsNameRequest1_format_offered(tvb, offset, pinfo, tree, di, drep);
+       return offset;
+}
 
-       offset = drsuapi_dissect_element_DsNameRequest1_format_desired(tvb, offset, pinfo, tree, di, drep);
+static int
+drsuapi_dissect_element_DsGetDCInfo3_server_dn_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       char *data;
 
-       offset = drsuapi_dissect_element_DsNameRequest1_count(tvb, offset, pinfo, tree, di, drep);
+       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsGetDCInfo3_server_dn, FALSE, &data);
+       proto_item_append_text(tree, ": %s", data);
 
-       offset = drsuapi_dissect_element_DsNameRequest1_names(tvb, offset, pinfo, tree, di, drep);
+       return offset;
+}
 
+static int
+drsuapi_dissect_element_DsGetDCInfo3_ntds_dn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetDCInfo3_ntds_dn_, NDR_POINTER_UNIQUE, "Pointer to Ntds Dn (uint16)",hf_drsuapi_drsuapi_DsGetDCInfo3_ntds_dn);
 
-       proto_item_set_len(item, offset-old_offset);
+       return offset;
+}
 
+static int
+drsuapi_dissect_element_DsGetDCInfo3_ntds_dn_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       char *data;
 
-       if (di->call_data->flags & DCERPC_IS_NDR64) {
-               ALIGN_TO_5_BYTES;
-       }
+       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsGetDCInfo3_ntds_dn, FALSE, &data);
+       proto_item_append_text(tree, ": %s", data);
 
        return offset;
 }
 
-
-/* IDL: [switch_type(uint32)] union { */
-/* IDL: [case(1)] [case(1)] drsuapi_DsNameRequest1 req1; */
-/* IDL: } */
-
 static int
-drsuapi_dissect_element_DsNameRequest_req1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetDCInfo3_is_pdc(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsNameRequest1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsNameRequest_req1,0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDCInfo3_is_pdc, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_DsNameRequest(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_element_DsGetDCInfo3_is_enabled(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       proto_item *item = NULL;
-       proto_tree *tree = NULL;
-       int old_offset;
-       guint32 level;
-
-       old_offset = offset;
-       if (parent_tree) {
-               tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_DsNameRequest, &item, "drsuapi_DsNameRequest");
-       }
-
-       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level);
-       ALIGN_TO_5_BYTES;
-
-       switch(level) {
-               case 1:
-                       offset = drsuapi_dissect_element_DsNameRequest_req1(tvb, offset, pinfo, tree, di, drep);
-               break;
-       }
-       proto_item_set_len(item, offset-old_offset);
-
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDCInfo3_is_enabled, 0);
 
        return offset;
 }
 
-/* IDL: struct { */
-/* IDL:        drsuapi_DsNameStatus status; */
-/* IDL:        [charset(UTF16)] [unique(1)] uint16 *dns_domain_name; */
-/* IDL:        [charset(UTF16)] [unique(1)] uint16 *result_name; */
-/* IDL: } */
+static int
+drsuapi_dissect_element_DsGetDCInfo3_is_gc(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDCInfo3_is_gc, 0);
+
+       return offset;
+}
 
 static int
-drsuapi_dissect_element_DsNameInfo1_status(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetDCInfo3_is_rodc(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_enum_DsNameStatus(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsNameInfo1_status, 0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDCInfo3_is_rodc, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsNameInfo1_dns_domain_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetDCInfo3_site_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsNameInfo1_dns_domain_name_, NDR_POINTER_UNIQUE, "Pointer to Dns Domain Name (uint16)",hf_drsuapi_drsuapi_DsNameInfo1_dns_domain_name);
+       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDCInfo3_site_guid, NULL);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsNameInfo1_dns_domain_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetDCInfo3_computer_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       char *data;
-
-       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsNameInfo1_dns_domain_name, FALSE, &data);
-       proto_item_append_text(tree, ": %s", data);
+       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDCInfo3_computer_guid, NULL);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsNameInfo1_result_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetDCInfo3_server_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsNameInfo1_result_name_, NDR_POINTER_UNIQUE, "Pointer to Result Name (uint16)",hf_drsuapi_drsuapi_DsNameInfo1_result_name);
+       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDCInfo3_server_guid, NULL);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsNameInfo1_result_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetDCInfo3_ntds_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       char *data;
-
-       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsNameInfo1_result_name, FALSE, &data);
-       proto_item_append_text(tree, ": %s", data);
+       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDCInfo3_ntds_guid, NULL);
 
        return offset;
 }
 
 int
-drsuapi_dissect_struct_DsNameInfo1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_struct_DsGetDCInfo3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
        proto_item *item = NULL;
        proto_tree *tree = NULL;
@@ -10694,14 +13319,38 @@ drsuapi_dissect_struct_DsNameInfo1(tvbuff_t *tvb _U_, int offset _U_, packet_inf
 
        if (parent_tree) {
                item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsNameInfo1);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsGetDCInfo3);
        }
 
-       offset = drsuapi_dissect_element_DsNameInfo1_status(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsGetDCInfo3_netbios_name(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsNameInfo1_dns_domain_name(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsGetDCInfo3_dns_name(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsNameInfo1_result_name(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsGetDCInfo3_site_name(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsGetDCInfo3_site_dn(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsGetDCInfo3_computer_dn(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsGetDCInfo3_server_dn(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsGetDCInfo3_ntds_dn(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsGetDCInfo3_is_pdc(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsGetDCInfo3_is_enabled(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsGetDCInfo3_is_gc(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsGetDCInfo3_is_rodc(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsGetDCInfo3_site_guid(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsGetDCInfo3_computer_guid(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsGetDCInfo3_server_guid(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsGetDCInfo3_ntds_guid(tvb, offset, pinfo, tree, di, drep);
 
 
        proto_item_set_len(item, offset-old_offset);
@@ -10716,44 +13365,44 @@ drsuapi_dissect_struct_DsNameInfo1(tvbuff_t *tvb _U_, int offset _U_, packet_inf
 
 
 /* IDL: struct { */
-/* IDL:        uint32 count; */
-/* IDL:        [size_is(count)] [unique(1)] drsuapi_DsNameInfo1 *array; */
+/* IDL:        [range(0,10000)] uint32 count; */
+/* IDL:        [size_is(count)] [unique(1)] drsuapi_DsGetDCInfo3 *array; */
 /* IDL: } */
 
 static int
-drsuapi_dissect_element_DsNameCtr1_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetDCInfoCtr3_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsNameCtr1_count, 0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDCInfoCtr3_count, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsNameCtr1_array(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetDCInfoCtr3_array(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsNameCtr1_array_, NDR_POINTER_UNIQUE, "Pointer to Array (drsuapi_DsNameInfo1)",hf_drsuapi_drsuapi_DsNameCtr1_array);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetDCInfoCtr3_array_, NDR_POINTER_UNIQUE, "Pointer to Array (drsuapi_DsGetDCInfo3)",hf_drsuapi_drsuapi_DsGetDCInfoCtr3_array);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsNameCtr1_array_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetDCInfoCtr3_array_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsNameCtr1_array__);
+       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetDCInfoCtr3_array__);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsNameCtr1_array__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetDCInfoCtr3_array__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsNameInfo1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsNameCtr1_array,0);
+       offset = drsuapi_dissect_struct_DsGetDCInfo3(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetDCInfoCtr3_array,0);
 
        return offset;
 }
 
 int
-drsuapi_dissect_struct_DsNameCtr1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_struct_DsGetDCInfoCtr3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
        proto_item *item = NULL;
        proto_tree *tree = NULL;
@@ -10765,12 +13414,12 @@ drsuapi_dissect_struct_DsNameCtr1(tvbuff_t *tvb _U_, int offset _U_, packet_info
 
        if (parent_tree) {
                item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsNameCtr1);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsGetDCInfoCtr3);
        }
 
-       offset = drsuapi_dissect_element_DsNameCtr1_count(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsGetDCInfoCtr3_count(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsNameCtr1_array(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsGetDCInfoCtr3_array(tvb, offset, pinfo, tree, di, drep);
 
 
        proto_item_set_len(item, offset-old_offset);
@@ -10784,361 +13433,164 @@ drsuapi_dissect_struct_DsNameCtr1(tvbuff_t *tvb _U_, int offset _U_, packet_info
 }
 
 
-/* IDL: [switch_type(uint32)] union { */
-/* IDL: [case(1)] [case(1)] [unique(1)] drsuapi_DsNameCtr1 *ctr1; */
-/* IDL: } */
-
-static int
-drsuapi_dissect_element_DsNameCtr_ctr1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsNameCtr_ctr1_, NDR_POINTER_UNIQUE, "Pointer to Ctr1 (drsuapi_DsNameCtr1)",hf_drsuapi_drsuapi_DsNameCtr_ctr1);
-
-       return offset;
-}
-
-static int
-drsuapi_dissect_element_DsNameCtr_ctr1_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = drsuapi_dissect_struct_DsNameCtr1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsNameCtr_ctr1,0);
-
-       return offset;
-}
-
-static int
-drsuapi_dissect_DsNameCtr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
-{
-       proto_item *item = NULL;
-       proto_tree *tree = NULL;
-       int old_offset;
-       guint32 level;
-
-       old_offset = offset;
-       if (parent_tree) {
-               tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_DsNameCtr, &item, "drsuapi_DsNameCtr");
-       }
-
-       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level);
-       ALIGN_TO_5_BYTES;
-
-       switch(level) {
-               case 1:
-                       offset = drsuapi_dissect_element_DsNameCtr_ctr1(tvb, offset, pinfo, tree, di, drep);
-               break;
-       }
-       proto_item_set_len(item, offset-old_offset);
-
-
-       return offset;
-}
-
-/* IDL: enum { */
-/* IDL:        DRSUAPI_DS_SPN_OPERATION_ADD=0, */
-/* IDL:        DRSUAPI_DS_SPN_OPERATION_REPLACE=1, */
-/* IDL:        DRSUAPI_DS_SPN_OPERATION_DELETE=2, */
-/* IDL: } */
-
-int
-drsuapi_dissect_enum_DsSpnOperation(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 *param _U_)
-{
-       guint32 parameter=0;
-       if (param) {
-               parameter = *param;
-       }
-       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &parameter);
-       if (param) {
-               *param = parameter;
-       }
-       return offset;
-}
-
-
 /* IDL: struct { */
-/* IDL:        drsuapi_DsSpnOperation operation; */
-/* IDL:        uint32 unknown1; */
-/* IDL:        [charset(UTF16)] [unique(1)] uint16 *object_dn; */
-/* IDL:        [range(0,10000)] uint32 count; */
-/* IDL:        [size_is(count)] [unique(1)] drsuapi_DsNameString *spn_names; */
+/* IDL:        [flag(LIBNDR_FLAG_BIGENDIAN)] ipv4address client_ip_address; */
+/* IDL:        uint32 unknown2; */
+/* IDL:        uint32 connection_time; */
+/* IDL:        uint32 unknown4; */
+/* IDL:        uint32 unknown5; */
+/* IDL:        uint32 unknown6; */
+/* IDL:        [charset(UTF16)] [unique(1)] uint16 *client_account; */
 /* IDL: } */
 
 static int
-drsuapi_dissect_element_DsWriteAccountSpnRequest1_operation(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = drsuapi_dissect_enum_DsSpnOperation(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsWriteAccountSpnRequest1_operation, 0);
-
-       return offset;
-}
-
-static int
-drsuapi_dissect_element_DsWriteAccountSpnRequest1_unknown1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsWriteAccountSpnRequest1_unknown1, 0);
-
-       return offset;
-}
-
-static int
-drsuapi_dissect_element_DsWriteAccountSpnRequest1_object_dn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsWriteAccountSpnRequest1_object_dn_, NDR_POINTER_UNIQUE, "Pointer to Object Dn (uint16)",hf_drsuapi_drsuapi_DsWriteAccountSpnRequest1_object_dn);
-
-       return offset;
-}
-
-static int
-drsuapi_dissect_element_DsWriteAccountSpnRequest1_object_dn_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       char *data;
-
-       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsWriteAccountSpnRequest1_object_dn, FALSE, &data);
-       proto_item_append_text(tree, ": %s", data);
-
-       return offset;
-}
-
-static int
-drsuapi_dissect_element_DsWriteAccountSpnRequest1_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetDCConnection01_client_ip_address(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsWriteAccountSpnRequest1_count, 0);
+       proto_tree_add_item(tree, hf_drsuapi_drsuapi_DsGetDCConnection01_client_ip_address, tvb, offset, 4, ENC_BIG_ENDIAN); offset += 4;
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsWriteAccountSpnRequest1_spn_names(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetDCConnection01_unknown2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsWriteAccountSpnRequest1_spn_names_, NDR_POINTER_UNIQUE, "Pointer to Spn Names (drsuapi_DsNameString)",hf_drsuapi_drsuapi_DsWriteAccountSpnRequest1_spn_names);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDCConnection01_unknown2, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsWriteAccountSpnRequest1_spn_names_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetDCConnection01_connection_time(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsWriteAccountSpnRequest1_spn_names__);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDCConnection01_connection_time, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsWriteAccountSpnRequest1_spn_names__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = drsuapi_dissect_struct_DsNameString(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsWriteAccountSpnRequest1_spn_names,0);
-
-       return offset;
-}
-
-int
-drsuapi_dissect_struct_DsWriteAccountSpnRequest1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_element_DsGetDCConnection01_unknown4(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       proto_item *item = NULL;
-       proto_tree *tree = NULL;
-       int old_offset;
-
-       ALIGN_TO_5_BYTES;
-
-       old_offset = offset;
-
-       if (parent_tree) {
-               item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsWriteAccountSpnRequest1);
-       }
-
-       offset = drsuapi_dissect_element_DsWriteAccountSpnRequest1_operation(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsWriteAccountSpnRequest1_unknown1(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsWriteAccountSpnRequest1_object_dn(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsWriteAccountSpnRequest1_count(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsWriteAccountSpnRequest1_spn_names(tvb, offset, pinfo, tree, di, drep);
-
-
-       proto_item_set_len(item, offset-old_offset);
-
-
-       if (di->call_data->flags & DCERPC_IS_NDR64) {
-               ALIGN_TO_5_BYTES;
-       }
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDCConnection01_unknown4, 0);
 
        return offset;
 }
 
-
-/* IDL: [switch_type(uint32)] union { */
-/* IDL: [case(1)] [case(1)] drsuapi_DsWriteAccountSpnRequest1 req1; */
-/* IDL: } */
-
 static int
-drsuapi_dissect_element_DsWriteAccountSpnRequest_req1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetDCConnection01_unknown5(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsWriteAccountSpnRequest1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsWriteAccountSpnRequest_req1,0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDCConnection01_unknown5, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_DsWriteAccountSpnRequest(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_element_DsGetDCConnection01_unknown6(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       proto_item *item = NULL;
-       proto_tree *tree = NULL;
-       int old_offset;
-       guint32 level;
-
-       old_offset = offset;
-       if (parent_tree) {
-               tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_DsWriteAccountSpnRequest, &item, "drsuapi_DsWriteAccountSpnRequest");
-       }
-
-       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level);
-       ALIGN_TO_5_BYTES;
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDCConnection01_unknown6, 0);
 
-       switch(level) {
-               case 1:
-                       offset = drsuapi_dissect_element_DsWriteAccountSpnRequest_req1(tvb, offset, pinfo, tree, di, drep);
-               break;
-       }
-       proto_item_set_len(item, offset-old_offset);
+       return offset;
+}
 
+static int
+drsuapi_dissect_element_DsGetDCConnection01_client_account(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetDCConnection01_client_account_, NDR_POINTER_UNIQUE, "Pointer to Client Account (uint16)",hf_drsuapi_drsuapi_DsGetDCConnection01_client_account);
 
        return offset;
 }
 
-/* IDL: struct { */
-/* IDL:        WERROR status; */
-/* IDL: } */
-
 static int
-drsuapi_dissect_element_DsWriteAccountSpnResult1_status(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetDCConnection01_client_account_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsWriteAccountSpnResult1_status, 0);
+       char *data;
+
+       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsGetDCConnection01_client_account, FALSE, &data);
+       proto_item_append_text(tree, ": %s", data);
 
        return offset;
 }
 
 int
-drsuapi_dissect_struct_DsWriteAccountSpnResult1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_struct_DsGetDCConnection01(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
        proto_item *item = NULL;
        proto_tree *tree = NULL;
        int old_offset;
 
-       ALIGN_TO_4_BYTES;
+       ALIGN_TO_5_BYTES;
 
        old_offset = offset;
 
        if (parent_tree) {
                item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsWriteAccountSpnResult1);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsGetDCConnection01);
        }
 
-       offset = drsuapi_dissect_element_DsWriteAccountSpnResult1_status(tvb, offset, pinfo, tree, di, drep);
-
-
-       proto_item_set_len(item, offset-old_offset);
-
+       offset = drsuapi_dissect_element_DsGetDCConnection01_client_ip_address(tvb, offset, pinfo, tree, di, drep);
 
-       if (di->call_data->flags & DCERPC_IS_NDR64) {
-               ALIGN_TO_4_BYTES;
-       }
+       offset = drsuapi_dissect_element_DsGetDCConnection01_unknown2(tvb, offset, pinfo, tree, di, drep);
 
-       return offset;
-}
+       offset = drsuapi_dissect_element_DsGetDCConnection01_connection_time(tvb, offset, pinfo, tree, di, drep);
 
+       offset = drsuapi_dissect_element_DsGetDCConnection01_unknown4(tvb, offset, pinfo, tree, di, drep);
 
-/* IDL: [switch_type(uint32)] union { */
-/* IDL: [case(1)] [case(1)] drsuapi_DsWriteAccountSpnResult1 res1; */
-/* IDL: } */
+       offset = drsuapi_dissect_element_DsGetDCConnection01_unknown5(tvb, offset, pinfo, tree, di, drep);
 
-static int
-drsuapi_dissect_element_DsWriteAccountSpnResult_res1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = drsuapi_dissect_struct_DsWriteAccountSpnResult1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsWriteAccountSpnResult_res1,0);
+       offset = drsuapi_dissect_element_DsGetDCConnection01_unknown6(tvb, offset, pinfo, tree, di, drep);
 
-       return offset;
-}
+       offset = drsuapi_dissect_element_DsGetDCConnection01_client_account(tvb, offset, pinfo, tree, di, drep);
 
-static int
-drsuapi_dissect_DsWriteAccountSpnResult(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
-{
-       proto_item *item = NULL;
-       proto_tree *tree = NULL;
-       int old_offset;
-       guint32 level;
 
-       old_offset = offset;
-       if (parent_tree) {
-               tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_DsWriteAccountSpnResult, &item, "drsuapi_DsWriteAccountSpnResult");
-       }
+       proto_item_set_len(item, offset-old_offset);
 
-       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level);
-       ALIGN_TO_4_BYTES;
 
-       switch(level) {
-               case 1:
-                       offset = drsuapi_dissect_element_DsWriteAccountSpnResult_res1(tvb, offset, pinfo, tree, di, drep);
-               break;
+       if (di->call_data->flags & DCERPC_IS_NDR64) {
+               ALIGN_TO_5_BYTES;
        }
-       proto_item_set_len(item, offset-old_offset);
-
 
        return offset;
 }
 
+
 /* IDL: struct { */
-/* IDL:        [charset(UTF16)] [unique(1)] uint16 *server_dn; */
-/* IDL:        [charset(UTF16)] [unique(1)] uint16 *domain_dn; */
-/* IDL:        uint32 commit; */
+/* IDL:        [range(0,10000)] uint32 count; */
+/* IDL:        [size_is(count)] [unique(1)] drsuapi_DsGetDCConnection01 *array; */
 /* IDL: } */
 
 static int
-drsuapi_dissect_element_DsRemoveDSServerRequest1_server_dn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsRemoveDSServerRequest1_server_dn_, NDR_POINTER_UNIQUE, "Pointer to Server Dn (uint16)",hf_drsuapi_drsuapi_DsRemoveDSServerRequest1_server_dn);
-
-       return offset;
-}
-
-static int
-drsuapi_dissect_element_DsRemoveDSServerRequest1_server_dn_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetDCConnectionCtr01_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       char *data;
-
-       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsRemoveDSServerRequest1_server_dn, FALSE, &data);
-       proto_item_append_text(tree, ": %s", data);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDCConnectionCtr01_count, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsRemoveDSServerRequest1_domain_dn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetDCConnectionCtr01_array(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsRemoveDSServerRequest1_domain_dn_, NDR_POINTER_UNIQUE, "Pointer to Domain Dn (uint16)",hf_drsuapi_drsuapi_DsRemoveDSServerRequest1_domain_dn);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetDCConnectionCtr01_array_, NDR_POINTER_UNIQUE, "Pointer to Array (drsuapi_DsGetDCConnection01)",hf_drsuapi_drsuapi_DsGetDCConnectionCtr01_array);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsRemoveDSServerRequest1_domain_dn_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetDCConnectionCtr01_array_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       char *data;
-
-       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsRemoveDSServerRequest1_domain_dn, FALSE, &data);
-       proto_item_append_text(tree, ": %s", data);
+       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetDCConnectionCtr01_array__);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsRemoveDSServerRequest1_commit(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetDCConnectionCtr01_array__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsRemoveDSServerRequest1_commit, 0);
+       offset = drsuapi_dissect_struct_DsGetDCConnection01(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetDCConnectionCtr01_array,0);
 
        return offset;
 }
 
 int
-drsuapi_dissect_struct_DsRemoveDSServerRequest1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_struct_DsGetDCConnectionCtr01(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
        proto_item *item = NULL;
        proto_tree *tree = NULL;
@@ -11150,14 +13602,12 @@ drsuapi_dissect_struct_DsRemoveDSServerRequest1(tvbuff_t *tvb _U_, int offset _U
 
        if (parent_tree) {
                item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsRemoveDSServerRequest1);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsGetDCConnectionCtr01);
        }
 
-       offset = drsuapi_dissect_element_DsRemoveDSServerRequest1_server_dn(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsRemoveDSServerRequest1_domain_dn(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsGetDCConnectionCtr01_count(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsRemoveDSServerRequest1_commit(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsGetDCConnectionCtr01_array(tvb, offset, pinfo, tree, di, drep);
 
 
        proto_item_set_len(item, offset-old_offset);
@@ -11171,20 +13621,47 @@ drsuapi_dissect_struct_DsRemoveDSServerRequest1(tvbuff_t *tvb _U_, int offset _U
 }
 
 
-/* IDL: [switch_type(uint32)] union { */
-/* IDL: [case(1)] [case(1)] drsuapi_DsRemoveDSServerRequest1 req1; */
+/* IDL: [switch_type(drsuapi_DsGetDCInfoCtrLevels)] union { */
+/* IDL: [case(DRSUAPI_DC_INFO_CTR_1)] [case(DRSUAPI_DC_INFO_CTR_1)] drsuapi_DsGetDCInfoCtr1 ctr1; */
+/* IDL: [case(DRSUAPI_DC_INFO_CTR_2)] [case(DRSUAPI_DC_INFO_CTR_2)] drsuapi_DsGetDCInfoCtr2 ctr2; */
+/* IDL: [case(DRSUAPI_DC_INFO_CTR_3)] [case(DRSUAPI_DC_INFO_CTR_3)] drsuapi_DsGetDCInfoCtr3 ctr3; */
+/* IDL: [case(DRSUAPI_DC_CONNECTION_CTR_01)] [case(DRSUAPI_DC_CONNECTION_CTR_01)] drsuapi_DsGetDCConnectionCtr01 ctr01; */
 /* IDL: } */
 
 static int
-drsuapi_dissect_element_DsRemoveDSServerRequest_req1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetDCInfoCtr_ctr1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsRemoveDSServerRequest1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsRemoveDSServerRequest_req1,0);
+       offset = drsuapi_dissect_struct_DsGetDCInfoCtr1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetDCInfoCtr_ctr1,0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_DsRemoveDSServerRequest(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_element_DsGetDCInfoCtr_ctr2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = drsuapi_dissect_struct_DsGetDCInfoCtr2(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetDCInfoCtr_ctr2,0);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsGetDCInfoCtr_ctr3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = drsuapi_dissect_struct_DsGetDCInfoCtr3(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetDCInfoCtr_ctr3,0);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsGetDCInfoCtr_ctr01(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = drsuapi_dissect_struct_DsGetDCConnectionCtr01(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetDCInfoCtr_ctr01,0);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_DsGetDCInfoCtr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
        proto_item *item = NULL;
        proto_tree *tree = NULL;
@@ -11193,15 +13670,27 @@ drsuapi_dissect_DsRemoveDSServerRequest(tvbuff_t *tvb _U_, int offset _U_, packe
 
        old_offset = offset;
        if (parent_tree) {
-               tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_DsRemoveDSServerRequest, &item, "drsuapi_DsRemoveDSServerRequest");
+               tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_DsGetDCInfoCtr, &item, "drsuapi_DsGetDCInfoCtr");
        }
 
        offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level);
        ALIGN_TO_5_BYTES;
 
        switch(level) {
-               case 1:
-                       offset = drsuapi_dissect_element_DsRemoveDSServerRequest_req1(tvb, offset, pinfo, tree, di, drep);
+               case DRSUAPI_DC_INFO_CTR_1:
+                       offset = drsuapi_dissect_element_DsGetDCInfoCtr_ctr1(tvb, offset, pinfo, tree, di, drep);
+               break;
+
+               case DRSUAPI_DC_INFO_CTR_2:
+                       offset = drsuapi_dissect_element_DsGetDCInfoCtr_ctr2(tvb, offset, pinfo, tree, di, drep);
+               break;
+
+               case DRSUAPI_DC_INFO_CTR_3:
+                       offset = drsuapi_dissect_element_DsGetDCInfoCtr_ctr3(tvb, offset, pinfo, tree, di, drep);
+               break;
+
+               case DRSUAPI_DC_CONNECTION_CTR_01:
+                       offset = drsuapi_dissect_element_DsGetDCInfoCtr_ctr01(tvb, offset, pinfo, tree, di, drep);
                break;
        }
        proto_item_set_len(item, offset-old_offset);
@@ -11211,95 +13700,140 @@ drsuapi_dissect_DsRemoveDSServerRequest(tvbuff_t *tvb _U_, int offset _U_, packe
 }
 
 /* IDL: struct { */
-/* IDL:        uint32 last_dc_in_domain; */
+/* IDL:        [max_recursion(20000)] [unique(1)] drsuapi_DsReplicaObjectListItem *next_object; */
+/* IDL:        drsuapi_DsReplicaObject object; */
 /* IDL: } */
 
 static int
-drsuapi_dissect_element_DsRemoveDSServerResult1_last_dc_in_domain(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaObjectListItem_next_object(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsRemoveDSServerResult1_last_dc_in_domain, 0);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaObjectListItem_next_object_, NDR_POINTER_UNIQUE, "Pointer to Next Object (drsuapi_DsReplicaObjectListItem)",hf_drsuapi_drsuapi_DsReplicaObjectListItem_next_object);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsReplicaObjectListItem_object(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = drsuapi_dissect_struct_DsReplicaObject(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaObjectListItem_object,0);
 
        return offset;
 }
 
 int
-drsuapi_dissect_struct_DsRemoveDSServerResult1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_struct_DsReplicaObjectListItem(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
        proto_item *item = NULL;
        proto_tree *tree = NULL;
        int old_offset;
 
-       ALIGN_TO_4_BYTES;
+       ALIGN_TO_5_BYTES;
 
        old_offset = offset;
 
        if (parent_tree) {
                item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsRemoveDSServerResult1);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaObjectListItem);
        }
 
-       offset = drsuapi_dissect_element_DsRemoveDSServerResult1_last_dc_in_domain(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaObjectListItem_next_object(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsReplicaObjectListItem_object(tvb, offset, pinfo, tree, di, drep);
 
 
        proto_item_set_len(item, offset-old_offset);
 
 
        if (di->call_data->flags & DCERPC_IS_NDR64) {
-               ALIGN_TO_4_BYTES;
+               ALIGN_TO_5_BYTES;
        }
 
        return offset;
 }
 
 
-/* IDL: [switch_type(uint32)] union { */
-/* IDL: [case(1)] [case(1)] drsuapi_DsRemoveDSServerResult1 res1; */
+/* IDL: enum { */
+/* IDL:        DRSUAPI_DIRERR_OK=0, */
+/* IDL:        DRSUAPI_DIRERR_ATTRIBUTE=1, */
+/* IDL:        DRSUAPI_DIRERR_NAME=2, */
+/* IDL:        DRSUAPI_DIRERR_REFERRAL=3, */
+/* IDL:        DRSUAPI_DIRERR_SECURITY=4, */
+/* IDL:        DRSUAPI_DIRERR_SERVICE=5, */
+/* IDL:        DRSUAPI_DIRERR_UPDATE=6, */
+/* IDL:        DRSUAPI_DIRERR_SYSTEM=7, */
+/* IDL: } */
+
+int
+drsuapi_dissect_enum_DsAddEntry_DirErr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 *param _U_)
+{
+       guint32 parameter=0;
+       if (param) {
+               parameter = *param;
+       }
+       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &parameter);
+       if (param) {
+               *param = parameter;
+       }
+       return offset;
+}
+
+
+/* IDL: struct { */
+/* IDL:        drsuapi_DsReplicaObjectListItem first_object; */
 /* IDL: } */
 
 static int
-drsuapi_dissect_element_DsRemoveDSServerResult_res1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsAddEntryRequest2_first_object(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsRemoveDSServerResult1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsRemoveDSServerResult_res1,0);
+       offset = drsuapi_dissect_struct_DsReplicaObjectListItem(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntryRequest2_first_object,0);
 
        return offset;
 }
 
-static int
-drsuapi_dissect_DsRemoveDSServerResult(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+int
+drsuapi_dissect_struct_DsAddEntryRequest2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
        proto_item *item = NULL;
        proto_tree *tree = NULL;
        int old_offset;
-       guint32 level;
+
+       ALIGN_TO_5_BYTES;
 
        old_offset = offset;
+
        if (parent_tree) {
-               tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_DsRemoveDSServerResult, &item, "drsuapi_DsRemoveDSServerResult");
+               item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsAddEntryRequest2);
        }
 
-       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level);
-       ALIGN_TO_4_BYTES;
+       offset = drsuapi_dissect_element_DsAddEntryRequest2_first_object(tvb, offset, pinfo, tree, di, drep);
+
 
-       switch(level) {
-               case 1:
-                       offset = drsuapi_dissect_element_DsRemoveDSServerResult_res1(tvb, offset, pinfo, tree, di, drep);
-               break;
-       }
        proto_item_set_len(item, offset-old_offset);
 
 
+       if (di->call_data->flags & DCERPC_IS_NDR64) {
+               ALIGN_TO_5_BYTES;
+       }
+
        return offset;
 }
 
+
 /* IDL: enum { */
-/* IDL:        DRSUAPI_DC_INFO_CTR_1=1, */
-/* IDL:        DRSUAPI_DC_INFO_CTR_2=2, */
-/* IDL:        DRSUAPI_DC_INFO_CTR_3=3, */
-/* IDL:        DRSUAPI_DC_CONNECTION_CTR_01=0xFFFFFFFF, */
+/* IDL:        DRSUAPI_SECBUFFER_EMPTY=0x00000000, */
+/* IDL:        DRSUAPI_SECBUFFER_DATA=0x00000001, */
+/* IDL:        DRSUAPI_SECBUFFER_TOKEN=0x00000002, */
+/* IDL:        DRSUAPI_SECBUFFER_PKG_PARAMS=0x00000003, */
+/* IDL:        DRSUAPI_SECBUFFER_MISSING=0x00000004, */
+/* IDL:        DRSUAPI_SECBUFFER_EXTRA=0x00000005, */
+/* IDL:        DRSUAPI_SECBUFFER_STREAM_TRAILER=0x00000006, */
+/* IDL:        DRSUAPI_SECBUFFER_STREAM_HEADER=0x00000007, */
+/* IDL:        DRSUAPI_SECBUFFER_READONLY=0x80000000, */
 /* IDL: } */
 
 int
-drsuapi_dissect_enum_DsGetDCInfoCtrLevels(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 *param _U_)
+drsuapi_dissect_enum_SecBufferType(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 *param _U_)
 {
        guint32 parameter=0;
        if (param) {
@@ -11314,39 +13848,53 @@ drsuapi_dissect_enum_DsGetDCInfoCtrLevels(tvbuff_t *tvb _U_, int offset _U_, pac
 
 
 /* IDL: struct { */
-/* IDL:        [charset(UTF16)] [unique(1)] uint16 *domain_name; */
-/* IDL:        drsuapi_DsGetDCInfoCtrLevels level; */
+/* IDL:        [range(0,10000)] uint32 buf_size; */
+/* IDL:        drsuapi_SecBufferType buf_type; */
+/* IDL:        [size_is(buf_size)] [unique(1)] uint8 *buffer; */
 /* IDL: } */
 
 static int
-drsuapi_dissect_element_DsGetDCInfoRequest1_domain_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_SecBuffer_buf_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetDCInfoRequest1_domain_name_, NDR_POINTER_UNIQUE, "Pointer to Domain Name (uint16)",hf_drsuapi_drsuapi_DsGetDCInfoRequest1_domain_name);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_SecBuffer_buf_size, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetDCInfoRequest1_domain_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_SecBuffer_buf_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       char *data;
+       offset = drsuapi_dissect_enum_SecBufferType(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_SecBuffer_buf_type, 0);
 
-       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsGetDCInfoRequest1_domain_name, FALSE, &data);
-       proto_item_append_text(tree, ": %s", data);
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_SecBuffer_buffer(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_SecBuffer_buffer_, NDR_POINTER_UNIQUE, "Pointer to Buffer (uint8)",hf_drsuapi_drsuapi_SecBuffer_buffer);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetDCInfoRequest1_level(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_SecBuffer_buffer_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_enum_DsGetDCInfoCtrLevels(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDCInfoRequest1_level, 0);
+       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_SecBuffer_buffer__);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_SecBuffer_buffer__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_SecBuffer_buffer, 0);
 
        return offset;
 }
 
 int
-drsuapi_dissect_struct_DsGetDCInfoRequest1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_struct_SecBuffer(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
        proto_item *item = NULL;
        proto_tree *tree = NULL;
@@ -11358,12 +13906,14 @@ drsuapi_dissect_struct_DsGetDCInfoRequest1(tvbuff_t *tvb _U_, int offset _U_, pa
 
        if (parent_tree) {
                item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsGetDCInfoRequest1);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_SecBuffer);
        }
 
-       offset = drsuapi_dissect_element_DsGetDCInfoRequest1_domain_name(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_SecBuffer_buf_size(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsGetDCInfoRequest1_level(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_SecBuffer_buf_type(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_SecBuffer_buffer(tvb, offset, pinfo, tree, di, drep);
 
 
        proto_item_set_len(item, offset-old_offset);
@@ -11377,202 +13927,268 @@ drsuapi_dissect_struct_DsGetDCInfoRequest1(tvbuff_t *tvb _U_, int offset _U_, pa
 }
 
 
-/* IDL: [switch_type(uint32)] union { */
-/* IDL: [case(1)] [case(1)] drsuapi_DsGetDCInfoRequest1 req1; */
+/* IDL: struct { */
+/* IDL:        [value(0)] uint32 version; */
+/* IDL:        [range(0,10000)] uint32 buff_count; */
+/* IDL:        [size_is(buff_count)] [unique(1)] drsuapi_SecBuffer *buffers; */
 /* IDL: } */
 
 static int
-drsuapi_dissect_element_DsGetDCInfoRequest_req1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_SecBufferDesc_version(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsGetDCInfoRequest1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetDCInfoRequest_req1,0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_SecBufferDesc_version, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_DsGetDCInfoRequest(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_element_SecBufferDesc_buff_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_SecBufferDesc_buff_count, 0);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_SecBufferDesc_buffers(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_SecBufferDesc_buffers_, NDR_POINTER_UNIQUE, "Pointer to Buffers (drsuapi_SecBuffer)",hf_drsuapi_drsuapi_SecBufferDesc_buffers);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_SecBufferDesc_buffers_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_SecBufferDesc_buffers__);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_SecBufferDesc_buffers__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = drsuapi_dissect_struct_SecBuffer(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_SecBufferDesc_buffers,0);
+
+       return offset;
+}
+
+int
+drsuapi_dissect_struct_SecBufferDesc(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
        proto_item *item = NULL;
        proto_tree *tree = NULL;
        int old_offset;
-       guint32 level;
+
+       ALIGN_TO_5_BYTES;
 
        old_offset = offset;
+
        if (parent_tree) {
-               tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_DsGetDCInfoRequest, &item, "drsuapi_DsGetDCInfoRequest");
+               item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_SecBufferDesc);
        }
 
-       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level);
-       ALIGN_TO_5_BYTES;
+       offset = drsuapi_dissect_element_SecBufferDesc_version(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_SecBufferDesc_buff_count(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_SecBufferDesc_buffers(tvb, offset, pinfo, tree, di, drep);
+
 
-       switch(level) {
-               case 1:
-                       offset = drsuapi_dissect_element_DsGetDCInfoRequest_req1(tvb, offset, pinfo, tree, di, drep);
-               break;
-       }
        proto_item_set_len(item, offset-old_offset);
 
 
+       if (di->call_data->flags & DCERPC_IS_NDR64) {
+               ALIGN_TO_5_BYTES;
+       }
+
        return offset;
 }
 
+
 /* IDL: struct { */
-/* IDL:        [charset(UTF16)] [unique(1)] uint16 *netbios_name; */
-/* IDL:        [charset(UTF16)] [unique(1)] uint16 *dns_name; */
-/* IDL:        [charset(UTF16)] [unique(1)] uint16 *site_name; */
-/* IDL:        [charset(UTF16)] [unique(1)] uint16 *computer_dn; */
-/* IDL:        [charset(UTF16)] [unique(1)] uint16 *server_dn; */
-/* IDL:        uint32 is_pdc; */
-/* IDL:        uint32 is_enabled; */
+/* IDL:        drsuapi_DsReplicaObjectListItem first_object; */
+/* IDL:        [unique(1)] drsuapi_SecBufferDesc *client_creds; */
 /* IDL: } */
 
 static int
-drsuapi_dissect_element_DsGetDCInfo1_netbios_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsAddEntryRequest3_first_object(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetDCInfo1_netbios_name_, NDR_POINTER_UNIQUE, "Pointer to Netbios Name (uint16)",hf_drsuapi_drsuapi_DsGetDCInfo1_netbios_name);
+       offset = drsuapi_dissect_struct_DsReplicaObjectListItem(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntryRequest3_first_object,0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetDCInfo1_netbios_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsAddEntryRequest3_client_creds(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       char *data;
-
-       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsGetDCInfo1_netbios_name, FALSE, &data);
-       proto_item_append_text(tree, ": %s", data);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsAddEntryRequest3_client_creds_, NDR_POINTER_UNIQUE, "Pointer to Client Creds (drsuapi_SecBufferDesc)",hf_drsuapi_drsuapi_DsAddEntryRequest3_client_creds);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetDCInfo1_dns_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsAddEntryRequest3_client_creds_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetDCInfo1_dns_name_, NDR_POINTER_UNIQUE, "Pointer to Dns Name (uint16)",hf_drsuapi_drsuapi_DsGetDCInfo1_dns_name);
+       offset = drsuapi_dissect_struct_SecBufferDesc(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntryRequest3_client_creds,0);
 
        return offset;
 }
 
-static int
-drsuapi_dissect_element_DsGetDCInfo1_dns_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+int
+drsuapi_dissect_struct_DsAddEntryRequest3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
-       char *data;
+       proto_item *item = NULL;
+       proto_tree *tree = NULL;
+       int old_offset;
 
-       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsGetDCInfo1_dns_name, FALSE, &data);
-       proto_item_append_text(tree, ": %s", data);
+       ALIGN_TO_5_BYTES;
 
-       return offset;
-}
+       old_offset = offset;
 
-static int
-drsuapi_dissect_element_DsGetDCInfo1_site_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetDCInfo1_site_name_, NDR_POINTER_UNIQUE, "Pointer to Site Name (uint16)",hf_drsuapi_drsuapi_DsGetDCInfo1_site_name);
+       if (parent_tree) {
+               item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsAddEntryRequest3);
+       }
+
+       offset = drsuapi_dissect_element_DsAddEntryRequest3_first_object(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsAddEntryRequest3_client_creds(tvb, offset, pinfo, tree, di, drep);
+
+
+       proto_item_set_len(item, offset-old_offset);
+
+
+       if (di->call_data->flags & DCERPC_IS_NDR64) {
+               ALIGN_TO_5_BYTES;
+       }
 
        return offset;
 }
 
+
+/* IDL: [switch_type(uint32)] union { */
+/* IDL: [case(2)] [case(2)] drsuapi_DsAddEntryRequest2 req2; */
+/* IDL: [case(3)] [case(3)] drsuapi_DsAddEntryRequest3 req3; */
+/* IDL: } */
+
 static int
-drsuapi_dissect_element_DsGetDCInfo1_site_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsAddEntryRequest_req2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       char *data;
-
-       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsGetDCInfo1_site_name, FALSE, &data);
-       proto_item_append_text(tree, ": %s", data);
+       offset = drsuapi_dissect_struct_DsAddEntryRequest2(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntryRequest_req2,0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetDCInfo1_computer_dn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsAddEntryRequest_req3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetDCInfo1_computer_dn_, NDR_POINTER_UNIQUE, "Pointer to Computer Dn (uint16)",hf_drsuapi_drsuapi_DsGetDCInfo1_computer_dn);
+       offset = drsuapi_dissect_struct_DsAddEntryRequest3(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntryRequest_req3,0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetDCInfo1_computer_dn_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_DsAddEntryRequest(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
-       char *data;
+       proto_item *item = NULL;
+       proto_tree *tree = NULL;
+       int old_offset;
+       guint32 level;
+
+       old_offset = offset;
+       if (parent_tree) {
+               tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_DsAddEntryRequest, &item, "drsuapi_DsAddEntryRequest");
+       }
+
+       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level);
+       ALIGN_TO_5_BYTES;
+
+       switch(level) {
+               case 2:
+                       offset = drsuapi_dissect_element_DsAddEntryRequest_req2(tvb, offset, pinfo, tree, di, drep);
+               break;
+
+               case 3:
+                       offset = drsuapi_dissect_element_DsAddEntryRequest_req3(tvb, offset, pinfo, tree, di, drep);
+               break;
+       }
+       proto_item_set_len(item, offset-old_offset);
 
-       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsGetDCInfo1_computer_dn, FALSE, &data);
-       proto_item_append_text(tree, ": %s", data);
 
        return offset;
 }
 
+/* IDL: struct { */
+/* IDL:        uint32 dsid; */
+/* IDL:        WERROR extended_err; */
+/* IDL:        uint32 extended_data; */
+/* IDL:        uint16 problem; */
+/* IDL: } */
+
 static int
-drsuapi_dissect_element_DsGetDCInfo1_server_dn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsAddEntryErrorInfoX_dsid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetDCInfo1_server_dn_, NDR_POINTER_UNIQUE, "Pointer to Server Dn (uint16)",hf_drsuapi_drsuapi_DsGetDCInfo1_server_dn);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntryErrorInfoX_dsid, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetDCInfo1_server_dn_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsAddEntryErrorInfoX_extended_err(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       char *data;
-
-       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsGetDCInfo1_server_dn, FALSE, &data);
-       proto_item_append_text(tree, ": %s", data);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntryErrorInfoX_extended_err, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetDCInfo1_is_pdc(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsAddEntryErrorInfoX_extended_data(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDCInfo1_is_pdc, 0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntryErrorInfoX_extended_data, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetDCInfo1_is_enabled(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsAddEntryErrorInfoX_problem(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDCInfo1_is_enabled, 0);
+       offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntryErrorInfoX_problem, 0);
 
        return offset;
 }
 
 int
-drsuapi_dissect_struct_DsGetDCInfo1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_struct_DsAddEntryErrorInfoX(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
        proto_item *item = NULL;
        proto_tree *tree = NULL;
        int old_offset;
 
-       ALIGN_TO_5_BYTES;
+       ALIGN_TO_4_BYTES;
 
        old_offset = offset;
 
        if (parent_tree) {
                item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsGetDCInfo1);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsAddEntryErrorInfoX);
        }
 
-       offset = drsuapi_dissect_element_DsGetDCInfo1_netbios_name(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsGetDCInfo1_dns_name(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsGetDCInfo1_site_name(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsGetDCInfo1_computer_dn(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsAddEntryErrorInfoX_dsid(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsGetDCInfo1_server_dn(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsAddEntryErrorInfoX_extended_err(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsGetDCInfo1_is_pdc(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsAddEntryErrorInfoX_extended_data(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsGetDCInfo1_is_enabled(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsAddEntryErrorInfoX_problem(tvb, offset, pinfo, tree, di, drep);
 
 
        proto_item_set_len(item, offset-old_offset);
 
 
        if (di->call_data->flags & DCERPC_IS_NDR64) {
-               ALIGN_TO_5_BYTES;
+               ALIGN_TO_4_BYTES;
        }
 
        return offset;
@@ -11580,44 +14196,73 @@ drsuapi_dissect_struct_DsGetDCInfo1(tvbuff_t *tvb _U_, int offset _U_, packet_in
 
 
 /* IDL: struct { */
-/* IDL:        [range(0,10000)] uint32 count; */
-/* IDL:        [size_is(count)] [unique(1)] drsuapi_DsGetDCInfo1 *array; */
+/* IDL:        uint32 dsid; */
+/* IDL:        WERROR extended_err; */
+/* IDL:        uint32 extended_data; */
+/* IDL:        uint16 problem; */
+/* IDL:        drsuapi_DsAttributeId attid; */
+/* IDL:        uint32 is_val_returned; */
+/* IDL:        drsuapi_DsAttributeValue attr_val; */
 /* IDL: } */
 
 static int
-drsuapi_dissect_element_DsGetDCInfoCtr1_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsAddEntry_AttrErr_V1_dsid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDCInfoCtr1_count, 0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntry_AttrErr_V1_dsid, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetDCInfoCtr1_array(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsAddEntry_AttrErr_V1_extended_err(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetDCInfoCtr1_array_, NDR_POINTER_UNIQUE, "Pointer to Array (drsuapi_DsGetDCInfo1)",hf_drsuapi_drsuapi_DsGetDCInfoCtr1_array);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntry_AttrErr_V1_extended_err, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetDCInfoCtr1_array_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsAddEntry_AttrErr_V1_extended_data(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetDCInfoCtr1_array__);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntry_AttrErr_V1_extended_data, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetDCInfoCtr1_array__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsAddEntry_AttrErr_V1_problem(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsGetDCInfo1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetDCInfoCtr1_array,0);
+       offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntry_AttrErr_V1_problem, 0);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsAddEntry_AttrErr_V1_attid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = drsuapi_dissect_enum_DsAttributeId(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntry_AttrErr_V1_attid, 0);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsAddEntry_AttrErr_V1_is_val_returned(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntry_AttrErr_V1_is_val_returned, 0);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsAddEntry_AttrErr_V1_attr_val(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = drsuapi_dissect_struct_DsAttributeValue(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntry_AttrErr_V1_attr_val,0);
 
        return offset;
 }
 
 int
-drsuapi_dissect_struct_DsGetDCInfoCtr1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_struct_DsAddEntry_AttrErr_V1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
        proto_item *item = NULL;
        proto_tree *tree = NULL;
@@ -11629,12 +14274,22 @@ drsuapi_dissect_struct_DsGetDCInfoCtr1(tvbuff_t *tvb _U_, int offset _U_, packet
 
        if (parent_tree) {
                item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsGetDCInfoCtr1);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsAddEntry_AttrErr_V1);
        }
 
-       offset = drsuapi_dissect_element_DsGetDCInfoCtr1_count(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsAddEntry_AttrErr_V1_dsid(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsGetDCInfoCtr1_array(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsAddEntry_AttrErr_V1_extended_err(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsAddEntry_AttrErr_V1_extended_data(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsAddEntry_AttrErr_V1_problem(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsAddEntry_AttrErr_V1_attid(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsAddEntry_AttrErr_V1_is_val_returned(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsAddEntry_AttrErr_V1_attr_val(tvb, offset, pinfo, tree, di, drep);
 
 
        proto_item_set_len(item, offset-old_offset);
@@ -11649,213 +14304,188 @@ drsuapi_dissect_struct_DsGetDCInfoCtr1(tvbuff_t *tvb _U_, int offset _U_, packet
 
 
 /* IDL: struct { */
-/* IDL:        [charset(UTF16)] [unique(1)] uint16 *netbios_name; */
-/* IDL:        [charset(UTF16)] [unique(1)] uint16 *dns_name; */
-/* IDL:        [charset(UTF16)] [unique(1)] uint16 *site_name; */
-/* IDL:        [charset(UTF16)] [unique(1)] uint16 *site_dn; */
-/* IDL:        [charset(UTF16)] [unique(1)] uint16 *computer_dn; */
-/* IDL:        [charset(UTF16)] [unique(1)] uint16 *server_dn; */
-/* IDL:        [charset(UTF16)] [unique(1)] uint16 *ntds_dn; */
-/* IDL:        uint32 is_pdc; */
-/* IDL:        uint32 is_enabled; */
-/* IDL:        uint32 is_gc; */
-/* IDL:        GUID site_guid; */
-/* IDL:        GUID computer_guid; */
-/* IDL:        GUID server_guid; */
-/* IDL:        GUID ntds_guid; */
+/* IDL:        [max_recursion(20000)] [unique(1)] drsuapi_DsAddEntry_AttrErrListItem_V1 *next; */
+/* IDL:        drsuapi_DsAddEntry_AttrErr_V1 err_data; */
 /* IDL: } */
 
 static int
-drsuapi_dissect_element_DsGetDCInfo2_netbios_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsAddEntry_AttrErrListItem_V1_next(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetDCInfo2_netbios_name_, NDR_POINTER_UNIQUE, "Pointer to Netbios Name (uint16)",hf_drsuapi_drsuapi_DsGetDCInfo2_netbios_name);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsAddEntry_AttrErrListItem_V1_next_, NDR_POINTER_UNIQUE, "Pointer to Next (drsuapi_DsAddEntry_AttrErrListItem_V1)",hf_drsuapi_drsuapi_DsAddEntry_AttrErrListItem_V1_next);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetDCInfo2_netbios_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsAddEntry_AttrErrListItem_V1_err_data(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       char *data;
-
-       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsGetDCInfo2_netbios_name, FALSE, &data);
-       proto_item_append_text(tree, ": %s", data);
+       offset = drsuapi_dissect_struct_DsAddEntry_AttrErr_V1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntry_AttrErrListItem_V1_err_data,0);
 
        return offset;
 }
 
-static int
-drsuapi_dissect_element_DsGetDCInfo2_dns_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+int
+drsuapi_dissect_struct_DsAddEntry_AttrErrListItem_V1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetDCInfo2_dns_name_, NDR_POINTER_UNIQUE, "Pointer to Dns Name (uint16)",hf_drsuapi_drsuapi_DsGetDCInfo2_dns_name);
+       proto_item *item = NULL;
+       proto_tree *tree = NULL;
+       int old_offset;
 
-       return offset;
-}
+       ALIGN_TO_5_BYTES;
 
-static int
-drsuapi_dissect_element_DsGetDCInfo2_dns_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       char *data;
+       old_offset = offset;
 
-       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsGetDCInfo2_dns_name, FALSE, &data);
-       proto_item_append_text(tree, ": %s", data);
+       if (parent_tree) {
+               item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsAddEntry_AttrErrListItem_V1);
+       }
 
-       return offset;
-}
+       offset = drsuapi_dissect_element_DsAddEntry_AttrErrListItem_V1_next(tvb, offset, pinfo, tree, di, drep);
 
-static int
-drsuapi_dissect_element_DsGetDCInfo2_site_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetDCInfo2_site_name_, NDR_POINTER_UNIQUE, "Pointer to Site Name (uint16)",hf_drsuapi_drsuapi_DsGetDCInfo2_site_name);
+       offset = drsuapi_dissect_element_DsAddEntry_AttrErrListItem_V1_err_data(tvb, offset, pinfo, tree, di, drep);
 
-       return offset;
-}
 
-static int
-drsuapi_dissect_element_DsGetDCInfo2_site_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       char *data;
+       proto_item_set_len(item, offset-old_offset);
 
-       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsGetDCInfo2_site_name, FALSE, &data);
-       proto_item_append_text(tree, ": %s", data);
+
+       if (di->call_data->flags & DCERPC_IS_NDR64) {
+               ALIGN_TO_5_BYTES;
+       }
 
        return offset;
 }
 
-static int
-drsuapi_dissect_element_DsGetDCInfo2_site_dn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetDCInfo2_site_dn_, NDR_POINTER_UNIQUE, "Pointer to Site Dn (uint16)",hf_drsuapi_drsuapi_DsGetDCInfo2_site_dn);
 
-       return offset;
-}
+/* IDL: struct { */
+/* IDL:        [unique(1)] drsuapi_DsReplicaObjectIdentifier *id; */
+/* IDL:        uint32 count; */
+/* IDL:        drsuapi_DsAddEntry_AttrErrListItem_V1 first; */
+/* IDL: } */
 
 static int
-drsuapi_dissect_element_DsGetDCInfo2_site_dn_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsAddEntryErrorInfo_Attr_V1_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       char *data;
-
-       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsGetDCInfo2_site_dn, FALSE, &data);
-       proto_item_append_text(tree, ": %s", data);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsAddEntryErrorInfo_Attr_V1_id_, NDR_POINTER_UNIQUE, "Pointer to Id (drsuapi_DsReplicaObjectIdentifier)",hf_drsuapi_drsuapi_DsAddEntryErrorInfo_Attr_V1_id);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetDCInfo2_computer_dn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsAddEntryErrorInfo_Attr_V1_id_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetDCInfo2_computer_dn_, NDR_POINTER_UNIQUE, "Pointer to Computer Dn (uint16)",hf_drsuapi_drsuapi_DsGetDCInfo2_computer_dn);
+       offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntryErrorInfo_Attr_V1_id,0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetDCInfo2_computer_dn_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsAddEntryErrorInfo_Attr_V1_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       char *data;
-
-       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsGetDCInfo2_computer_dn, FALSE, &data);
-       proto_item_append_text(tree, ": %s", data);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntryErrorInfo_Attr_V1_count, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetDCInfo2_server_dn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsAddEntryErrorInfo_Attr_V1_first(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetDCInfo2_server_dn_, NDR_POINTER_UNIQUE, "Pointer to Server Dn (uint16)",hf_drsuapi_drsuapi_DsGetDCInfo2_server_dn);
+       offset = drsuapi_dissect_struct_DsAddEntry_AttrErrListItem_V1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntryErrorInfo_Attr_V1_first,0);
 
        return offset;
 }
 
-static int
-drsuapi_dissect_element_DsGetDCInfo2_server_dn_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+int
+drsuapi_dissect_struct_DsAddEntryErrorInfo_Attr_V1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
-       char *data;
+       proto_item *item = NULL;
+       proto_tree *tree = NULL;
+       int old_offset;
 
-       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsGetDCInfo2_server_dn, FALSE, &data);
-       proto_item_append_text(tree, ": %s", data);
+       ALIGN_TO_5_BYTES;
 
-       return offset;
-}
+       old_offset = offset;
 
-static int
-drsuapi_dissect_element_DsGetDCInfo2_ntds_dn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetDCInfo2_ntds_dn_, NDR_POINTER_UNIQUE, "Pointer to Ntds Dn (uint16)",hf_drsuapi_drsuapi_DsGetDCInfo2_ntds_dn);
+       if (parent_tree) {
+               item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsAddEntryErrorInfo_Attr_V1);
+       }
+
+       offset = drsuapi_dissect_element_DsAddEntryErrorInfo_Attr_V1_id(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsAddEntryErrorInfo_Attr_V1_count(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsAddEntryErrorInfo_Attr_V1_first(tvb, offset, pinfo, tree, di, drep);
 
-       return offset;
-}
 
-static int
-drsuapi_dissect_element_DsGetDCInfo2_ntds_dn_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       char *data;
+       proto_item_set_len(item, offset-old_offset);
 
-       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsGetDCInfo2_ntds_dn, FALSE, &data);
-       proto_item_append_text(tree, ": %s", data);
+
+       if (di->call_data->flags & DCERPC_IS_NDR64) {
+               ALIGN_TO_5_BYTES;
+       }
 
        return offset;
 }
 
-static int
-drsuapi_dissect_element_DsGetDCInfo2_is_pdc(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDCInfo2_is_pdc, 0);
 
-       return offset;
-}
+/* IDL: struct { */
+/* IDL:        uint32 dsid; */
+/* IDL:        WERROR extended_err; */
+/* IDL:        uint32 extended_data; */
+/* IDL:        uint16 problem; */
+/* IDL:        [unique(1)] drsuapi_DsReplicaObjectIdentifier *id_matched; */
+/* IDL: } */
 
 static int
-drsuapi_dissect_element_DsGetDCInfo2_is_enabled(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsAddEntryErrorInfo_Name_V1_dsid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDCInfo2_is_enabled, 0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntryErrorInfo_Name_V1_dsid, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetDCInfo2_is_gc(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsAddEntryErrorInfo_Name_V1_extended_err(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDCInfo2_is_gc, 0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntryErrorInfo_Name_V1_extended_err, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetDCInfo2_site_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsAddEntryErrorInfo_Name_V1_extended_data(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDCInfo2_site_guid, NULL);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntryErrorInfo_Name_V1_extended_data, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetDCInfo2_computer_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsAddEntryErrorInfo_Name_V1_problem(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDCInfo2_computer_guid, NULL);
+       offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntryErrorInfo_Name_V1_problem, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetDCInfo2_server_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsAddEntryErrorInfo_Name_V1_id_matched(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDCInfo2_server_guid, NULL);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsAddEntryErrorInfo_Name_V1_id_matched_, NDR_POINTER_UNIQUE, "Pointer to Id Matched (drsuapi_DsReplicaObjectIdentifier)",hf_drsuapi_drsuapi_DsAddEntryErrorInfo_Name_V1_id_matched);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetDCInfo2_ntds_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsAddEntryErrorInfo_Name_V1_id_matched_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDCInfo2_ntds_guid, NULL);
+       offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntryErrorInfo_Name_V1_id_matched,0);
 
        return offset;
 }
 
 int
-drsuapi_dissect_struct_DsGetDCInfo2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_struct_DsAddEntryErrorInfo_Name_V1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
        proto_item *item = NULL;
        proto_tree *tree = NULL;
@@ -11867,36 +14497,18 @@ drsuapi_dissect_struct_DsGetDCInfo2(tvbuff_t *tvb _U_, int offset _U_, packet_in
 
        if (parent_tree) {
                item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsGetDCInfo2);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsAddEntryErrorInfo_Name_V1);
        }
 
-       offset = drsuapi_dissect_element_DsGetDCInfo2_netbios_name(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsGetDCInfo2_dns_name(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsGetDCInfo2_site_name(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsGetDCInfo2_site_dn(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsGetDCInfo2_computer_dn(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsGetDCInfo2_server_dn(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsGetDCInfo2_ntds_dn(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsGetDCInfo2_is_pdc(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsGetDCInfo2_is_enabled(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsGetDCInfo2_is_gc(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsAddEntryErrorInfo_Name_V1_dsid(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsGetDCInfo2_site_guid(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsAddEntryErrorInfo_Name_V1_extended_err(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsGetDCInfo2_computer_guid(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsAddEntryErrorInfo_Name_V1_extended_data(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsGetDCInfo2_server_guid(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsAddEntryErrorInfo_Name_V1_problem(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsGetDCInfo2_ntds_guid(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsAddEntryErrorInfo_Name_V1_id_matched(tvb, offset, pinfo, tree, di, drep);
 
 
        proto_item_set_len(item, offset-old_offset);
@@ -11911,291 +14523,284 @@ drsuapi_dissect_struct_DsGetDCInfo2(tvbuff_t *tvb _U_, int offset _U_, packet_in
 
 
 /* IDL: struct { */
-/* IDL:        [range(0,10000)] uint32 count; */
-/* IDL:        [size_is(count)] [unique(1)] drsuapi_DsGetDCInfo2 *array; */
+/* IDL:        [value(83)] uint8 name_res; */
+/* IDL:        [value(0)] uint8 unused_pad; */
+/* IDL:        [value(0)] uint16 next_rdn; */
 /* IDL: } */
 
 static int
-drsuapi_dissect_element_DsGetDCInfoCtr2_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDCInfoCtr2_count, 0);
-
-       return offset;
-}
-
-static int
-drsuapi_dissect_element_DsGetDCInfoCtr2_array(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_NameResOp_V1_name_res(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetDCInfoCtr2_array_, NDR_POINTER_UNIQUE, "Pointer to Array (drsuapi_DsGetDCInfo2)",hf_drsuapi_drsuapi_DsGetDCInfoCtr2_array);
+       offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_NameResOp_V1_name_res, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetDCInfoCtr2_array_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_NameResOp_V1_unused_pad(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetDCInfoCtr2_array__);
+       offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_NameResOp_V1_unused_pad, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetDCInfoCtr2_array__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_NameResOp_V1_next_rdn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsGetDCInfo2(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetDCInfoCtr2_array,0);
+       offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_NameResOp_V1_next_rdn, 0);
 
        return offset;
 }
 
 int
-drsuapi_dissect_struct_DsGetDCInfoCtr2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_struct_NameResOp_V1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
        proto_item *item = NULL;
        proto_tree *tree = NULL;
        int old_offset;
 
-       ALIGN_TO_5_BYTES;
+       ALIGN_TO_2_BYTES;
 
        old_offset = offset;
 
        if (parent_tree) {
                item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsGetDCInfoCtr2);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_NameResOp_V1);
        }
 
-       offset = drsuapi_dissect_element_DsGetDCInfoCtr2_count(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_NameResOp_V1_name_res(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsGetDCInfoCtr2_array(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_NameResOp_V1_unused_pad(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_NameResOp_V1_next_rdn(tvb, offset, pinfo, tree, di, drep);
 
 
        proto_item_set_len(item, offset-old_offset);
 
 
        if (di->call_data->flags & DCERPC_IS_NDR64) {
-               ALIGN_TO_5_BYTES;
+               ALIGN_TO_2_BYTES;
        }
 
        return offset;
 }
 
 
-/* IDL: struct { */
-/* IDL:        [charset(UTF16)] [unique(1)] uint16 *netbios_name; */
-/* IDL:        [charset(UTF16)] [unique(1)] uint16 *dns_name; */
-/* IDL:        [charset(UTF16)] [unique(1)] uint16 *site_name; */
-/* IDL:        [charset(UTF16)] [unique(1)] uint16 *site_dn; */
-/* IDL:        [charset(UTF16)] [unique(1)] uint16 *computer_dn; */
-/* IDL:        [charset(UTF16)] [unique(1)] uint16 *server_dn; */
-/* IDL:        [charset(UTF16)] [unique(1)] uint16 *ntds_dn; */
-/* IDL:        uint32 is_pdc; */
-/* IDL:        uint32 is_enabled; */
-/* IDL:        uint32 is_gc; */
-/* IDL:        uint32 is_rodc; */
-/* IDL:        GUID site_guid; */
-/* IDL:        GUID computer_guid; */
-/* IDL:        GUID server_guid; */
-/* IDL:        GUID ntds_guid; */
+/* IDL: enum { */
+/* IDL:        DRSUAPI_CH_REFTYPE_SUPERIOR=0x0000, */
+/* IDL:        DRSUAPI_CH_REFTYPE_SUBORDINATE=0x0001, */
+/* IDL:        DRSUAPI_CH_REFTYPE_NSSR=0x0002, */
+/* IDL:        DRSUAPI_CH_REFTYPE_CROSS=0x0003, */
 /* IDL: } */
 
-static int
-drsuapi_dissect_element_DsGetDCInfo3_netbios_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+int
+drsuapi_dissect_enum_DsAddEntry_RefType(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint16 *param _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetDCInfo3_netbios_name_, NDR_POINTER_UNIQUE, "Pointer to Netbios Name (uint16)",hf_drsuapi_drsuapi_DsGetDCInfo3_netbios_name);
-
+       guint16 parameter=0;
+       if (param) {
+               parameter = *param;
+       }
+       offset = dissect_ndr_uint16(tvb, offset, pinfo, tree, di, drep, hf_index, &parameter);
+       if (param) {
+               *param = parameter;
+       }
        return offset;
 }
 
-static int
-drsuapi_dissect_element_DsGetDCInfo3_netbios_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       char *data;
 
-       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsGetDCInfo3_netbios_name, FALSE, &data);
-       proto_item_append_text(tree, ": %s", data);
+/* IDL: enum { */
+/* IDL:        DRSUAPI_SE_CHOICE_BASE_ONLY=0x00, */
+/* IDL:        DRSUAPI_SE_CHOICE_IMMED_CHLDRN=0x01, */
+/* IDL:        DRSUAPI_SE_CHOICE_WHOLE_SUBTREE=0x02, */
+/* IDL: } */
 
+int
+drsuapi_dissect_enum_DsAddEntry_ChoiceType(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint8 *param _U_)
+{
+       guint8 parameter=0;
+       if (param) {
+               parameter = *param;
+       }
+       offset = dissect_ndr_uint8(tvb, offset, pinfo, tree, di, drep, hf_index, &parameter);
+       if (param) {
+               *param = parameter;
+       }
        return offset;
 }
 
-static int
-drsuapi_dissect_element_DsGetDCInfo3_dns_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetDCInfo3_dns_name_, NDR_POINTER_UNIQUE, "Pointer to Dns Name (uint16)",hf_drsuapi_drsuapi_DsGetDCInfo3_dns_name);
 
-       return offset;
-}
+/* IDL: struct { */
+/* IDL:        [max_recursion(1024)] [unique(1)] drsuapi_DsaAddressListItem_V1 *next; */
+/* IDL:        [unique(1)] lsa_String *address; */
+/* IDL: } */
 
 static int
-drsuapi_dissect_element_DsGetDCInfo3_dns_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsaAddressListItem_V1_next(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       char *data;
-
-       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsGetDCInfo3_dns_name, FALSE, &data);
-       proto_item_append_text(tree, ": %s", data);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsaAddressListItem_V1_next_, NDR_POINTER_UNIQUE, "Pointer to Next (drsuapi_DsaAddressListItem_V1)",hf_drsuapi_drsuapi_DsaAddressListItem_V1_next);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetDCInfo3_site_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsaAddressListItem_V1_address(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetDCInfo3_site_name_, NDR_POINTER_UNIQUE, "Pointer to Site Name (uint16)",hf_drsuapi_drsuapi_DsGetDCInfo3_site_name);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsaAddressListItem_V1_address_, NDR_POINTER_UNIQUE, "Pointer to Address (lsa_String)",hf_drsuapi_drsuapi_DsaAddressListItem_V1_address);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetDCInfo3_site_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsaAddressListItem_V1_address_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       char *data;
-
-       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsGetDCInfo3_site_name, FALSE, &data);
-       proto_item_append_text(tree, ": %s", data);
+       offset = drsuapi_dissect_struct_lsa_String(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsaAddressListItem_V1_address,0);
 
        return offset;
 }
 
-static int
-drsuapi_dissect_element_DsGetDCInfo3_site_dn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+int
+drsuapi_dissect_struct_DsaAddressListItem_V1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetDCInfo3_site_dn_, NDR_POINTER_UNIQUE, "Pointer to Site Dn (uint16)",hf_drsuapi_drsuapi_DsGetDCInfo3_site_dn);
+       proto_item *item = NULL;
+       proto_tree *tree = NULL;
+       int old_offset;
 
-       return offset;
-}
+       ALIGN_TO_5_BYTES;
 
-static int
-drsuapi_dissect_element_DsGetDCInfo3_site_dn_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       char *data;
+       old_offset = offset;
 
-       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsGetDCInfo3_site_dn, FALSE, &data);
-       proto_item_append_text(tree, ": %s", data);
+       if (parent_tree) {
+               item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsaAddressListItem_V1);
+       }
 
-       return offset;
-}
+       offset = drsuapi_dissect_element_DsaAddressListItem_V1_next(tvb, offset, pinfo, tree, di, drep);
 
-static int
-drsuapi_dissect_element_DsGetDCInfo3_computer_dn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetDCInfo3_computer_dn_, NDR_POINTER_UNIQUE, "Pointer to Computer Dn (uint16)",hf_drsuapi_drsuapi_DsGetDCInfo3_computer_dn);
+       offset = drsuapi_dissect_element_DsaAddressListItem_V1_address(tvb, offset, pinfo, tree, di, drep);
 
-       return offset;
-}
 
-static int
-drsuapi_dissect_element_DsGetDCInfo3_computer_dn_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       char *data;
+       proto_item_set_len(item, offset-old_offset);
 
-       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsGetDCInfo3_computer_dn, FALSE, &data);
-       proto_item_append_text(tree, ": %s", data);
+
+       if (di->call_data->flags & DCERPC_IS_NDR64) {
+               ALIGN_TO_5_BYTES;
+       }
 
        return offset;
 }
 
+
+/* IDL: struct { */
+/* IDL:        [unique(1)] drsuapi_DsReplicaObjectIdentifier *id_target; */
+/* IDL:        drsuapi_NameResOp_V1 op_state; */
+/* IDL:        [value(0)] uint16 rdn_alias; */
+/* IDL:        [value(0)] uint16 rdn_internal; */
+/* IDL:        drsuapi_DsAddEntry_RefType ref_type; */
+/* IDL:        uint16 addr_list_count; */
+/* IDL:        [unique(1)] drsuapi_DsaAddressListItem_V1 *addr_list; */
+/* IDL:        [max_recursion(20000)] [unique(1)] drsuapi_DsAddEntry_RefErrListItem_V1 *next; */
+/* IDL:        uint32 is_choice_set; */
+/* IDL:        drsuapi_DsAddEntry_ChoiceType choice; */
+/* IDL: } */
+
 static int
-drsuapi_dissect_element_DsGetDCInfo3_server_dn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsAddEntry_RefErrListItem_V1_id_target(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetDCInfo3_server_dn_, NDR_POINTER_UNIQUE, "Pointer to Server Dn (uint16)",hf_drsuapi_drsuapi_DsGetDCInfo3_server_dn);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsAddEntry_RefErrListItem_V1_id_target_, NDR_POINTER_UNIQUE, "Pointer to Id Target (drsuapi_DsReplicaObjectIdentifier)",hf_drsuapi_drsuapi_DsAddEntry_RefErrListItem_V1_id_target);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetDCInfo3_server_dn_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsAddEntry_RefErrListItem_V1_id_target_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       char *data;
-
-       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsGetDCInfo3_server_dn, FALSE, &data);
-       proto_item_append_text(tree, ": %s", data);
+       offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntry_RefErrListItem_V1_id_target,0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetDCInfo3_ntds_dn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsAddEntry_RefErrListItem_V1_op_state(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetDCInfo3_ntds_dn_, NDR_POINTER_UNIQUE, "Pointer to Ntds Dn (uint16)",hf_drsuapi_drsuapi_DsGetDCInfo3_ntds_dn);
+       offset = drsuapi_dissect_struct_NameResOp_V1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntry_RefErrListItem_V1_op_state,0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetDCInfo3_ntds_dn_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsAddEntry_RefErrListItem_V1_rdn_alias(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       char *data;
-
-       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsGetDCInfo3_ntds_dn, FALSE, &data);
-       proto_item_append_text(tree, ": %s", data);
+       offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntry_RefErrListItem_V1_rdn_alias, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetDCInfo3_is_pdc(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsAddEntry_RefErrListItem_V1_rdn_internal(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDCInfo3_is_pdc, 0);
+       offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntry_RefErrListItem_V1_rdn_internal, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetDCInfo3_is_enabled(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsAddEntry_RefErrListItem_V1_ref_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDCInfo3_is_enabled, 0);
+       offset = drsuapi_dissect_enum_DsAddEntry_RefType(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntry_RefErrListItem_V1_ref_type, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetDCInfo3_is_gc(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsAddEntry_RefErrListItem_V1_addr_list_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDCInfo3_is_gc, 0);
+       offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntry_RefErrListItem_V1_addr_list_count, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetDCInfo3_is_rodc(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsAddEntry_RefErrListItem_V1_addr_list(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDCInfo3_is_rodc, 0);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsAddEntry_RefErrListItem_V1_addr_list_, NDR_POINTER_UNIQUE, "Pointer to Addr List (drsuapi_DsaAddressListItem_V1)",hf_drsuapi_drsuapi_DsAddEntry_RefErrListItem_V1_addr_list);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetDCInfo3_site_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsAddEntry_RefErrListItem_V1_addr_list_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDCInfo3_site_guid, NULL);
+       offset = drsuapi_dissect_struct_DsaAddressListItem_V1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntry_RefErrListItem_V1_addr_list,0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetDCInfo3_computer_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsAddEntry_RefErrListItem_V1_next(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDCInfo3_computer_guid, NULL);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsAddEntry_RefErrListItem_V1_next_, NDR_POINTER_UNIQUE, "Pointer to Next (drsuapi_DsAddEntry_RefErrListItem_V1)",hf_drsuapi_drsuapi_DsAddEntry_RefErrListItem_V1_next);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetDCInfo3_server_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsAddEntry_RefErrListItem_V1_is_choice_set(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDCInfo3_server_guid, NULL);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntry_RefErrListItem_V1_is_choice_set, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetDCInfo3_ntds_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsAddEntry_RefErrListItem_V1_choice(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDCInfo3_ntds_guid, NULL);
+       offset = drsuapi_dissect_enum_DsAddEntry_ChoiceType(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntry_RefErrListItem_V1_choice, 0);
 
        return offset;
 }
 
 int
-drsuapi_dissect_struct_DsGetDCInfo3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_struct_DsAddEntry_RefErrListItem_V1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
        proto_item *item = NULL;
        proto_tree *tree = NULL;
@@ -12207,38 +14812,28 @@ drsuapi_dissect_struct_DsGetDCInfo3(tvbuff_t *tvb _U_, int offset _U_, packet_in
 
        if (parent_tree) {
                item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsGetDCInfo3);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsAddEntry_RefErrListItem_V1);
        }
 
-       offset = drsuapi_dissect_element_DsGetDCInfo3_netbios_name(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsGetDCInfo3_dns_name(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsGetDCInfo3_site_name(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsGetDCInfo3_site_dn(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsGetDCInfo3_computer_dn(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsGetDCInfo3_server_dn(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsAddEntry_RefErrListItem_V1_id_target(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsGetDCInfo3_ntds_dn(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsAddEntry_RefErrListItem_V1_op_state(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsGetDCInfo3_is_pdc(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsAddEntry_RefErrListItem_V1_rdn_alias(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsGetDCInfo3_is_enabled(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsAddEntry_RefErrListItem_V1_rdn_internal(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsGetDCInfo3_is_gc(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsAddEntry_RefErrListItem_V1_ref_type(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsGetDCInfo3_is_rodc(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsAddEntry_RefErrListItem_V1_addr_list_count(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsGetDCInfo3_site_guid(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsAddEntry_RefErrListItem_V1_addr_list(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsGetDCInfo3_computer_guid(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsAddEntry_RefErrListItem_V1_next(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsGetDCInfo3_server_guid(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsAddEntry_RefErrListItem_V1_is_choice_set(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsGetDCInfo3_ntds_guid(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsAddEntry_RefErrListItem_V1_choice(tvb, offset, pinfo, tree, di, drep);
 
 
        proto_item_set_len(item, offset-old_offset);
@@ -12253,44 +14848,46 @@ drsuapi_dissect_struct_DsGetDCInfo3(tvbuff_t *tvb _U_, int offset _U_, packet_in
 
 
 /* IDL: struct { */
-/* IDL:        [range(0,10000)] uint32 count; */
-/* IDL:        [size_is(count)] [unique(1)] drsuapi_DsGetDCInfo3 *array; */
+/* IDL:        uint32 dsid; */
+/* IDL:        WERROR extended_err; */
+/* IDL:        uint32 extended_data; */
+/* IDL:        drsuapi_DsAddEntry_RefErrListItem_V1 refer; */
 /* IDL: } */
 
 static int
-drsuapi_dissect_element_DsGetDCInfoCtr3_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsAddEntryErrorInfo_Referr_V1_dsid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDCInfoCtr3_count, 0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntryErrorInfo_Referr_V1_dsid, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetDCInfoCtr3_array(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsAddEntryErrorInfo_Referr_V1_extended_err(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetDCInfoCtr3_array_, NDR_POINTER_UNIQUE, "Pointer to Array (drsuapi_DsGetDCInfo3)",hf_drsuapi_drsuapi_DsGetDCInfoCtr3_array);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntryErrorInfo_Referr_V1_extended_err, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetDCInfoCtr3_array_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsAddEntryErrorInfo_Referr_V1_extended_data(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetDCInfoCtr3_array__);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntryErrorInfo_Referr_V1_extended_data, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetDCInfoCtr3_array__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsAddEntryErrorInfo_Referr_V1_refer(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsGetDCInfo3(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetDCInfoCtr3_array,0);
+       offset = drsuapi_dissect_struct_DsAddEntry_RefErrListItem_V1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntryErrorInfo_Referr_V1_refer,0);
 
        return offset;
 }
 
 int
-drsuapi_dissect_struct_DsGetDCInfoCtr3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_struct_DsAddEntryErrorInfo_Referr_V1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
        proto_item *item = NULL;
        proto_tree *tree = NULL;
@@ -12302,12 +14899,16 @@ drsuapi_dissect_struct_DsGetDCInfoCtr3(tvbuff_t *tvb _U_, int offset _U_, packet
 
        if (parent_tree) {
                item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsGetDCInfoCtr3);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsAddEntryErrorInfo_Referr_V1);
        }
 
-       offset = drsuapi_dissect_element_DsGetDCInfoCtr3_count(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsAddEntryErrorInfo_Referr_V1_dsid(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsGetDCInfoCtr3_array(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsAddEntryErrorInfo_Referr_V1_extended_err(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsAddEntryErrorInfo_Referr_V1_extended_data(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsAddEntryErrorInfo_Referr_V1_refer(tvb, offset, pinfo, tree, di, drep);
 
 
        proto_item_set_len(item, offset-old_offset);
@@ -12321,86 +14922,165 @@ drsuapi_dissect_struct_DsGetDCInfoCtr3(tvbuff_t *tvb _U_, int offset _U_, packet
 }
 
 
-/* IDL: struct { */
-/* IDL:        [flag(LIBNDR_FLAG_BIGENDIAN)] ipv4address client_ip_address; */
-/* IDL:        uint32 unknown2; */
-/* IDL:        uint32 connection_time; */
-/* IDL:        uint32 unknown4; */
-/* IDL:        uint32 unknown5; */
-/* IDL:        uint32 unknown6; */
-/* IDL:        [charset(UTF16)] [unique(1)] uint16 *client_account; */
+/* IDL: [switch_type(uint32)] union { */
+/* IDL: [case(1)] [case(1)] drsuapi_DsAddEntryErrorInfo_Attr_V1 attr_err; */
+/* IDL: [case(2)] [case(2)] drsuapi_DsAddEntryErrorInfo_Name_V1 name_err; */
+/* IDL: [case(3)] [case(3)] drsuapi_DsAddEntryErrorInfo_Referr_V1 referral_err; */
+/* IDL: [case(4)] [case(4)] drsuapi_DsAddEntryErrorInfoX security_err; */
+/* IDL: [case(5)] [case(5)] drsuapi_DsAddEntryErrorInfoX service_err; */
+/* IDL: [case(6)] [case(6)] drsuapi_DsAddEntryErrorInfoX update_err; */
+/* IDL: [case(7)] [case(7)] drsuapi_DsAddEntryErrorInfoX system_err; */
 /* IDL: } */
 
 static int
-drsuapi_dissect_element_DsGetDCConnection01_client_ip_address(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsAddEntryErrorInfo_attr_err(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       proto_tree_add_item(tree, hf_drsuapi_drsuapi_DsGetDCConnection01_client_ip_address, tvb, offset, 4, ENC_BIG_ENDIAN); offset += 4;
+       offset = drsuapi_dissect_struct_DsAddEntryErrorInfo_Attr_V1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntryErrorInfo_attr_err,0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetDCConnection01_unknown2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsAddEntryErrorInfo_name_err(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDCConnection01_unknown2, 0);
+       offset = drsuapi_dissect_struct_DsAddEntryErrorInfo_Name_V1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntryErrorInfo_name_err,0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetDCConnection01_connection_time(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsAddEntryErrorInfo_referral_err(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDCConnection01_connection_time, 0);
+       offset = drsuapi_dissect_struct_DsAddEntryErrorInfo_Referr_V1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntryErrorInfo_referral_err,0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetDCConnection01_unknown4(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsAddEntryErrorInfo_security_err(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDCConnection01_unknown4, 0);
+       offset = drsuapi_dissect_struct_DsAddEntryErrorInfoX(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntryErrorInfo_security_err,0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetDCConnection01_unknown5(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsAddEntryErrorInfo_service_err(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDCConnection01_unknown5, 0);
+       offset = drsuapi_dissect_struct_DsAddEntryErrorInfoX(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntryErrorInfo_service_err,0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetDCConnection01_unknown6(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsAddEntryErrorInfo_update_err(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDCConnection01_unknown6, 0);
+       offset = drsuapi_dissect_struct_DsAddEntryErrorInfoX(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntryErrorInfo_update_err,0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetDCConnection01_client_account(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsAddEntryErrorInfo_system_err(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetDCConnection01_client_account_, NDR_POINTER_UNIQUE, "Pointer to Client Account (uint16)",hf_drsuapi_drsuapi_DsGetDCConnection01_client_account);
+       offset = drsuapi_dissect_struct_DsAddEntryErrorInfoX(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntryErrorInfo_system_err,0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetDCConnection01_client_account_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_DsAddEntryErrorInfo(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
-       char *data;
+       proto_item *item = NULL;
+       proto_tree *tree = NULL;
+       int old_offset;
+       guint32 level;
 
-       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsGetDCConnection01_client_account, FALSE, &data);
-       proto_item_append_text(tree, ": %s", data);
+       old_offset = offset;
+       if (parent_tree) {
+               tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_DsAddEntryErrorInfo, &item, "drsuapi_DsAddEntryErrorInfo");
+       }
+
+       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level);
+       ALIGN_TO_5_BYTES;
+
+       switch(level) {
+               case 1:
+                       offset = drsuapi_dissect_element_DsAddEntryErrorInfo_attr_err(tvb, offset, pinfo, tree, di, drep);
+               break;
+
+               case 2:
+                       offset = drsuapi_dissect_element_DsAddEntryErrorInfo_name_err(tvb, offset, pinfo, tree, di, drep);
+               break;
+
+               case 3:
+                       offset = drsuapi_dissect_element_DsAddEntryErrorInfo_referral_err(tvb, offset, pinfo, tree, di, drep);
+               break;
+
+               case 4:
+                       offset = drsuapi_dissect_element_DsAddEntryErrorInfo_security_err(tvb, offset, pinfo, tree, di, drep);
+               break;
+
+               case 5:
+                       offset = drsuapi_dissect_element_DsAddEntryErrorInfo_service_err(tvb, offset, pinfo, tree, di, drep);
+               break;
+
+               case 6:
+                       offset = drsuapi_dissect_element_DsAddEntryErrorInfo_update_err(tvb, offset, pinfo, tree, di, drep);
+               break;
+
+               case 7:
+                       offset = drsuapi_dissect_element_DsAddEntryErrorInfo_system_err(tvb, offset, pinfo, tree, di, drep);
+               break;
+       }
+       proto_item_set_len(item, offset-old_offset);
+
+
+       return offset;
+}
+
+/* IDL: struct { */
+/* IDL:        WERROR status; */
+/* IDL:        drsuapi_DsAddEntry_DirErr dir_err; */
+/* IDL:        [switch_is(dir_err)] [unique(1)] drsuapi_DsAddEntryErrorInfo *info; */
+/* IDL: } */
+
+static int
+drsuapi_dissect_element_DsAddEntry_ErrData_V1_status(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntry_ErrData_V1_status, 0);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsAddEntry_ErrData_V1_dir_err(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, guint32 *dir_err)
+{
+       offset = drsuapi_dissect_enum_DsAddEntry_DirErr(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntry_ErrData_V1_dir_err, dir_err);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsAddEntry_ErrData_V1_info(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, guint32 *dir_err)
+{
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsAddEntry_ErrData_V1_info_, NDR_POINTER_UNIQUE, "Pointer to Info (drsuapi_DsAddEntryErrorInfo)",hf_drsuapi_drsuapi_DsAddEntry_ErrData_V1_info);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsAddEntry_ErrData_V1_info_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, guint32 *dir_err)
+{
+       offset = drsuapi_dissect_DsAddEntryErrorInfo(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntry_ErrData_V1_info, *dir_err);
 
        return offset;
 }
 
 int
-drsuapi_dissect_struct_DsGetDCConnection01(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_struct_DsAddEntry_ErrData_V1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
+       guint32 dir_err = 0;
        proto_item *item = NULL;
        proto_tree *tree = NULL;
        int old_offset;
@@ -12411,22 +15091,14 @@ drsuapi_dissect_struct_DsGetDCConnection01(tvbuff_t *tvb _U_, int offset _U_, pa
 
        if (parent_tree) {
                item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsGetDCConnection01);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsAddEntry_ErrData_V1);
        }
 
-       offset = drsuapi_dissect_element_DsGetDCConnection01_client_ip_address(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsGetDCConnection01_unknown2(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsGetDCConnection01_connection_time(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsGetDCConnection01_unknown4(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsGetDCConnection01_unknown5(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsAddEntry_ErrData_V1_status(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsGetDCConnection01_unknown6(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsAddEntry_ErrData_V1_dir_err(tvb, offset, pinfo, tree, di, drep, &dir_err);
 
-       offset = drsuapi_dissect_element_DsGetDCConnection01_client_account(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsAddEntry_ErrData_V1_info(tvb, offset, pinfo, tree, di, drep, &dir_err);
 
 
        proto_item_set_len(item, offset-old_offset);
@@ -12440,176 +15112,203 @@ drsuapi_dissect_struct_DsGetDCConnection01(tvbuff_t *tvb _U_, int offset _U_, pa
 }
 
 
-/* IDL: struct { */
-/* IDL:        [range(0,10000)] uint32 count; */
-/* IDL:        [size_is(count)] [unique(1)] drsuapi_DsGetDCConnection01 *array; */
+/* IDL: [switch_type(uint32)] union { */
+/* IDL: [case(1)] [case(1)] drsuapi_DsAddEntry_ErrData_V1 v1; */
 /* IDL: } */
 
 static int
-drsuapi_dissect_element_DsGetDCConnectionCtr01_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsAddEntry_ErrData_v1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDCConnectionCtr01_count, 0);
+       offset = drsuapi_dissect_struct_DsAddEntry_ErrData_V1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntry_ErrData_v1,0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetDCConnectionCtr01_array(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_DsAddEntry_ErrData(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetDCConnectionCtr01_array_, NDR_POINTER_UNIQUE, "Pointer to Array (drsuapi_DsGetDCConnection01)",hf_drsuapi_drsuapi_DsGetDCConnectionCtr01_array);
+       proto_item *item = NULL;
+       proto_tree *tree = NULL;
+       int old_offset;
+       guint32 level;
+
+       old_offset = offset;
+       if (parent_tree) {
+               tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_DsAddEntry_ErrData, &item, "drsuapi_DsAddEntry_ErrData");
+       }
+
+       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level);
+       ALIGN_TO_5_BYTES;
+
+       switch(level) {
+               case 1:
+                       offset = drsuapi_dissect_element_DsAddEntry_ErrData_v1(tvb, offset, pinfo, tree, di, drep);
+               break;
+       }
+       proto_item_set_len(item, offset-old_offset);
+
 
        return offset;
 }
 
+/* IDL: struct { */
+/* IDL:        GUID guid; */
+/* IDL:        dom_sid28 sid; */
+/* IDL: } */
+
 static int
-drsuapi_dissect_element_DsGetDCConnectionCtr01_array_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaObjectIdentifier2_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetDCConnectionCtr01_array__);
+       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjectIdentifier2_guid, NULL);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetDCConnectionCtr01_array__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaObjectIdentifier2_sid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsGetDCConnection01(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetDCConnectionCtr01_array,0);
+
+               di->hf_index = hf_drsuapi_drsuapi_DsReplicaObjectIdentifier2_sid;
+
+               offset = dissect_ndr_nt_SID28(tvb, offset, pinfo, tree, di, drep);
+
 
        return offset;
 }
 
 int
-drsuapi_dissect_struct_DsGetDCConnectionCtr01(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_struct_DsReplicaObjectIdentifier2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
        proto_item *item = NULL;
        proto_tree *tree = NULL;
        int old_offset;
 
-       ALIGN_TO_5_BYTES;
+       ALIGN_TO_4_BYTES;
 
        old_offset = offset;
 
        if (parent_tree) {
                item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsGetDCConnectionCtr01);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaObjectIdentifier2);
        }
 
-       offset = drsuapi_dissect_element_DsGetDCConnectionCtr01_count(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaObjectIdentifier2_guid(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsGetDCConnectionCtr01_array(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaObjectIdentifier2_sid(tvb, offset, pinfo, tree, di, drep);
 
 
        proto_item_set_len(item, offset-old_offset);
 
 
        if (di->call_data->flags & DCERPC_IS_NDR64) {
-               ALIGN_TO_5_BYTES;
+               ALIGN_TO_4_BYTES;
        }
 
        return offset;
 }
 
 
-/* IDL: [switch_type(drsuapi_DsGetDCInfoCtrLevels)] union { */
-/* IDL: [case(DRSUAPI_DC_INFO_CTR_1)] [case(DRSUAPI_DC_INFO_CTR_1)] drsuapi_DsGetDCInfoCtr1 ctr1; */
-/* IDL: [case(DRSUAPI_DC_INFO_CTR_2)] [case(DRSUAPI_DC_INFO_CTR_2)] drsuapi_DsGetDCInfoCtr2 ctr2; */
-/* IDL: [case(DRSUAPI_DC_INFO_CTR_3)] [case(DRSUAPI_DC_INFO_CTR_3)] drsuapi_DsGetDCInfoCtr3 ctr3; */
-/* IDL: [case(DRSUAPI_DC_CONNECTION_CTR_01)] [case(DRSUAPI_DC_CONNECTION_CTR_01)] drsuapi_DsGetDCConnectionCtr01 ctr01; */
+/* IDL: struct { */
+/* IDL:        [unique(1)] drsuapi_DsReplicaObjectIdentifier *id; */
+/* IDL:        drsuapi_DsAddEntry_DirErr dir_err; */
+/* IDL:        uint32 dsid; */
+/* IDL:        WERROR extended_err; */
+/* IDL:        uint32 extended_data; */
+/* IDL:        uint16 problem; */
+/* IDL:        [range(0,10000)] uint32 count; */
+/* IDL:        [size_is(count)] [unique(1)] drsuapi_DsReplicaObjectIdentifier2 *objects; */
 /* IDL: } */
 
 static int
-drsuapi_dissect_element_DsGetDCInfoCtr_ctr1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsAddEntryCtr2_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsGetDCInfoCtr1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetDCInfoCtr_ctr1,0);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsAddEntryCtr2_id_, NDR_POINTER_UNIQUE, "Pointer to Id (drsuapi_DsReplicaObjectIdentifier)",hf_drsuapi_drsuapi_DsAddEntryCtr2_id);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetDCInfoCtr_ctr2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsAddEntryCtr2_id_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsGetDCInfoCtr2(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetDCInfoCtr_ctr2,0);
+       offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntryCtr2_id,0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetDCInfoCtr_ctr3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsAddEntryCtr2_dir_err(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsGetDCInfoCtr3(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetDCInfoCtr_ctr3,0);
+       offset = drsuapi_dissect_enum_DsAddEntry_DirErr(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntryCtr2_dir_err, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetDCInfoCtr_ctr01(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsAddEntryCtr2_dsid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsGetDCConnectionCtr01(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetDCInfoCtr_ctr01,0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntryCtr2_dsid, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_DsGetDCInfoCtr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_element_DsAddEntryCtr2_extended_err(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       proto_item *item = NULL;
-       proto_tree *tree = NULL;
-       int old_offset;
-       guint32 level;
-
-       old_offset = offset;
-       if (parent_tree) {
-               tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_DsGetDCInfoCtr, &item, "drsuapi_DsGetDCInfoCtr");
-       }
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntryCtr2_extended_err, 0);
 
-       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level);
-       ALIGN_TO_5_BYTES;
+       return offset;
+}
 
-       switch(level) {
-               case DRSUAPI_DC_INFO_CTR_1:
-                       offset = drsuapi_dissect_element_DsGetDCInfoCtr_ctr1(tvb, offset, pinfo, tree, di, drep);
-               break;
+static int
+drsuapi_dissect_element_DsAddEntryCtr2_extended_data(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntryCtr2_extended_data, 0);
 
-               case DRSUAPI_DC_INFO_CTR_2:
-                       offset = drsuapi_dissect_element_DsGetDCInfoCtr_ctr2(tvb, offset, pinfo, tree, di, drep);
-               break;
+       return offset;
+}
 
-               case DRSUAPI_DC_INFO_CTR_3:
-                       offset = drsuapi_dissect_element_DsGetDCInfoCtr_ctr3(tvb, offset, pinfo, tree, di, drep);
-               break;
+static int
+drsuapi_dissect_element_DsAddEntryCtr2_problem(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntryCtr2_problem, 0);
 
-               case DRSUAPI_DC_CONNECTION_CTR_01:
-                       offset = drsuapi_dissect_element_DsGetDCInfoCtr_ctr01(tvb, offset, pinfo, tree, di, drep);
-               break;
-       }
-       proto_item_set_len(item, offset-old_offset);
+       return offset;
+}
 
+static int
+drsuapi_dissect_element_DsAddEntryCtr2_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntryCtr2_count, 0);
 
        return offset;
 }
 
-/* IDL: struct { */
-/* IDL:        [max_recursion(20000)] [unique(1)] drsuapi_DsReplicaObjectListItem *next_object; */
-/* IDL:        drsuapi_DsReplicaObject object; */
-/* IDL: } */
+static int
+drsuapi_dissect_element_DsAddEntryCtr2_objects(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsAddEntryCtr2_objects_, NDR_POINTER_UNIQUE, "Pointer to Objects (drsuapi_DsReplicaObjectIdentifier2)",hf_drsuapi_drsuapi_DsAddEntryCtr2_objects);
+
+       return offset;
+}
 
 static int
-drsuapi_dissect_element_DsReplicaObjectListItem_next_object(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsAddEntryCtr2_objects_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaObjectListItem_next_object_, NDR_POINTER_UNIQUE, "Pointer to Next Object (drsuapi_DsReplicaObjectListItem)",hf_drsuapi_drsuapi_DsReplicaObjectListItem_next_object);
+       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsAddEntryCtr2_objects__);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaObjectListItem_object(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsAddEntryCtr2_objects__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaObject(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaObjectListItem_object,0);
+       offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier2(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntryCtr2_objects,0);
 
        return offset;
 }
 
 int
-drsuapi_dissect_struct_DsReplicaObjectListItem(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_struct_DsAddEntryCtr2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
        proto_item *item = NULL;
        proto_tree *tree = NULL;
@@ -12621,169 +15320,121 @@ drsuapi_dissect_struct_DsReplicaObjectListItem(tvbuff_t *tvb _U_, int offset _U_
 
        if (parent_tree) {
                item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaObjectListItem);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsAddEntryCtr2);
        }
 
-       offset = drsuapi_dissect_element_DsReplicaObjectListItem_next_object(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsReplicaObjectListItem_object(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsAddEntryCtr2_id(tvb, offset, pinfo, tree, di, drep);
 
+       offset = drsuapi_dissect_element_DsAddEntryCtr2_dir_err(tvb, offset, pinfo, tree, di, drep);
 
-       proto_item_set_len(item, offset-old_offset);
+       offset = drsuapi_dissect_element_DsAddEntryCtr2_dsid(tvb, offset, pinfo, tree, di, drep);
 
+       offset = drsuapi_dissect_element_DsAddEntryCtr2_extended_err(tvb, offset, pinfo, tree, di, drep);
 
-       if (di->call_data->flags & DCERPC_IS_NDR64) {
-               ALIGN_TO_5_BYTES;
-       }
+       offset = drsuapi_dissect_element_DsAddEntryCtr2_extended_data(tvb, offset, pinfo, tree, di, drep);
 
-       return offset;
-}
+       offset = drsuapi_dissect_element_DsAddEntryCtr2_problem(tvb, offset, pinfo, tree, di, drep);
 
+       offset = drsuapi_dissect_element_DsAddEntryCtr2_count(tvb, offset, pinfo, tree, di, drep);
 
-/* IDL: enum { */
-/* IDL:        DRSUAPI_DIRERR_OK=0, */
-/* IDL:        DRSUAPI_DIRERR_ATTRIBUTE=1, */
-/* IDL:        DRSUAPI_DIRERR_NAME=2, */
-/* IDL:        DRSUAPI_DIRERR_REFERRAL=3, */
-/* IDL:        DRSUAPI_DIRERR_SECURITY=4, */
-/* IDL:        DRSUAPI_DIRERR_SERVICE=5, */
-/* IDL:        DRSUAPI_DIRERR_UPDATE=6, */
-/* IDL:        DRSUAPI_DIRERR_SYSTEM=7, */
-/* IDL: } */
+       offset = drsuapi_dissect_element_DsAddEntryCtr2_objects(tvb, offset, pinfo, tree, di, drep);
 
-int
-drsuapi_dissect_enum_DsAddEntry_DirErr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 *param _U_)
-{
-       guint32 parameter=0;
-       if (param) {
-               parameter = *param;
-       }
-       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &parameter);
-       if (param) {
-               *param = parameter;
-       }
-       return offset;
-}
 
+       proto_item_set_len(item, offset-old_offset);
 
-/* IDL: struct { */
-/* IDL:        drsuapi_DsReplicaObjectListItem first_object; */
-/* IDL: } */
 
-static int
-drsuapi_dissect_element_DsAddEntryRequest2_first_object(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = drsuapi_dissect_struct_DsReplicaObjectListItem(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntryRequest2_first_object,0);
+       if (di->call_data->flags & DCERPC_IS_NDR64) {
+               ALIGN_TO_5_BYTES;
+       }
 
        return offset;
 }
 
-int
-drsuapi_dissect_struct_DsAddEntryRequest2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
-{
-       proto_item *item = NULL;
-       proto_tree *tree = NULL;
-       int old_offset;
-
-       ALIGN_TO_5_BYTES;
-
-       old_offset = offset;
-
-       if (parent_tree) {
-               item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsAddEntryRequest2);
-       }
-
-       offset = drsuapi_dissect_element_DsAddEntryRequest2_first_object(tvb, offset, pinfo, tree, di, drep);
-
-
-       proto_item_set_len(item, offset-old_offset);
 
+/* IDL: struct { */
+/* IDL:        [unique(1)] drsuapi_DsReplicaObjectIdentifier *id; */
+/* IDL:        uint32 err_ver; */
+/* IDL:        [switch_is(err_ver)] [unique(1)] drsuapi_DsAddEntry_ErrData *err_data; */
+/* IDL:        [range(0,10000)] uint32 count; */
+/* IDL:        [size_is(count)] [unique(1)] drsuapi_DsReplicaObjectIdentifier2 *objects; */
+/* IDL: } */
 
-       if (di->call_data->flags & DCERPC_IS_NDR64) {
-               ALIGN_TO_5_BYTES;
-       }
+static int
+drsuapi_dissect_element_DsAddEntryCtr3_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsAddEntryCtr3_id_, NDR_POINTER_UNIQUE, "Pointer to Id (drsuapi_DsReplicaObjectIdentifier)",hf_drsuapi_drsuapi_DsAddEntryCtr3_id);
 
        return offset;
 }
 
+static int
+drsuapi_dissect_element_DsAddEntryCtr3_id_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntryCtr3_id,0);
 
-/* IDL: enum { */
-/* IDL:        DRSUAPI_SECBUFFER_EMPTY=0x00000000, */
-/* IDL:        DRSUAPI_SECBUFFER_DATA=0x00000001, */
-/* IDL:        DRSUAPI_SECBUFFER_TOKEN=0x00000002, */
-/* IDL:        DRSUAPI_SECBUFFER_PKG_PARAMS=0x00000003, */
-/* IDL:        DRSUAPI_SECBUFFER_MISSING=0x00000004, */
-/* IDL:        DRSUAPI_SECBUFFER_EXTRA=0x00000005, */
-/* IDL:        DRSUAPI_SECBUFFER_STREAM_TRAILER=0x00000006, */
-/* IDL:        DRSUAPI_SECBUFFER_STREAM_HEADER=0x00000007, */
-/* IDL:        DRSUAPI_SECBUFFER_READONLY=0x80000000, */
-/* IDL: } */
+       return offset;
+}
 
-int
-drsuapi_dissect_enum_SecBufferType(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 *param _U_)
+static int
+drsuapi_dissect_element_DsAddEntryCtr3_err_ver(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, guint32 *err_ver)
 {
-       guint32 parameter=0;
-       if (param) {
-               parameter = *param;
-       }
-       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &parameter);
-       if (param) {
-               *param = parameter;
-       }
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntryCtr3_err_ver, *err_ver);
+
        return offset;
 }
 
+static int
+drsuapi_dissect_element_DsAddEntryCtr3_err_data(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, guint32 *err_ver)
+{
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsAddEntryCtr3_err_data_, NDR_POINTER_UNIQUE, "Pointer to Err Data (drsuapi_DsAddEntry_ErrData)",hf_drsuapi_drsuapi_DsAddEntryCtr3_err_data);
 
-/* IDL: struct { */
-/* IDL:        [range(0,10000)] uint32 buf_size; */
-/* IDL:        drsuapi_SecBufferType buf_type; */
-/* IDL:        [size_is(buf_size)] [unique(1)] uint8 *buffer; */
-/* IDL: } */
+       return offset;
+}
 
 static int
-drsuapi_dissect_element_SecBuffer_buf_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsAddEntryCtr3_err_data_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, guint32 *err_ver)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_SecBuffer_buf_size, 0);
+       offset = drsuapi_dissect_DsAddEntry_ErrData(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntryCtr3_err_data, *err_ver);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_SecBuffer_buf_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsAddEntryCtr3_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_enum_SecBufferType(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_SecBuffer_buf_type, 0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntryCtr3_count, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_SecBuffer_buffer(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsAddEntryCtr3_objects(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_SecBuffer_buffer_, NDR_POINTER_UNIQUE, "Pointer to Buffer (uint8)",hf_drsuapi_drsuapi_SecBuffer_buffer);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsAddEntryCtr3_objects_, NDR_POINTER_UNIQUE, "Pointer to Objects (drsuapi_DsReplicaObjectIdentifier2)",hf_drsuapi_drsuapi_DsAddEntryCtr3_objects);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_SecBuffer_buffer_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsAddEntryCtr3_objects_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_SecBuffer_buffer__);
+       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsAddEntryCtr3_objects__);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_SecBuffer_buffer__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsAddEntryCtr3_objects__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_SecBuffer_buffer, 0);
+       offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier2(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntryCtr3_objects,0);
 
        return offset;
 }
 
 int
-drsuapi_dissect_struct_SecBuffer(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_struct_DsAddEntryCtr3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
+       guint32 err_ver = 0;
        proto_item *item = NULL;
        proto_tree *tree = NULL;
        int old_offset;
@@ -12794,14 +15445,18 @@ drsuapi_dissect_struct_SecBuffer(tvbuff_t *tvb _U_, int offset _U_, packet_info
 
        if (parent_tree) {
                item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_SecBuffer);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsAddEntryCtr3);
        }
 
-       offset = drsuapi_dissect_element_SecBuffer_buf_size(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsAddEntryCtr3_id(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_SecBuffer_buf_type(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsAddEntryCtr3_err_ver(tvb, offset, pinfo, tree, di, drep, &err_ver);
 
-       offset = drsuapi_dissect_element_SecBuffer_buffer(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsAddEntryCtr3_err_data(tvb, offset, pinfo, tree, di, drep, &err_ver);
+
+       offset = drsuapi_dissect_element_DsAddEntryCtr3_count(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsAddEntryCtr3_objects(tvb, offset, pinfo, tree, di, drep);
 
 
        proto_item_set_len(item, offset-old_offset);
@@ -12815,268 +15470,306 @@ drsuapi_dissect_struct_SecBuffer(tvbuff_t *tvb _U_, int offset _U_, packet_info
 }
 
 
-/* IDL: struct { */
-/* IDL:        [value(0)] uint32 version; */
-/* IDL:        [range(0,10000)] uint32 buff_count; */
-/* IDL:        [size_is(buff_count)] [unique(1)] drsuapi_SecBuffer *buffers; */
+/* IDL: [switch_type(uint32)] union { */
+/* IDL: [case(2)] [case(2)] drsuapi_DsAddEntryCtr2 ctr2; */
+/* IDL: [case(3)] [case(3)] drsuapi_DsAddEntryCtr3 ctr3; */
 /* IDL: } */
 
 static int
-drsuapi_dissect_element_SecBufferDesc_version(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsAddEntryCtr_ctr2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_SecBufferDesc_version, 0);
+       offset = drsuapi_dissect_struct_DsAddEntryCtr2(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntryCtr_ctr2,0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_SecBufferDesc_buff_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsAddEntryCtr_ctr3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_SecBufferDesc_buff_count, 0);
+       offset = drsuapi_dissect_struct_DsAddEntryCtr3(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntryCtr_ctr3,0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_SecBufferDesc_buffers(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_DsAddEntryCtr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_SecBufferDesc_buffers_, NDR_POINTER_UNIQUE, "Pointer to Buffers (drsuapi_SecBuffer)",hf_drsuapi_drsuapi_SecBufferDesc_buffers);
+       proto_item *item = NULL;
+       proto_tree *tree = NULL;
+       int old_offset;
+       guint32 level;
+
+       old_offset = offset;
+       if (parent_tree) {
+               tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_DsAddEntryCtr, &item, "drsuapi_DsAddEntryCtr");
+       }
+
+       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level);
+       ALIGN_TO_5_BYTES;
+
+       switch(level) {
+               case 2:
+                       offset = drsuapi_dissect_element_DsAddEntryCtr_ctr2(tvb, offset, pinfo, tree, di, drep);
+               break;
+
+               case 3:
+                       offset = drsuapi_dissect_element_DsAddEntryCtr_ctr3(tvb, offset, pinfo, tree, di, drep);
+               break;
+       }
+       proto_item_set_len(item, offset-old_offset);
+
+
+       return offset;
+}
+
+/* IDL: bitmap { */
+/* IDL:        DRSUAPI_DS_EXECUTE_KCC_ASYNCHRONOUS_OPERATION =  0x00000001 , */
+/* IDL:        DRSUAPI_DS_EXECUTE_KCC_DAMPED =  0x00000002 , */
+/* IDL: } */
+
+int
+drsuapi_dissect_bitmap_DsExecuteKCCFlags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+{
+       proto_item *item;
+       static int * const drsuapi_drsuapi_DsExecuteKCCFlags_fields[] = {
+               &hf_drsuapi_drsuapi_DsExecuteKCCFlags_DRSUAPI_DS_EXECUTE_KCC_ASYNCHRONOUS_OPERATION,
+               &hf_drsuapi_drsuapi_DsExecuteKCCFlags_DRSUAPI_DS_EXECUTE_KCC_DAMPED,
+               NULL
+       };
+       guint32 flags;
+       ALIGN_TO_4_BYTES;
+
+       item = proto_tree_add_bitmask_with_flags(parent_tree, tvb, offset, hf_index,
+                               ett_drsuapi_drsuapi_DsExecuteKCCFlags, drsuapi_drsuapi_DsExecuteKCCFlags_fields, DREP_ENC_INTEGER(drep), BMT_NO_FALSE);
+
+       offset = dissect_ndr_uint32(tvb, offset, pinfo, parent_tree, di, drep, -1, &flags);
+
+       if (!flags)
+               proto_item_append_text(item, ": (No values set)");
+
+       if (flags & (~0x00000003)) {
+               flags &= (~0x00000003);
+               proto_item_append_text(item, "Unknown bitmap value 0x%x", flags);
+       }
 
        return offset;
 }
 
+
+/* IDL: struct { */
+/* IDL:        uint32 taskID; */
+/* IDL:        drsuapi_DsExecuteKCCFlags flags; */
+/* IDL: } */
+
 static int
-drsuapi_dissect_element_SecBufferDesc_buffers_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsExecuteKCC1_taskID(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_SecBufferDesc_buffers__);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsExecuteKCC1_taskID, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_SecBufferDesc_buffers__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsExecuteKCC1_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_SecBuffer(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_SecBufferDesc_buffers,0);
+       offset = drsuapi_dissect_bitmap_DsExecuteKCCFlags(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsExecuteKCC1_flags, 0);
 
        return offset;
 }
 
 int
-drsuapi_dissect_struct_SecBufferDesc(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_struct_DsExecuteKCC1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
        proto_item *item = NULL;
        proto_tree *tree = NULL;
        int old_offset;
 
-       ALIGN_TO_5_BYTES;
+       ALIGN_TO_4_BYTES;
 
        old_offset = offset;
 
        if (parent_tree) {
                item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_SecBufferDesc);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsExecuteKCC1);
        }
 
-       offset = drsuapi_dissect_element_SecBufferDesc_version(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_SecBufferDesc_buff_count(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsExecuteKCC1_taskID(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_SecBufferDesc_buffers(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsExecuteKCC1_flags(tvb, offset, pinfo, tree, di, drep);
 
 
        proto_item_set_len(item, offset-old_offset);
 
 
        if (di->call_data->flags & DCERPC_IS_NDR64) {
-               ALIGN_TO_5_BYTES;
+               ALIGN_TO_4_BYTES;
        }
 
        return offset;
 }
 
 
-/* IDL: struct { */
-/* IDL:        drsuapi_DsReplicaObjectListItem first_object; */
-/* IDL:        [unique(1)] drsuapi_SecBufferDesc *client_creds; */
+/* IDL: [switch_type(uint32)] union { */
+/* IDL: [case(1)] [case(1)] drsuapi_DsExecuteKCC1 ctr1; */
 /* IDL: } */
 
 static int
-drsuapi_dissect_element_DsAddEntryRequest3_first_object(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = drsuapi_dissect_struct_DsReplicaObjectListItem(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntryRequest3_first_object,0);
-
-       return offset;
-}
-
-static int
-drsuapi_dissect_element_DsAddEntryRequest3_client_creds(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsExecuteKCCRequest_ctr1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsAddEntryRequest3_client_creds_, NDR_POINTER_UNIQUE, "Pointer to Client Creds (drsuapi_SecBufferDesc)",hf_drsuapi_drsuapi_DsAddEntryRequest3_client_creds);
+       offset = drsuapi_dissect_struct_DsExecuteKCC1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsExecuteKCCRequest_ctr1,0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsAddEntryRequest3_client_creds_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = drsuapi_dissect_struct_SecBufferDesc(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntryRequest3_client_creds,0);
-
-       return offset;
-}
-
-int
-drsuapi_dissect_struct_DsAddEntryRequest3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_DsExecuteKCCRequest(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
        proto_item *item = NULL;
        proto_tree *tree = NULL;
        int old_offset;
-
-       ALIGN_TO_5_BYTES;
+       guint32 level;
 
        old_offset = offset;
-
        if (parent_tree) {
-               item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsAddEntryRequest3);
+               tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_DsExecuteKCCRequest, &item, "drsuapi_DsExecuteKCCRequest");
        }
 
-       offset = drsuapi_dissect_element_DsAddEntryRequest3_first_object(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsAddEntryRequest3_client_creds(tvb, offset, pinfo, tree, di, drep);
-
+       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level);
+       ALIGN_TO_4_BYTES;
 
+       switch(level) {
+               case 1:
+                       offset = drsuapi_dissect_element_DsExecuteKCCRequest_ctr1(tvb, offset, pinfo, tree, di, drep);
+               break;
+       }
        proto_item_set_len(item, offset-old_offset);
 
 
-       if (di->call_data->flags & DCERPC_IS_NDR64) {
-               ALIGN_TO_5_BYTES;
-       }
-
        return offset;
 }
 
-
-/* IDL: [switch_type(uint32)] union { */
-/* IDL: [case(2)] [case(2)] drsuapi_DsAddEntryRequest2 req2; */
-/* IDL: [case(3)] [case(3)] drsuapi_DsAddEntryRequest3 req3; */
+/* IDL: enum { */
+/* IDL:        DRSUAPI_DS_REPLICA_GET_INFO=1, */
+/* IDL:        DRSUAPI_DS_REPLICA_GET_INFO2=2, */
 /* IDL: } */
 
-static int
-drsuapi_dissect_element_DsAddEntryRequest_req2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+int
+drsuapi_dissect_enum_DsReplicaGetInfoLevel(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 *param _U_)
 {
-       offset = drsuapi_dissect_struct_DsAddEntryRequest2(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntryRequest_req2,0);
-
+       guint32 parameter=0;
+       if (param) {
+               parameter = *param;
+       }
+       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &parameter);
+       if (param) {
+               *param = parameter;
+       }
        return offset;
 }
 
-static int
-drsuapi_dissect_element_DsAddEntryRequest_req3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = drsuapi_dissect_struct_DsAddEntryRequest3(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntryRequest_req3,0);
 
-       return offset;
-}
+/* IDL: enum { */
+/* IDL:        DRSUAPI_DS_REPLICA_INFO_NEIGHBORS=0, */
+/* IDL:        DRSUAPI_DS_REPLICA_INFO_CURSORS=1, */
+/* IDL:        DRSUAPI_DS_REPLICA_INFO_OBJ_METADATA=2, */
+/* IDL:        DRSUAPI_DS_REPLICA_INFO_KCC_DSA_CONNECT_FAILURES=3, */
+/* IDL:        DRSUAPI_DS_REPLICA_INFO_KCC_DSA_LINK_FAILURES=4, */
+/* IDL:        DRSUAPI_DS_REPLICA_INFO_PENDING_OPS=5, */
+/* IDL:        DRSUAPI_DS_REPLICA_INFO_ATTRIBUTE_VALUE_METADATA=6, */
+/* IDL:        DRSUAPI_DS_REPLICA_INFO_CURSORS2=7, */
+/* IDL:        DRSUAPI_DS_REPLICA_INFO_CURSORS3=8, */
+/* IDL:        DRSUAPI_DS_REPLICA_INFO_OBJ_METADATA2=9, */
+/* IDL:        DRSUAPI_DS_REPLICA_INFO_ATTRIBUTE_VALUE_METADATA2=10, */
+/* IDL:        DRSUAPI_DS_REPLICA_INFO_REPSTO=-2, */
+/* IDL:        DRSUAPI_DS_REPLICA_INFO_CLIENT_CONTEXTS=-4, */
+/* IDL:        DRSUAPI_DS_REPLICA_INFO_UPTODATE_VECTOR_V1=-5, */
+/* IDL:        DRSUAPI_DS_REPLICA_INFO_SERVER_OUTGOING_CALLS=-6, */
+/* IDL: } */
 
-static int
-drsuapi_dissect_DsAddEntryRequest(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+int
+drsuapi_dissect_enum_DsReplicaInfoType(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 *param _U_)
 {
-       proto_item *item = NULL;
-       proto_tree *tree = NULL;
-       int old_offset;
-       guint32 level;
-
-       old_offset = offset;
-       if (parent_tree) {
-               tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_DsAddEntryRequest, &item, "drsuapi_DsAddEntryRequest");
+       guint32 parameter=0;
+       if (param) {
+               parameter = *param;
        }
-
-       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level);
-       ALIGN_TO_5_BYTES;
-
-       switch(level) {
-               case 2:
-                       offset = drsuapi_dissect_element_DsAddEntryRequest_req2(tvb, offset, pinfo, tree, di, drep);
-               break;
-
-               case 3:
-                       offset = drsuapi_dissect_element_DsAddEntryRequest_req3(tvb, offset, pinfo, tree, di, drep);
-               break;
+       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &parameter);
+       if (param) {
+               *param = parameter;
        }
-       proto_item_set_len(item, offset-old_offset);
-
-
        return offset;
 }
 
+
 /* IDL: struct { */
-/* IDL:        uint32 dsid; */
-/* IDL:        WERROR extended_err; */
-/* IDL:        uint32 extended_data; */
-/* IDL:        uint16 problem; */
+/* IDL:        drsuapi_DsReplicaInfoType info_type; */
+/* IDL:        [charset(UTF16)] [unique(1)] uint16 *object_dn; */
+/* IDL:        GUID source_dsa_guid; */
 /* IDL: } */
 
 static int
-drsuapi_dissect_element_DsAddEntryErrorInfoX_dsid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaGetInfoRequest1_info_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntryErrorInfoX_dsid, 0);
+       offset = drsuapi_dissect_enum_DsReplicaInfoType(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaGetInfoRequest1_info_type, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsAddEntryErrorInfoX_extended_err(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaGetInfoRequest1_object_dn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntryErrorInfoX_extended_err, 0);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaGetInfoRequest1_object_dn_, NDR_POINTER_UNIQUE, "Pointer to Object Dn (uint16)",hf_drsuapi_drsuapi_DsReplicaGetInfoRequest1_object_dn);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsAddEntryErrorInfoX_extended_data(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaGetInfoRequest1_object_dn_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntryErrorInfoX_extended_data, 0);
+       char *data;
+
+       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsReplicaGetInfoRequest1_object_dn, FALSE, &data);
+       proto_item_append_text(tree, ": %s", data);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsAddEntryErrorInfoX_problem(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaGetInfoRequest1_source_dsa_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntryErrorInfoX_problem, 0);
+       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaGetInfoRequest1_source_dsa_guid, NULL);
 
        return offset;
 }
 
 int
-drsuapi_dissect_struct_DsAddEntryErrorInfoX(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_struct_DsReplicaGetInfoRequest1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
        proto_item *item = NULL;
        proto_tree *tree = NULL;
        int old_offset;
 
-       ALIGN_TO_4_BYTES;
+       ALIGN_TO_5_BYTES;
 
        old_offset = offset;
 
        if (parent_tree) {
                item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsAddEntryErrorInfoX);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaGetInfoRequest1);
        }
 
-       offset = drsuapi_dissect_element_DsAddEntryErrorInfoX_dsid(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsAddEntryErrorInfoX_extended_err(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaGetInfoRequest1_info_type(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsAddEntryErrorInfoX_extended_data(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaGetInfoRequest1_object_dn(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsAddEntryErrorInfoX_problem(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaGetInfoRequest1_source_dsa_guid(tvb, offset, pinfo, tree, di, drep);
 
 
        proto_item_set_len(item, offset-old_offset);
 
 
        if (di->call_data->flags & DCERPC_IS_NDR64) {
-               ALIGN_TO_4_BYTES;
+               ALIGN_TO_5_BYTES;
        }
 
        return offset;
@@ -13084,73 +15777,106 @@ drsuapi_dissect_struct_DsAddEntryErrorInfoX(tvbuff_t *tvb _U_, int offset _U_, p
 
 
 /* IDL: struct { */
-/* IDL:        uint32 dsid; */
-/* IDL:        WERROR extended_err; */
-/* IDL:        uint32 extended_data; */
-/* IDL:        uint16 problem; */
-/* IDL:        drsuapi_DsAttributeId attid; */
-/* IDL:        uint32 is_val_returned; */
-/* IDL:        drsuapi_DsAttributeValue attr_val; */
+/* IDL:        drsuapi_DsReplicaInfoType info_type; */
+/* IDL:        [charset(UTF16)] [unique(1)] uint16 *object_dn; */
+/* IDL:        GUID source_dsa_guid; */
+/* IDL:        uint32 flags; */
+/* IDL:        [charset(UTF16)] [unique(1)] uint16 *attribute_name; */
+/* IDL:        [charset(UTF16)] [unique(1)] uint16 *value_dn_str; */
+/* IDL:        uint32 enumeration_context; */
 /* IDL: } */
 
 static int
-drsuapi_dissect_element_DsAddEntry_AttrErr_V1_dsid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaGetInfoRequest2_info_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntry_AttrErr_V1_dsid, 0);
+       offset = drsuapi_dissect_enum_DsReplicaInfoType(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaGetInfoRequest2_info_type, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsAddEntry_AttrErr_V1_extended_err(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaGetInfoRequest2_object_dn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntry_AttrErr_V1_extended_err, 0);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaGetInfoRequest2_object_dn_, NDR_POINTER_UNIQUE, "Pointer to Object Dn (uint16)",hf_drsuapi_drsuapi_DsReplicaGetInfoRequest2_object_dn);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsAddEntry_AttrErr_V1_extended_data(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaGetInfoRequest2_object_dn_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntry_AttrErr_V1_extended_data, 0);
+       char *data;
+
+       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsReplicaGetInfoRequest2_object_dn, FALSE, &data);
+       proto_item_append_text(tree, ": %s", data);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsAddEntry_AttrErr_V1_problem(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaGetInfoRequest2_source_dsa_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntry_AttrErr_V1_problem, 0);
+       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaGetInfoRequest2_source_dsa_guid, NULL);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsAddEntry_AttrErr_V1_attid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaGetInfoRequest2_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_enum_DsAttributeId(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntry_AttrErr_V1_attid, 0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaGetInfoRequest2_flags, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsAddEntry_AttrErr_V1_is_val_returned(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaGetInfoRequest2_attribute_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntry_AttrErr_V1_is_val_returned, 0);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaGetInfoRequest2_attribute_name_, NDR_POINTER_UNIQUE, "Pointer to Attribute Name (uint16)",hf_drsuapi_drsuapi_DsReplicaGetInfoRequest2_attribute_name);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsAddEntry_AttrErr_V1_attr_val(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaGetInfoRequest2_attribute_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsAttributeValue(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntry_AttrErr_V1_attr_val,0);
+       char *data;
+
+       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsReplicaGetInfoRequest2_attribute_name, FALSE, &data);
+       proto_item_append_text(tree, ": %s", data);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsReplicaGetInfoRequest2_value_dn_str(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaGetInfoRequest2_value_dn_str_, NDR_POINTER_UNIQUE, "Pointer to Value Dn Str (uint16)",hf_drsuapi_drsuapi_DsReplicaGetInfoRequest2_value_dn_str);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsReplicaGetInfoRequest2_value_dn_str_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       char *data;
+
+       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsReplicaGetInfoRequest2_value_dn_str, FALSE, &data);
+       proto_item_append_text(tree, ": %s", data);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsReplicaGetInfoRequest2_enumeration_context(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaGetInfoRequest2_enumeration_context, 0);
 
        return offset;
 }
 
 int
-drsuapi_dissect_struct_DsAddEntry_AttrErr_V1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_struct_DsReplicaGetInfoRequest2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
        proto_item *item = NULL;
        proto_tree *tree = NULL;
@@ -13162,22 +15888,22 @@ drsuapi_dissect_struct_DsAddEntry_AttrErr_V1(tvbuff_t *tvb _U_, int offset _U_,
 
        if (parent_tree) {
                item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsAddEntry_AttrErr_V1);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaGetInfoRequest2);
        }
 
-       offset = drsuapi_dissect_element_DsAddEntry_AttrErr_V1_dsid(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaGetInfoRequest2_info_type(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsAddEntry_AttrErr_V1_extended_err(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaGetInfoRequest2_object_dn(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsAddEntry_AttrErr_V1_extended_data(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaGetInfoRequest2_source_dsa_guid(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsAddEntry_AttrErr_V1_problem(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaGetInfoRequest2_flags(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsAddEntry_AttrErr_V1_attid(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaGetInfoRequest2_attribute_name(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsAddEntry_AttrErr_V1_is_val_returned(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaGetInfoRequest2_value_dn_str(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsAddEntry_AttrErr_V1_attr_val(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaGetInfoRequest2_enumeration_context(tvb, offset, pinfo, tree, di, drep);
 
 
        proto_item_set_len(item, offset-old_offset);
@@ -13191,387 +15917,375 @@ drsuapi_dissect_struct_DsAddEntry_AttrErr_V1(tvbuff_t *tvb _U_, int offset _U_,
 }
 
 
-/* IDL: struct { */
-/* IDL:        [max_recursion(20000)] [unique(1)] drsuapi_DsAddEntry_AttrErrListItem_V1 *next; */
-/* IDL:        drsuapi_DsAddEntry_AttrErr_V1 err_data; */
+/* IDL: [switch_type(drsuapi_DsReplicaGetInfoLevel)] union { */
+/* IDL: [case(DRSUAPI_DS_REPLICA_GET_INFO)] [case(DRSUAPI_DS_REPLICA_GET_INFO)] drsuapi_DsReplicaGetInfoRequest1 req1; */
+/* IDL: [case(DRSUAPI_DS_REPLICA_GET_INFO2)] [case(DRSUAPI_DS_REPLICA_GET_INFO2)] drsuapi_DsReplicaGetInfoRequest2 req2; */
 /* IDL: } */
 
 static int
-drsuapi_dissect_element_DsAddEntry_AttrErrListItem_V1_next(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaGetInfoRequest_req1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsAddEntry_AttrErrListItem_V1_next_, NDR_POINTER_UNIQUE, "Pointer to Next (drsuapi_DsAddEntry_AttrErrListItem_V1)",hf_drsuapi_drsuapi_DsAddEntry_AttrErrListItem_V1_next);
+       offset = drsuapi_dissect_struct_DsReplicaGetInfoRequest1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaGetInfoRequest_req1,0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsAddEntry_AttrErrListItem_V1_err_data(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaGetInfoRequest_req2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsAddEntry_AttrErr_V1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntry_AttrErrListItem_V1_err_data,0);
+       offset = drsuapi_dissect_struct_DsReplicaGetInfoRequest2(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaGetInfoRequest_req2,0);
 
        return offset;
 }
 
-int
-drsuapi_dissect_struct_DsAddEntry_AttrErrListItem_V1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+static int
+drsuapi_dissect_DsReplicaGetInfoRequest(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
        proto_item *item = NULL;
        proto_tree *tree = NULL;
        int old_offset;
-
-       ALIGN_TO_5_BYTES;
+       guint32 level;
 
        old_offset = offset;
-
        if (parent_tree) {
-               item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsAddEntry_AttrErrListItem_V1);
+               tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_DsReplicaGetInfoRequest, &item, "drsuapi_DsReplicaGetInfoRequest");
        }
 
-       offset = drsuapi_dissect_element_DsAddEntry_AttrErrListItem_V1_next(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsAddEntry_AttrErrListItem_V1_err_data(tvb, offset, pinfo, tree, di, drep);
+       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level);
+       ALIGN_TO_5_BYTES;
 
+       switch(level) {
+               case DRSUAPI_DS_REPLICA_GET_INFO:
+                       offset = drsuapi_dissect_element_DsReplicaGetInfoRequest_req1(tvb, offset, pinfo, tree, di, drep);
+               break;
 
+               case DRSUAPI_DS_REPLICA_GET_INFO2:
+                       offset = drsuapi_dissect_element_DsReplicaGetInfoRequest_req2(tvb, offset, pinfo, tree, di, drep);
+               break;
+       }
        proto_item_set_len(item, offset-old_offset);
 
 
-       if (di->call_data->flags & DCERPC_IS_NDR64) {
-               ALIGN_TO_5_BYTES;
-       }
-
        return offset;
 }
 
-
 /* IDL: struct { */
-/* IDL:        [unique(1)] drsuapi_DsReplicaObjectIdentifier *id; */
-/* IDL:        uint32 count; */
-/* IDL:        drsuapi_DsAddEntry_AttrErrListItem_V1 first; */
+/* IDL:        [charset(UTF16)] [unique(1)] uint16 *naming_context_dn; */
+/* IDL:        [charset(UTF16)] [unique(1)] uint16 *source_dsa_obj_dn; */
+/* IDL:        [charset(UTF16)] [unique(1)] uint16 *source_dsa_address; */
+/* IDL:        [charset(UTF16)] [unique(1)] uint16 *transport_obj_dn; */
+/* IDL:        drsuapi_DrsOptions replica_flags; */
+/* IDL:        uint32 reserved; */
+/* IDL:        GUID naming_context_obj_guid; */
+/* IDL:        GUID source_dsa_obj_guid; */
+/* IDL:        GUID source_dsa_invocation_id; */
+/* IDL:        GUID transport_obj_guid; */
+/* IDL:        hyper tmp_highest_usn; */
+/* IDL:        hyper highest_usn; */
+/* IDL:        NTTIME last_success; */
+/* IDL:        NTTIME last_attempt; */
+/* IDL:        WERROR result_last_attempt; */
+/* IDL:        uint32 consecutive_sync_failures; */
 /* IDL: } */
 
 static int
-drsuapi_dissect_element_DsAddEntryErrorInfo_Attr_V1_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaNeighbour_naming_context_dn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsAddEntryErrorInfo_Attr_V1_id_, NDR_POINTER_UNIQUE, "Pointer to Id (drsuapi_DsReplicaObjectIdentifier)",hf_drsuapi_drsuapi_DsAddEntryErrorInfo_Attr_V1_id);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaNeighbour_naming_context_dn_, NDR_POINTER_UNIQUE, "Pointer to Naming Context Dn (uint16)",hf_drsuapi_drsuapi_DsReplicaNeighbour_naming_context_dn);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsAddEntryErrorInfo_Attr_V1_id_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaNeighbour_naming_context_dn_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntryErrorInfo_Attr_V1_id,0);
+       char *data;
+
+       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsReplicaNeighbour_naming_context_dn, FALSE, &data);
+       proto_item_append_text(tree, ": %s", data);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsAddEntryErrorInfo_Attr_V1_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaNeighbour_source_dsa_obj_dn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntryErrorInfo_Attr_V1_count, 0);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaNeighbour_source_dsa_obj_dn_, NDR_POINTER_UNIQUE, "Pointer to Source Dsa Obj Dn (uint16)",hf_drsuapi_drsuapi_DsReplicaNeighbour_source_dsa_obj_dn);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsAddEntryErrorInfo_Attr_V1_first(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaNeighbour_source_dsa_obj_dn_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsAddEntry_AttrErrListItem_V1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntryErrorInfo_Attr_V1_first,0);
+       char *data;
+
+       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsReplicaNeighbour_source_dsa_obj_dn, FALSE, &data);
+       proto_item_append_text(tree, ": %s", data);
 
        return offset;
 }
 
-int
-drsuapi_dissect_struct_DsAddEntryErrorInfo_Attr_V1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+static int
+drsuapi_dissect_element_DsReplicaNeighbour_source_dsa_address(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       proto_item *item = NULL;
-       proto_tree *tree = NULL;
-       int old_offset;
-
-       ALIGN_TO_5_BYTES;
-
-       old_offset = offset;
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaNeighbour_source_dsa_address_, NDR_POINTER_UNIQUE, "Pointer to Source Dsa Address (uint16)",hf_drsuapi_drsuapi_DsReplicaNeighbour_source_dsa_address);
 
-       if (parent_tree) {
-               item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsAddEntryErrorInfo_Attr_V1);
-       }
+       return offset;
+}
 
-       offset = drsuapi_dissect_element_DsAddEntryErrorInfo_Attr_V1_id(tvb, offset, pinfo, tree, di, drep);
+static int
+drsuapi_dissect_element_DsReplicaNeighbour_source_dsa_address_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       char *data;
 
-       offset = drsuapi_dissect_element_DsAddEntryErrorInfo_Attr_V1_count(tvb, offset, pinfo, tree, di, drep);
+       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsReplicaNeighbour_source_dsa_address, FALSE, &data);
+       proto_item_append_text(tree, ": %s", data);
 
-       offset = drsuapi_dissect_element_DsAddEntryErrorInfo_Attr_V1_first(tvb, offset, pinfo, tree, di, drep);
+       return offset;
+}
 
+static int
+drsuapi_dissect_element_DsReplicaNeighbour_transport_obj_dn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaNeighbour_transport_obj_dn_, NDR_POINTER_UNIQUE, "Pointer to Transport Obj Dn (uint16)",hf_drsuapi_drsuapi_DsReplicaNeighbour_transport_obj_dn);
 
-       proto_item_set_len(item, offset-old_offset);
+       return offset;
+}
 
+static int
+drsuapi_dissect_element_DsReplicaNeighbour_transport_obj_dn_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       char *data;
 
-       if (di->call_data->flags & DCERPC_IS_NDR64) {
-               ALIGN_TO_5_BYTES;
-       }
+       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsReplicaNeighbour_transport_obj_dn, FALSE, &data);
+       proto_item_append_text(tree, ": %s", data);
 
        return offset;
 }
 
-
-/* IDL: struct { */
-/* IDL:        uint32 dsid; */
-/* IDL:        WERROR extended_err; */
-/* IDL:        uint32 extended_data; */
-/* IDL:        uint16 problem; */
-/* IDL:        [unique(1)] drsuapi_DsReplicaObjectIdentifier *id_matched; */
-/* IDL: } */
-
 static int
-drsuapi_dissect_element_DsAddEntryErrorInfo_Name_V1_dsid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaNeighbour_replica_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntryErrorInfo_Name_V1_dsid, 0);
+       offset = drsuapi_dissect_bitmap_DrsOptions(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaNeighbour_replica_flags, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsAddEntryErrorInfo_Name_V1_extended_err(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaNeighbour_reserved(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntryErrorInfo_Name_V1_extended_err, 0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaNeighbour_reserved, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsAddEntryErrorInfo_Name_V1_extended_data(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaNeighbour_naming_context_obj_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntryErrorInfo_Name_V1_extended_data, 0);
+       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaNeighbour_naming_context_obj_guid, NULL);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsAddEntryErrorInfo_Name_V1_problem(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaNeighbour_source_dsa_obj_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntryErrorInfo_Name_V1_problem, 0);
+       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaNeighbour_source_dsa_obj_guid, NULL);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsAddEntryErrorInfo_Name_V1_id_matched(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaNeighbour_source_dsa_invocation_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsAddEntryErrorInfo_Name_V1_id_matched_, NDR_POINTER_UNIQUE, "Pointer to Id Matched (drsuapi_DsReplicaObjectIdentifier)",hf_drsuapi_drsuapi_DsAddEntryErrorInfo_Name_V1_id_matched);
+       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaNeighbour_source_dsa_invocation_id, NULL);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsAddEntryErrorInfo_Name_V1_id_matched_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaNeighbour_transport_obj_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntryErrorInfo_Name_V1_id_matched,0);
+       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaNeighbour_transport_obj_guid, NULL);
 
        return offset;
 }
 
-int
-drsuapi_dissect_struct_DsAddEntryErrorInfo_Name_V1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+static int
+drsuapi_dissect_element_DsReplicaNeighbour_tmp_highest_usn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       proto_item *item = NULL;
-       proto_tree *tree = NULL;
-       int old_offset;
-
-       ALIGN_TO_5_BYTES;
-
-       old_offset = offset;
-
-       if (parent_tree) {
-               item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsAddEntryErrorInfo_Name_V1);
-       }
-
-       offset = drsuapi_dissect_element_DsAddEntryErrorInfo_Name_V1_dsid(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsAddEntryErrorInfo_Name_V1_extended_err(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsAddEntryErrorInfo_Name_V1_extended_data(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsAddEntryErrorInfo_Name_V1_problem(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsAddEntryErrorInfo_Name_V1_id_matched(tvb, offset, pinfo, tree, di, drep);
-
-
-       proto_item_set_len(item, offset-old_offset);
+       offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaNeighbour_tmp_highest_usn, NULL);
 
+       return offset;
+}
 
-       if (di->call_data->flags & DCERPC_IS_NDR64) {
-               ALIGN_TO_5_BYTES;
-       }
+static int
+drsuapi_dissect_element_DsReplicaNeighbour_highest_usn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaNeighbour_highest_usn, NULL);
 
        return offset;
 }
 
+static int
+drsuapi_dissect_element_DsReplicaNeighbour_last_success(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaNeighbour_last_success);
 
-/* IDL: struct { */
-/* IDL:        [value(83)] uint8 name_res; */
-/* IDL:        [value(0)] uint8 unused_pad; */
-/* IDL:        [value(0)] uint16 next_rdn; */
-/* IDL: } */
+       return offset;
+}
 
 static int
-drsuapi_dissect_element_NameResOp_V1_name_res(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaNeighbour_last_attempt(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_NameResOp_V1_name_res, 0);
+       offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaNeighbour_last_attempt);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_NameResOp_V1_unused_pad(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaNeighbour_result_last_attempt(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_NameResOp_V1_unused_pad, 0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaNeighbour_result_last_attempt, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_NameResOp_V1_next_rdn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaNeighbour_consecutive_sync_failures(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_NameResOp_V1_next_rdn, 0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaNeighbour_consecutive_sync_failures, 0);
 
        return offset;
 }
 
 int
-drsuapi_dissect_struct_NameResOp_V1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_struct_DsReplicaNeighbour(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
        proto_item *item = NULL;
        proto_tree *tree = NULL;
        int old_offset;
 
-       ALIGN_TO_2_BYTES;
+       ALIGN_TO_8_BYTES;
 
        old_offset = offset;
 
        if (parent_tree) {
                item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_NameResOp_V1);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaNeighbour);
        }
 
-       offset = drsuapi_dissect_element_NameResOp_V1_name_res(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaNeighbour_naming_context_dn(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_NameResOp_V1_unused_pad(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaNeighbour_source_dsa_obj_dn(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_NameResOp_V1_next_rdn(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaNeighbour_source_dsa_address(tvb, offset, pinfo, tree, di, drep);
 
+       offset = drsuapi_dissect_element_DsReplicaNeighbour_transport_obj_dn(tvb, offset, pinfo, tree, di, drep);
 
-       proto_item_set_len(item, offset-old_offset);
+       offset = drsuapi_dissect_element_DsReplicaNeighbour_replica_flags(tvb, offset, pinfo, tree, di, drep);
 
+       offset = drsuapi_dissect_element_DsReplicaNeighbour_reserved(tvb, offset, pinfo, tree, di, drep);
 
-       if (di->call_data->flags & DCERPC_IS_NDR64) {
-               ALIGN_TO_2_BYTES;
-       }
+       offset = drsuapi_dissect_element_DsReplicaNeighbour_naming_context_obj_guid(tvb, offset, pinfo, tree, di, drep);
 
-       return offset;
-}
+       offset = drsuapi_dissect_element_DsReplicaNeighbour_source_dsa_obj_guid(tvb, offset, pinfo, tree, di, drep);
 
+       offset = drsuapi_dissect_element_DsReplicaNeighbour_source_dsa_invocation_id(tvb, offset, pinfo, tree, di, drep);
 
-/* IDL: enum { */
-/* IDL:        DRSUAPI_CH_REFTYPE_SUPERIOR=0x0000, */
-/* IDL:        DRSUAPI_CH_REFTYPE_SUBORDINATE=0x0001, */
-/* IDL:        DRSUAPI_CH_REFTYPE_NSSR=0x0002, */
-/* IDL:        DRSUAPI_CH_REFTYPE_CROSS=0x0003, */
-/* IDL: } */
+       offset = drsuapi_dissect_element_DsReplicaNeighbour_transport_obj_guid(tvb, offset, pinfo, tree, di, drep);
 
-int
-drsuapi_dissect_enum_DsAddEntry_RefType(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint16 *param _U_)
-{
-       guint16 parameter=0;
-       if (param) {
-               parameter = *param;
-       }
-       offset = dissect_ndr_uint16(tvb, offset, pinfo, tree, di, drep, hf_index, &parameter);
-       if (param) {
-               *param = parameter;
-       }
-       return offset;
-}
+       offset = drsuapi_dissect_element_DsReplicaNeighbour_tmp_highest_usn(tvb, offset, pinfo, tree, di, drep);
 
+       offset = drsuapi_dissect_element_DsReplicaNeighbour_highest_usn(tvb, offset, pinfo, tree, di, drep);
 
-/* IDL: enum { */
-/* IDL:        DRSUAPI_SE_CHOICE_BASE_ONLY=0x00, */
-/* IDL:        DRSUAPI_SE_CHOICE_IMMED_CHLDRN=0x01, */
-/* IDL:        DRSUAPI_SE_CHOICE_WHOLE_SUBTREE=0x02, */
-/* IDL: } */
+       offset = drsuapi_dissect_element_DsReplicaNeighbour_last_success(tvb, offset, pinfo, tree, di, drep);
 
-int
-drsuapi_dissect_enum_DsAddEntry_ChoiceType(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint8 *param _U_)
-{
-       guint8 parameter=0;
-       if (param) {
-               parameter = *param;
-       }
-       offset = dissect_ndr_uint8(tvb, offset, pinfo, tree, di, drep, hf_index, &parameter);
-       if (param) {
-               *param = parameter;
+       offset = drsuapi_dissect_element_DsReplicaNeighbour_last_attempt(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsReplicaNeighbour_result_last_attempt(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsReplicaNeighbour_consecutive_sync_failures(tvb, offset, pinfo, tree, di, drep);
+
+
+       proto_item_set_len(item, offset-old_offset);
+
+
+       if (di->call_data->flags & DCERPC_IS_NDR64) {
+               ALIGN_TO_8_BYTES;
        }
+
        return offset;
 }
 
 
 /* IDL: struct { */
-/* IDL:        [max_recursion(1024)] [unique(1)] drsuapi_DsaAddressListItem_V1 *next; */
-/* IDL:        [unique(1)] lsa_String *address; */
+/* IDL:        uint32 count; */
+/* IDL:        uint32 reserved; */
+/* IDL:        [size_is(count)] drsuapi_DsReplicaNeighbour array[*]; */
 /* IDL: } */
 
 static int
-drsuapi_dissect_element_DsaAddressListItem_V1_next(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaNeighbourCtr_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsaAddressListItem_V1_next_, NDR_POINTER_UNIQUE, "Pointer to Next (drsuapi_DsaAddressListItem_V1)",hf_drsuapi_drsuapi_DsaAddressListItem_V1_next);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaNeighbourCtr_count, 0);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsReplicaNeighbourCtr_reserved(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaNeighbourCtr_reserved, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsaAddressListItem_V1_address(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaNeighbourCtr_array(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsaAddressListItem_V1_address_, NDR_POINTER_UNIQUE, "Pointer to Address (lsa_String)",hf_drsuapi_drsuapi_DsaAddressListItem_V1_address);
+       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaNeighbourCtr_array_);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsaAddressListItem_V1_address_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaNeighbourCtr_array_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_lsa_String(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsaAddressListItem_V1_address,0);
+       offset = drsuapi_dissect_struct_DsReplicaNeighbour(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaNeighbourCtr_array,0);
 
        return offset;
 }
 
 int
-drsuapi_dissect_struct_DsaAddressListItem_V1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_struct_DsReplicaNeighbourCtr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
        proto_item *item = NULL;
        proto_tree *tree = NULL;
        int old_offset;
 
-       ALIGN_TO_5_BYTES;
+       ALIGN_TO_8_BYTES;
 
        old_offset = offset;
 
        if (parent_tree) {
                item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsaAddressListItem_V1);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaNeighbourCtr);
        }
 
-       offset = drsuapi_dissect_element_DsaAddressListItem_V1_next(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaNeighbourCtr_count(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsaAddressListItem_V1_address(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaNeighbourCtr_reserved(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsReplicaNeighbourCtr_array(tvb, offset, pinfo, tree, di, drep);
 
 
        proto_item_set_len(item, offset-old_offset);
 
 
        if (di->call_data->flags & DCERPC_IS_NDR64) {
-               ALIGN_TO_5_BYTES;
+               ALIGN_TO_8_BYTES;
        }
 
        return offset;
@@ -13579,156 +16293,179 @@ drsuapi_dissect_struct_DsaAddressListItem_V1(tvbuff_t *tvb _U_, int offset _U_,
 
 
 /* IDL: struct { */
-/* IDL:        [unique(1)] drsuapi_DsReplicaObjectIdentifier *id_target; */
-/* IDL:        drsuapi_NameResOp_V1 op_state; */
-/* IDL:        [value(0)] uint16 rdn_alias; */
-/* IDL:        [value(0)] uint16 rdn_internal; */
-/* IDL:        drsuapi_DsAddEntry_RefType ref_type; */
-/* IDL:        uint16 addr_list_count; */
-/* IDL:        [unique(1)] drsuapi_DsaAddressListItem_V1 *addr_list; */
-/* IDL:        [max_recursion(20000)] [unique(1)] drsuapi_DsAddEntry_RefErrListItem_V1 *next; */
-/* IDL:        uint32 is_choice_set; */
-/* IDL:        drsuapi_DsAddEntry_ChoiceType choice; */
+/* IDL:        uint32 count; */
+/* IDL:        uint32 reserved; */
+/* IDL:        [size_is(count)] drsuapi_DsReplicaCursor array[*]; */
 /* IDL: } */
 
 static int
-drsuapi_dissect_element_DsAddEntry_RefErrListItem_V1_id_target(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaCursorCtr_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsAddEntry_RefErrListItem_V1_id_target_, NDR_POINTER_UNIQUE, "Pointer to Id Target (drsuapi_DsReplicaObjectIdentifier)",hf_drsuapi_drsuapi_DsAddEntry_RefErrListItem_V1_id_target);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaCursorCtr_count, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsAddEntry_RefErrListItem_V1_id_target_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaCursorCtr_reserved(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntry_RefErrListItem_V1_id_target,0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaCursorCtr_reserved, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsAddEntry_RefErrListItem_V1_op_state(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaCursorCtr_array(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_NameResOp_V1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntry_RefErrListItem_V1_op_state,0);
+       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaCursorCtr_array_);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsAddEntry_RefErrListItem_V1_rdn_alias(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaCursorCtr_array_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntry_RefErrListItem_V1_rdn_alias, 0);
+       offset = drsuapi_dissect_struct_DsReplicaCursor(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaCursorCtr_array,0);
 
        return offset;
 }
 
-static int
-drsuapi_dissect_element_DsAddEntry_RefErrListItem_V1_rdn_internal(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+int
+drsuapi_dissect_struct_DsReplicaCursorCtr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
-       offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntry_RefErrListItem_V1_rdn_internal, 0);
+       proto_item *item = NULL;
+       proto_tree *tree = NULL;
+       int old_offset;
+
+       ALIGN_TO_8_BYTES;
+
+       old_offset = offset;
+
+       if (parent_tree) {
+               item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaCursorCtr);
+       }
+
+       offset = drsuapi_dissect_element_DsReplicaCursorCtr_count(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsReplicaCursorCtr_reserved(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsReplicaCursorCtr_array(tvb, offset, pinfo, tree, di, drep);
+
+
+       proto_item_set_len(item, offset-old_offset);
+
+
+       if (di->call_data->flags & DCERPC_IS_NDR64) {
+               ALIGN_TO_8_BYTES;
+       }
 
        return offset;
 }
 
+
+/* IDL: struct { */
+/* IDL:        [charset(UTF16)] [unique(1)] uint16 *attribute_name; */
+/* IDL:        uint32 version; */
+/* IDL:        NTTIME originating_change_time; */
+/* IDL:        GUID originating_invocation_id; */
+/* IDL:        hyper originating_usn; */
+/* IDL:        hyper local_usn; */
+/* IDL: } */
+
 static int
-drsuapi_dissect_element_DsAddEntry_RefErrListItem_V1_ref_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaObjMetaData_attribute_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_enum_DsAddEntry_RefType(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntry_RefErrListItem_V1_ref_type, 0);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaObjMetaData_attribute_name_, NDR_POINTER_UNIQUE, "Pointer to Attribute Name (uint16)",hf_drsuapi_drsuapi_DsReplicaObjMetaData_attribute_name);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsAddEntry_RefErrListItem_V1_addr_list_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaObjMetaData_attribute_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntry_RefErrListItem_V1_addr_list_count, 0);
+       char *data;
+
+       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsReplicaObjMetaData_attribute_name, FALSE, &data);
+       proto_item_append_text(tree, ": %s", data);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsAddEntry_RefErrListItem_V1_addr_list(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaObjMetaData_version(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsAddEntry_RefErrListItem_V1_addr_list_, NDR_POINTER_UNIQUE, "Pointer to Addr List (drsuapi_DsaAddressListItem_V1)",hf_drsuapi_drsuapi_DsAddEntry_RefErrListItem_V1_addr_list);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjMetaData_version, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsAddEntry_RefErrListItem_V1_addr_list_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaObjMetaData_originating_change_time(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsaAddressListItem_V1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntry_RefErrListItem_V1_addr_list,0);
+       offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjMetaData_originating_change_time);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsAddEntry_RefErrListItem_V1_next(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaObjMetaData_originating_invocation_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsAddEntry_RefErrListItem_V1_next_, NDR_POINTER_UNIQUE, "Pointer to Next (drsuapi_DsAddEntry_RefErrListItem_V1)",hf_drsuapi_drsuapi_DsAddEntry_RefErrListItem_V1_next);
+       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjMetaData_originating_invocation_id, NULL);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsAddEntry_RefErrListItem_V1_is_choice_set(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaObjMetaData_originating_usn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntry_RefErrListItem_V1_is_choice_set, 0);
+       offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjMetaData_originating_usn, NULL);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsAddEntry_RefErrListItem_V1_choice(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaObjMetaData_local_usn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_enum_DsAddEntry_ChoiceType(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntry_RefErrListItem_V1_choice, 0);
+       offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjMetaData_local_usn, NULL);
 
        return offset;
 }
 
 int
-drsuapi_dissect_struct_DsAddEntry_RefErrListItem_V1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_struct_DsReplicaObjMetaData(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
        proto_item *item = NULL;
        proto_tree *tree = NULL;
        int old_offset;
 
-       ALIGN_TO_5_BYTES;
+       ALIGN_TO_8_BYTES;
 
        old_offset = offset;
 
        if (parent_tree) {
                item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsAddEntry_RefErrListItem_V1);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaObjMetaData);
        }
 
-       offset = drsuapi_dissect_element_DsAddEntry_RefErrListItem_V1_id_target(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsAddEntry_RefErrListItem_V1_op_state(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsAddEntry_RefErrListItem_V1_rdn_alias(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsAddEntry_RefErrListItem_V1_rdn_internal(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsAddEntry_RefErrListItem_V1_ref_type(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaObjMetaData_attribute_name(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsAddEntry_RefErrListItem_V1_addr_list_count(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaObjMetaData_version(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsAddEntry_RefErrListItem_V1_addr_list(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaObjMetaData_originating_change_time(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsAddEntry_RefErrListItem_V1_next(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaObjMetaData_originating_invocation_id(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsAddEntry_RefErrListItem_V1_is_choice_set(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaObjMetaData_originating_usn(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsAddEntry_RefErrListItem_V1_choice(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaObjMetaData_local_usn(tvb, offset, pinfo, tree, di, drep);
 
 
        proto_item_set_len(item, offset-old_offset);
 
 
        if (di->call_data->flags & DCERPC_IS_NDR64) {
-               ALIGN_TO_5_BYTES;
+               ALIGN_TO_8_BYTES;
        }
 
        return offset;
@@ -13736,239 +16473,215 @@ drsuapi_dissect_struct_DsAddEntry_RefErrListItem_V1(tvbuff_t *tvb _U_, int offse
 
 
 /* IDL: struct { */
-/* IDL:        uint32 dsid; */
-/* IDL:        WERROR extended_err; */
-/* IDL:        uint32 extended_data; */
-/* IDL:        drsuapi_DsAddEntry_RefErrListItem_V1 refer; */
+/* IDL:        uint32 count; */
+/* IDL:        uint32 reserved; */
+/* IDL:        [size_is(count)] drsuapi_DsReplicaObjMetaData array[*]; */
 /* IDL: } */
 
 static int
-drsuapi_dissect_element_DsAddEntryErrorInfo_Referr_V1_dsid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaObjMetaDataCtr_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntryErrorInfo_Referr_V1_dsid, 0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjMetaDataCtr_count, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsAddEntryErrorInfo_Referr_V1_extended_err(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaObjMetaDataCtr_reserved(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntryErrorInfo_Referr_V1_extended_err, 0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjMetaDataCtr_reserved, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsAddEntryErrorInfo_Referr_V1_extended_data(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaObjMetaDataCtr_array(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntryErrorInfo_Referr_V1_extended_data, 0);
+       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaObjMetaDataCtr_array_);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsAddEntryErrorInfo_Referr_V1_refer(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaObjMetaDataCtr_array_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsAddEntry_RefErrListItem_V1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntryErrorInfo_Referr_V1_refer,0);
+       offset = drsuapi_dissect_struct_DsReplicaObjMetaData(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaObjMetaDataCtr_array,0);
 
        return offset;
 }
 
 int
-drsuapi_dissect_struct_DsAddEntryErrorInfo_Referr_V1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_struct_DsReplicaObjMetaDataCtr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
        proto_item *item = NULL;
        proto_tree *tree = NULL;
        int old_offset;
 
-       ALIGN_TO_5_BYTES;
+       ALIGN_TO_8_BYTES;
 
        old_offset = offset;
 
        if (parent_tree) {
                item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsAddEntryErrorInfo_Referr_V1);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaObjMetaDataCtr);
        }
 
-       offset = drsuapi_dissect_element_DsAddEntryErrorInfo_Referr_V1_dsid(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsAddEntryErrorInfo_Referr_V1_extended_err(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaObjMetaDataCtr_count(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsAddEntryErrorInfo_Referr_V1_extended_data(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaObjMetaDataCtr_reserved(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsAddEntryErrorInfo_Referr_V1_refer(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaObjMetaDataCtr_array(tvb, offset, pinfo, tree, di, drep);
 
 
        proto_item_set_len(item, offset-old_offset);
 
 
        if (di->call_data->flags & DCERPC_IS_NDR64) {
-               ALIGN_TO_5_BYTES;
+               ALIGN_TO_8_BYTES;
        }
 
        return offset;
 }
 
 
-/* IDL: [switch_type(uint32)] union { */
-/* IDL: [case(1)] [case(1)] drsuapi_DsAddEntryErrorInfo_Attr_V1 attr_err; */
-/* IDL: [case(2)] [case(2)] drsuapi_DsAddEntryErrorInfo_Name_V1 name_err; */
-/* IDL: [case(3)] [case(3)] drsuapi_DsAddEntryErrorInfo_Referr_V1 referral_err; */
-/* IDL: [case(4)] [case(4)] drsuapi_DsAddEntryErrorInfoX security_err; */
-/* IDL: [case(5)] [case(5)] drsuapi_DsAddEntryErrorInfoX service_err; */
-/* IDL: [case(6)] [case(6)] drsuapi_DsAddEntryErrorInfoX update_err; */
-/* IDL: [case(7)] [case(7)] drsuapi_DsAddEntryErrorInfoX system_err; */
+/* IDL: struct { */
+/* IDL:        [charset(UTF16)] [unique(1)] uint16 *dsa_obj_dn; */
+/* IDL:        GUID dsa_obj_guid; */
+/* IDL:        NTTIME first_failure; */
+/* IDL:        uint32 num_failures; */
+/* IDL:        WERROR last_result; */
 /* IDL: } */
 
 static int
-drsuapi_dissect_element_DsAddEntryErrorInfo_attr_err(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaKccDsaFailure_dsa_obj_dn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsAddEntryErrorInfo_Attr_V1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntryErrorInfo_attr_err,0);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaKccDsaFailure_dsa_obj_dn_, NDR_POINTER_UNIQUE, "Pointer to Dsa Obj Dn (uint16)",hf_drsuapi_drsuapi_DsReplicaKccDsaFailure_dsa_obj_dn);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsAddEntryErrorInfo_name_err(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaKccDsaFailure_dsa_obj_dn_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsAddEntryErrorInfo_Name_V1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntryErrorInfo_name_err,0);
-
-       return offset;
-}
+       char *data;
 
-static int
-drsuapi_dissect_element_DsAddEntryErrorInfo_referral_err(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = drsuapi_dissect_struct_DsAddEntryErrorInfo_Referr_V1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntryErrorInfo_referral_err,0);
+       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsReplicaKccDsaFailure_dsa_obj_dn, FALSE, &data);
+       proto_item_append_text(tree, ": %s", data);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsAddEntryErrorInfo_security_err(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaKccDsaFailure_dsa_obj_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsAddEntryErrorInfoX(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntryErrorInfo_security_err,0);
+       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaKccDsaFailure_dsa_obj_guid, NULL);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsAddEntryErrorInfo_service_err(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaKccDsaFailure_first_failure(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsAddEntryErrorInfoX(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntryErrorInfo_service_err,0);
+       offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaKccDsaFailure_first_failure);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsAddEntryErrorInfo_update_err(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaKccDsaFailure_num_failures(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsAddEntryErrorInfoX(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntryErrorInfo_update_err,0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaKccDsaFailure_num_failures, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsAddEntryErrorInfo_system_err(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaKccDsaFailure_last_result(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsAddEntryErrorInfoX(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntryErrorInfo_system_err,0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaKccDsaFailure_last_result, 0);
 
        return offset;
 }
 
-static int
-drsuapi_dissect_DsAddEntryErrorInfo(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+int
+drsuapi_dissect_struct_DsReplicaKccDsaFailure(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
        proto_item *item = NULL;
        proto_tree *tree = NULL;
        int old_offset;
-       guint32 level;
+
+       ALIGN_TO_5_BYTES;
 
        old_offset = offset;
+
        if (parent_tree) {
-               tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_DsAddEntryErrorInfo, &item, "drsuapi_DsAddEntryErrorInfo");
+               item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaKccDsaFailure);
        }
 
-       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level);
-       ALIGN_TO_5_BYTES;
-
-       switch(level) {
-               case 1:
-                       offset = drsuapi_dissect_element_DsAddEntryErrorInfo_attr_err(tvb, offset, pinfo, tree, di, drep);
-               break;
+       offset = drsuapi_dissect_element_DsReplicaKccDsaFailure_dsa_obj_dn(tvb, offset, pinfo, tree, di, drep);
 
-               case 2:
-                       offset = drsuapi_dissect_element_DsAddEntryErrorInfo_name_err(tvb, offset, pinfo, tree, di, drep);
-               break;
+       offset = drsuapi_dissect_element_DsReplicaKccDsaFailure_dsa_obj_guid(tvb, offset, pinfo, tree, di, drep);
 
-               case 3:
-                       offset = drsuapi_dissect_element_DsAddEntryErrorInfo_referral_err(tvb, offset, pinfo, tree, di, drep);
-               break;
+       offset = drsuapi_dissect_element_DsReplicaKccDsaFailure_first_failure(tvb, offset, pinfo, tree, di, drep);
 
-               case 4:
-                       offset = drsuapi_dissect_element_DsAddEntryErrorInfo_security_err(tvb, offset, pinfo, tree, di, drep);
-               break;
+       offset = drsuapi_dissect_element_DsReplicaKccDsaFailure_num_failures(tvb, offset, pinfo, tree, di, drep);
 
-               case 5:
-                       offset = drsuapi_dissect_element_DsAddEntryErrorInfo_service_err(tvb, offset, pinfo, tree, di, drep);
-               break;
+       offset = drsuapi_dissect_element_DsReplicaKccDsaFailure_last_result(tvb, offset, pinfo, tree, di, drep);
 
-               case 6:
-                       offset = drsuapi_dissect_element_DsAddEntryErrorInfo_update_err(tvb, offset, pinfo, tree, di, drep);
-               break;
 
-               case 7:
-                       offset = drsuapi_dissect_element_DsAddEntryErrorInfo_system_err(tvb, offset, pinfo, tree, di, drep);
-               break;
-       }
        proto_item_set_len(item, offset-old_offset);
 
 
+       if (di->call_data->flags & DCERPC_IS_NDR64) {
+               ALIGN_TO_5_BYTES;
+       }
+
        return offset;
 }
 
+
 /* IDL: struct { */
-/* IDL:        WERROR status; */
-/* IDL:        drsuapi_DsAddEntry_DirErr dir_err; */
-/* IDL:        [switch_is(dir_err)] [unique(1)] drsuapi_DsAddEntryErrorInfo *info; */
+/* IDL:        uint32 count; */
+/* IDL:        uint32 reserved; */
+/* IDL:        [size_is(count)] drsuapi_DsReplicaKccDsaFailure array[*]; */
 /* IDL: } */
 
 static int
-drsuapi_dissect_element_DsAddEntry_ErrData_V1_status(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaKccDsaFailuresCtr_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntry_ErrData_V1_status, 0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaKccDsaFailuresCtr_count, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsAddEntry_ErrData_V1_dir_err(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, guint32 *dir_err)
+drsuapi_dissect_element_DsReplicaKccDsaFailuresCtr_reserved(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_enum_DsAddEntry_DirErr(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntry_ErrData_V1_dir_err, dir_err);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaKccDsaFailuresCtr_reserved, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsAddEntry_ErrData_V1_info(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, guint32 *dir_err)
+drsuapi_dissect_element_DsReplicaKccDsaFailuresCtr_array(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsAddEntry_ErrData_V1_info_, NDR_POINTER_UNIQUE, "Pointer to Info (drsuapi_DsAddEntryErrorInfo)",hf_drsuapi_drsuapi_DsAddEntry_ErrData_V1_info);
+       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaKccDsaFailuresCtr_array_);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsAddEntry_ErrData_V1_info_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, guint32 *dir_err)
+drsuapi_dissect_element_DsReplicaKccDsaFailuresCtr_array_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_DsAddEntryErrorInfo(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntry_ErrData_V1_info, *dir_err);
+       offset = drsuapi_dissect_struct_DsReplicaKccDsaFailure(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaKccDsaFailuresCtr_array,0);
 
        return offset;
 }
 
 int
-drsuapi_dissect_struct_DsAddEntry_ErrData_V1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_struct_DsReplicaKccDsaFailuresCtr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
-       guint32 dir_err = 0;
        proto_item *item = NULL;
        proto_tree *tree = NULL;
        int old_offset;
@@ -13979,14 +16692,14 @@ drsuapi_dissect_struct_DsAddEntry_ErrData_V1(tvbuff_t *tvb _U_, int offset _U_,
 
        if (parent_tree) {
                item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsAddEntry_ErrData_V1);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaKccDsaFailuresCtr);
        }
 
-       offset = drsuapi_dissect_element_DsAddEntry_ErrData_V1_status(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaKccDsaFailuresCtr_count(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsAddEntry_ErrData_V1_dir_err(tvb, offset, pinfo, tree, di, drep, &dir_err);
+       offset = drsuapi_dissect_element_DsReplicaKccDsaFailuresCtr_reserved(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsAddEntry_ErrData_V1_info(tvb, offset, pinfo, tree, di, drep, &dir_err);
+       offset = drsuapi_dissect_element_DsReplicaKccDsaFailuresCtr_array(tvb, offset, pinfo, tree, di, drep);
 
 
        proto_item_set_len(item, offset-old_offset);
@@ -14000,203 +16713,243 @@ drsuapi_dissect_struct_DsAddEntry_ErrData_V1(tvbuff_t *tvb _U_, int offset _U_,
 }
 
 
-/* IDL: [switch_type(uint32)] union { */
-/* IDL: [case(1)] [case(1)] drsuapi_DsAddEntry_ErrData_V1 v1; */
+/* IDL: enum { */
+/* IDL:        DRSUAPI_DS_REPLICA_OP_TYPE_SYNC=0, */
+/* IDL:        DRSUAPI_DS_REPLICA_OP_TYPE_ADD=1, */
+/* IDL:        DRSUAPI_DS_REPLICA_OP_TYPE_DELETE=2, */
+/* IDL:        DRSUAPI_DS_REPLICA_OP_TYPE_MODIFY=3, */
+/* IDL:        DRSUAPI_DS_REPLICA_OP_TYPE_UPDATE_REFS=4, */
 /* IDL: } */
 
-static int
-drsuapi_dissect_element_DsAddEntry_ErrData_v1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = drsuapi_dissect_struct_DsAddEntry_ErrData_V1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntry_ErrData_v1,0);
-
-       return offset;
-}
-
-static int
-drsuapi_dissect_DsAddEntry_ErrData(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+int
+drsuapi_dissect_enum_DsReplicaOpType(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint1632 *param _U_)
 {
-       proto_item *item = NULL;
-       proto_tree *tree = NULL;
-       int old_offset;
-       guint32 level;
-
-       old_offset = offset;
-       if (parent_tree) {
-               tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_DsAddEntry_ErrData, &item, "drsuapi_DsAddEntry_ErrData");
+       guint1632 parameter=0;
+       if (param) {
+               parameter = *param;
        }
-
-       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level);
-       ALIGN_TO_5_BYTES;
-
-       switch(level) {
-               case 1:
-                       offset = drsuapi_dissect_element_DsAddEntry_ErrData_v1(tvb, offset, pinfo, tree, di, drep);
-               break;
+       offset = dissect_ndr_uint1632(tvb, offset, pinfo, tree, di, drep, hf_index, &parameter);
+       if (param) {
+               *param = parameter;
        }
-       proto_item_set_len(item, offset-old_offset);
-
-
        return offset;
 }
 
+
 /* IDL: struct { */
-/* IDL:        GUID guid; */
-/* IDL:        dom_sid28 sid; */
+/* IDL:        NTTIME operation_start; */
+/* IDL:        uint32 serial_num; */
+/* IDL:        uint32 priority; */
+/* IDL:        drsuapi_DsReplicaOpType operation_type; */
+/* IDL:        drsuapi_DrsOptions options; */
+/* IDL:        [charset(UTF16)] [unique(1)] uint16 *nc_dn; */
+/* IDL:        [charset(UTF16)] [unique(1)] uint16 *remote_dsa_obj_dn; */
+/* IDL:        [charset(UTF16)] [unique(1)] uint16 *remote_dsa_address; */
+/* IDL:        GUID nc_obj_guid; */
+/* IDL:        GUID remote_dsa_obj_guid; */
 /* IDL: } */
 
 static int
-drsuapi_dissect_element_DsReplicaObjectIdentifier2_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaOp_operation_start(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjectIdentifier2_guid, NULL);
+       offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaOp_operation_start);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaObjectIdentifier2_sid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaOp_serial_num(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       
-               di->hf_index = hf_drsuapi_drsuapi_DsReplicaObjectIdentifier2_sid;
-
-               offset = dissect_ndr_nt_SID28(tvb, offset, pinfo, tree, di, drep);
-       
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaOp_serial_num, 0);
 
        return offset;
 }
 
-int
-drsuapi_dissect_struct_DsReplicaObjectIdentifier2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+static int
+drsuapi_dissect_element_DsReplicaOp_priority(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       proto_item *item = NULL;
-       proto_tree *tree = NULL;
-       int old_offset;
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaOp_priority, 0);
 
-       ALIGN_TO_4_BYTES;
+       return offset;
+}
 
-       old_offset = offset;
+static int
+drsuapi_dissect_element_DsReplicaOp_operation_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = drsuapi_dissect_enum_DsReplicaOpType(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaOp_operation_type, 0);
 
-       if (parent_tree) {
-               item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaObjectIdentifier2);
-       }
+       return offset;
+}
 
-       offset = drsuapi_dissect_element_DsReplicaObjectIdentifier2_guid(tvb, offset, pinfo, tree, di, drep);
+static int
+drsuapi_dissect_element_DsReplicaOp_options(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = drsuapi_dissect_bitmap_DrsOptions(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaOp_options, 0);
 
-       offset = drsuapi_dissect_element_DsReplicaObjectIdentifier2_sid(tvb, offset, pinfo, tree, di, drep);
+       return offset;
+}
 
+static int
+drsuapi_dissect_element_DsReplicaOp_nc_dn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaOp_nc_dn_, NDR_POINTER_UNIQUE, "Pointer to Nc Dn (uint16)",hf_drsuapi_drsuapi_DsReplicaOp_nc_dn);
 
-       proto_item_set_len(item, offset-old_offset);
+       return offset;
+}
 
+static int
+drsuapi_dissect_element_DsReplicaOp_nc_dn_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       char *data;
 
-       if (di->call_data->flags & DCERPC_IS_NDR64) {
-               ALIGN_TO_4_BYTES;
-       }
+       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsReplicaOp_nc_dn, FALSE, &data);
+       proto_item_append_text(tree, ": %s", data);
 
        return offset;
 }
 
+static int
+drsuapi_dissect_element_DsReplicaOp_remote_dsa_obj_dn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaOp_remote_dsa_obj_dn_, NDR_POINTER_UNIQUE, "Pointer to Remote Dsa Obj Dn (uint16)",hf_drsuapi_drsuapi_DsReplicaOp_remote_dsa_obj_dn);
 
-/* IDL: struct { */
-/* IDL:        [unique(1)] drsuapi_DsReplicaObjectIdentifier *id; */
-/* IDL:        drsuapi_DsAddEntry_DirErr dir_err; */
-/* IDL:        uint32 dsid; */
-/* IDL:        WERROR extended_err; */
-/* IDL:        uint32 extended_data; */
-/* IDL:        uint16 problem; */
-/* IDL:        [range(0,10000)] uint32 count; */
-/* IDL:        [size_is(count)] [unique(1)] drsuapi_DsReplicaObjectIdentifier2 *objects; */
-/* IDL: } */
+       return offset;
+}
 
 static int
-drsuapi_dissect_element_DsAddEntryCtr2_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaOp_remote_dsa_obj_dn_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsAddEntryCtr2_id_, NDR_POINTER_UNIQUE, "Pointer to Id (drsuapi_DsReplicaObjectIdentifier)",hf_drsuapi_drsuapi_DsAddEntryCtr2_id);
+       char *data;
+
+       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsReplicaOp_remote_dsa_obj_dn, FALSE, &data);
+       proto_item_append_text(tree, ": %s", data);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsAddEntryCtr2_id_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaOp_remote_dsa_address(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntryCtr2_id,0);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaOp_remote_dsa_address_, NDR_POINTER_UNIQUE, "Pointer to Remote Dsa Address (uint16)",hf_drsuapi_drsuapi_DsReplicaOp_remote_dsa_address);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsAddEntryCtr2_dir_err(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaOp_remote_dsa_address_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_enum_DsAddEntry_DirErr(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntryCtr2_dir_err, 0);
+       char *data;
+
+       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsReplicaOp_remote_dsa_address, FALSE, &data);
+       proto_item_append_text(tree, ": %s", data);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsAddEntryCtr2_dsid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaOp_nc_obj_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntryCtr2_dsid, 0);
+       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaOp_nc_obj_guid, NULL);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsAddEntryCtr2_extended_err(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaOp_remote_dsa_obj_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntryCtr2_extended_err, 0);
+       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaOp_remote_dsa_obj_guid, NULL);
 
        return offset;
 }
 
-static int
-drsuapi_dissect_element_DsAddEntryCtr2_extended_data(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+int
+drsuapi_dissect_struct_DsReplicaOp(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntryCtr2_extended_data, 0);
+       proto_item *item = NULL;
+       proto_tree *tree = NULL;
+       int old_offset;
+
+       ALIGN_TO_5_BYTES;
+
+       old_offset = offset;
+
+       if (parent_tree) {
+               item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaOp);
+       }
+
+       offset = drsuapi_dissect_element_DsReplicaOp_operation_start(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsReplicaOp_serial_num(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsReplicaOp_priority(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsReplicaOp_operation_type(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsReplicaOp_options(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsReplicaOp_nc_dn(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsReplicaOp_remote_dsa_obj_dn(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsReplicaOp_remote_dsa_address(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsReplicaOp_nc_obj_guid(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsReplicaOp_remote_dsa_obj_guid(tvb, offset, pinfo, tree, di, drep);
+
+
+       proto_item_set_len(item, offset-old_offset);
 
-       return offset;
-}
 
-static int
-drsuapi_dissect_element_DsAddEntryCtr2_problem(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntryCtr2_problem, 0);
+       if (di->call_data->flags & DCERPC_IS_NDR64) {
+               ALIGN_TO_5_BYTES;
+       }
 
        return offset;
 }
 
+
+/* IDL: struct { */
+/* IDL:        NTTIME time; */
+/* IDL:        uint32 count; */
+/* IDL:        [size_is(count)] drsuapi_DsReplicaOp array[*]; */
+/* IDL: } */
+
 static int
-drsuapi_dissect_element_DsAddEntryCtr2_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaOpCtr_time(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntryCtr2_count, 0);
+       offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaOpCtr_time);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsAddEntryCtr2_objects(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaOpCtr_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsAddEntryCtr2_objects_, NDR_POINTER_UNIQUE, "Pointer to Objects (drsuapi_DsReplicaObjectIdentifier2)",hf_drsuapi_drsuapi_DsAddEntryCtr2_objects);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaOpCtr_count, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsAddEntryCtr2_objects_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaOpCtr_array(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsAddEntryCtr2_objects__);
+       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaOpCtr_array_);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsAddEntryCtr2_objects__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaOpCtr_array_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier2(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntryCtr2_objects,0);
+       offset = drsuapi_dissect_struct_DsReplicaOp(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaOpCtr_array,0);
 
        return offset;
 }
 
 int
-drsuapi_dissect_struct_DsAddEntryCtr2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_struct_DsReplicaOpCtr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
        proto_item *item = NULL;
        proto_tree *tree = NULL;
@@ -14208,24 +16961,14 @@ drsuapi_dissect_struct_DsAddEntryCtr2(tvbuff_t *tvb _U_, int offset _U_, packet_
 
        if (parent_tree) {
                item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsAddEntryCtr2);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaOpCtr);
        }
 
-       offset = drsuapi_dissect_element_DsAddEntryCtr2_id(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsAddEntryCtr2_dir_err(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsAddEntryCtr2_dsid(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsAddEntryCtr2_extended_err(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsAddEntryCtr2_extended_data(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsAddEntryCtr2_problem(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaOpCtr_time(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsAddEntryCtr2_count(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaOpCtr_count(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsAddEntryCtr2_objects(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaOpCtr_array(tvb, offset, pinfo, tree, di, drep);
 
 
        proto_item_set_len(item, offset-old_offset);
@@ -14240,204 +16983,253 @@ drsuapi_dissect_struct_DsAddEntryCtr2(tvbuff_t *tvb _U_, int offset _U_, packet_
 
 
 /* IDL: struct { */
-/* IDL:        [unique(1)] drsuapi_DsReplicaObjectIdentifier *id; */
-/* IDL:        uint32 err_ver; */
-/* IDL:        [switch_is(err_ver)] [unique(1)] drsuapi_DsAddEntry_ErrData *err_data; */
-/* IDL:        [range(0,10000)] uint32 count; */
-/* IDL:        [size_is(count)] [unique(1)] drsuapi_DsReplicaObjectIdentifier2 *objects; */
+/* IDL:        [charset(UTF16)] [unique(1)] uint16 *attribute_name; */
+/* IDL:        [charset(UTF16)] [unique(1)] uint16 *object_dn; */
+/* IDL:        [value(ndr_size_DATA_BLOB(0,binary,0))] uint32 __ndr_size_binary; */
+/* IDL:        [unique(1)] DATA_BLOB *binary; */
+/* IDL:        NTTIME deleted; */
+/* IDL:        NTTIME created; */
+/* IDL:        uint32 version; */
+/* IDL:        NTTIME originating_change_time; */
+/* IDL:        GUID originating_invocation_id; */
+/* IDL:        hyper originating_usn; */
+/* IDL:        hyper local_usn; */
 /* IDL: } */
 
 static int
-drsuapi_dissect_element_DsAddEntryCtr3_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaAttrValMetaData_attribute_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsAddEntryCtr3_id_, NDR_POINTER_UNIQUE, "Pointer to Id (drsuapi_DsReplicaObjectIdentifier)",hf_drsuapi_drsuapi_DsAddEntryCtr3_id);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaAttrValMetaData_attribute_name_, NDR_POINTER_UNIQUE, "Pointer to Attribute Name (uint16)",hf_drsuapi_drsuapi_DsReplicaAttrValMetaData_attribute_name);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsAddEntryCtr3_id_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaAttrValMetaData_attribute_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntryCtr3_id,0);
+       char *data;
+
+       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsReplicaAttrValMetaData_attribute_name, FALSE, &data);
+       proto_item_append_text(tree, ": %s", data);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsAddEntryCtr3_err_ver(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, guint32 *err_ver)
+drsuapi_dissect_element_DsReplicaAttrValMetaData_object_dn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntryCtr3_err_ver, *err_ver);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaAttrValMetaData_object_dn_, NDR_POINTER_UNIQUE, "Pointer to Object Dn (uint16)",hf_drsuapi_drsuapi_DsReplicaAttrValMetaData_object_dn);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsAddEntryCtr3_err_data(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, guint32 *err_ver)
+drsuapi_dissect_element_DsReplicaAttrValMetaData_object_dn_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsAddEntryCtr3_err_data_, NDR_POINTER_UNIQUE, "Pointer to Err Data (drsuapi_DsAddEntry_ErrData)",hf_drsuapi_drsuapi_DsAddEntryCtr3_err_data);
+       char *data;
+
+       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsReplicaAttrValMetaData_object_dn, FALSE, &data);
+       proto_item_append_text(tree, ": %s", data);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsAddEntryCtr3_err_data_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, guint32 *err_ver)
+drsuapi_dissect_element_DsReplicaAttrValMetaData___ndr_size_binary(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_DsAddEntry_ErrData(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntryCtr3_err_data, *err_ver);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAttrValMetaData___ndr_size_binary, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsAddEntryCtr3_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaAttrValMetaData_binary(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntryCtr3_count, 0);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaAttrValMetaData_binary_, NDR_POINTER_UNIQUE, "Pointer to Binary (DATA_BLOB)",hf_drsuapi_drsuapi_DsReplicaAttrValMetaData_binary);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsAddEntryCtr3_objects(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaAttrValMetaData_binary_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsAddEntryCtr3_objects_, NDR_POINTER_UNIQUE, "Pointer to Objects (drsuapi_DsReplicaObjectIdentifier2)",hf_drsuapi_drsuapi_DsAddEntryCtr3_objects);
+       offset = dissect_ndr_datablob(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAttrValMetaData_binary, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsAddEntryCtr3_objects_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaAttrValMetaData_deleted(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsAddEntryCtr3_objects__);
+       offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAttrValMetaData_deleted);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsAddEntryCtr3_objects__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaAttrValMetaData_created(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier2(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntryCtr3_objects,0);
+       offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAttrValMetaData_created);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsReplicaAttrValMetaData_version(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAttrValMetaData_version, 0);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsReplicaAttrValMetaData_originating_change_time(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAttrValMetaData_originating_change_time);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsReplicaAttrValMetaData_originating_invocation_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAttrValMetaData_originating_invocation_id, NULL);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsReplicaAttrValMetaData_originating_usn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAttrValMetaData_originating_usn, NULL);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsReplicaAttrValMetaData_local_usn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAttrValMetaData_local_usn, NULL);
 
        return offset;
 }
 
 int
-drsuapi_dissect_struct_DsAddEntryCtr3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_struct_DsReplicaAttrValMetaData(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
-       guint32 err_ver = 0;
        proto_item *item = NULL;
        proto_tree *tree = NULL;
        int old_offset;
 
-       ALIGN_TO_5_BYTES;
+       ALIGN_TO_8_BYTES;
 
        old_offset = offset;
 
        if (parent_tree) {
                item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsAddEntryCtr3);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaAttrValMetaData);
        }
 
-       offset = drsuapi_dissect_element_DsAddEntryCtr3_id(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaAttrValMetaData_attribute_name(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsAddEntryCtr3_err_ver(tvb, offset, pinfo, tree, di, drep, &err_ver);
+       offset = drsuapi_dissect_element_DsReplicaAttrValMetaData_object_dn(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsAddEntryCtr3_err_data(tvb, offset, pinfo, tree, di, drep, &err_ver);
+       offset = drsuapi_dissect_element_DsReplicaAttrValMetaData___ndr_size_binary(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsAddEntryCtr3_count(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaAttrValMetaData_binary(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsAddEntryCtr3_objects(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaAttrValMetaData_deleted(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsReplicaAttrValMetaData_created(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsReplicaAttrValMetaData_version(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsReplicaAttrValMetaData_originating_change_time(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsReplicaAttrValMetaData_originating_invocation_id(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsReplicaAttrValMetaData_originating_usn(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsReplicaAttrValMetaData_local_usn(tvb, offset, pinfo, tree, di, drep);
 
 
        proto_item_set_len(item, offset-old_offset);
 
 
        if (di->call_data->flags & DCERPC_IS_NDR64) {
-               ALIGN_TO_5_BYTES;
+               ALIGN_TO_8_BYTES;
        }
 
        return offset;
 }
 
 
-/* IDL: [switch_type(uint32)] union { */
-/* IDL: [case(2)] [case(2)] drsuapi_DsAddEntryCtr2 ctr2; */
-/* IDL: [case(3)] [case(3)] drsuapi_DsAddEntryCtr3 ctr3; */
+/* IDL: struct { */
+/* IDL:        uint32 count; */
+/* IDL:        uint32 enumeration_context; */
+/* IDL:        [size_is(count)] drsuapi_DsReplicaAttrValMetaData array[*]; */
 /* IDL: } */
 
 static int
-drsuapi_dissect_element_DsAddEntryCtr_ctr2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaAttrValMetaDataCtr_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsAddEntryCtr2(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntryCtr_ctr2,0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAttrValMetaDataCtr_count, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsAddEntryCtr_ctr3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaAttrValMetaDataCtr_enumeration_context(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsAddEntryCtr3(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntryCtr_ctr3,0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAttrValMetaDataCtr_enumeration_context, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_DsAddEntryCtr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_element_DsReplicaAttrValMetaDataCtr_array(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       proto_item *item = NULL;
-       proto_tree *tree = NULL;
-       int old_offset;
-       guint32 level;
-
-       old_offset = offset;
-       if (parent_tree) {
-               tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_DsAddEntryCtr, &item, "drsuapi_DsAddEntryCtr");
-       }
-
-       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level);
-       ALIGN_TO_5_BYTES;
-
-       switch(level) {
-               case 2:
-                       offset = drsuapi_dissect_element_DsAddEntryCtr_ctr2(tvb, offset, pinfo, tree, di, drep);
-               break;
+       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaAttrValMetaDataCtr_array_);
 
-               case 3:
-                       offset = drsuapi_dissect_element_DsAddEntryCtr_ctr3(tvb, offset, pinfo, tree, di, drep);
-               break;
-       }
-       proto_item_set_len(item, offset-old_offset);
+       return offset;
+}
 
+static int
+drsuapi_dissect_element_DsReplicaAttrValMetaDataCtr_array_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = drsuapi_dissect_struct_DsReplicaAttrValMetaData(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaAttrValMetaDataCtr_array,0);
 
        return offset;
 }
 
-/* IDL: bitmap { */
-/* IDL:        DRSUAPI_DS_EXECUTE_KCC_ASYNCHRONOUS_OPERATION =  0x00000001 , */
-/* IDL:        DRSUAPI_DS_EXECUTE_KCC_DAMPED =  0x00000002 , */
-/* IDL: } */
-
 int
-drsuapi_dissect_bitmap_DsExecuteKCCFlags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_struct_DsReplicaAttrValMetaDataCtr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
-       proto_item *item;
-       static int * const drsuapi_drsuapi_DsExecuteKCCFlags_fields[] = {
-               &hf_drsuapi_drsuapi_DsExecuteKCCFlags_DRSUAPI_DS_EXECUTE_KCC_ASYNCHRONOUS_OPERATION,
-               &hf_drsuapi_drsuapi_DsExecuteKCCFlags_DRSUAPI_DS_EXECUTE_KCC_DAMPED,
-               NULL
-       };
-       guint32 flags;
-       ALIGN_TO_4_BYTES;
+       proto_item *item = NULL;
+       proto_tree *tree = NULL;
+       int old_offset;
+
+       ALIGN_TO_8_BYTES;
+
+       old_offset = offset;
+
+       if (parent_tree) {
+               item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaAttrValMetaDataCtr);
+       }
+
+       offset = drsuapi_dissect_element_DsReplicaAttrValMetaDataCtr_count(tvb, offset, pinfo, tree, di, drep);
 
-       item = proto_tree_add_bitmask_with_flags(parent_tree, tvb, offset, hf_index,
-                               ett_drsuapi_drsuapi_DsExecuteKCCFlags, drsuapi_drsuapi_DsExecuteKCCFlags_fields, DREP_ENC_INTEGER(drep), BMT_NO_FALSE);
+       offset = drsuapi_dissect_element_DsReplicaAttrValMetaDataCtr_enumeration_context(tvb, offset, pinfo, tree, di, drep);
 
-       offset = dissect_ndr_uint32(tvb, offset, pinfo, parent_tree, di, drep, -1, &flags);
+       offset = drsuapi_dissect_element_DsReplicaAttrValMetaDataCtr_array(tvb, offset, pinfo, tree, di, drep);
 
-       if (!flags)
-               proto_item_append_text(item, ": (No values set)");
 
-       if (flags & (~0x00000003)) {
-               flags &= (~0x00000003);
-               proto_item_append_text(item, "Unknown bitmap value 0x%x", flags);
+       proto_item_set_len(item, offset-old_offset);
+
+
+       if (di->call_data->flags & DCERPC_IS_NDR64) {
+               ALIGN_TO_8_BYTES;
        }
 
        return offset;
@@ -14445,219 +17237,229 @@ drsuapi_dissect_bitmap_DsExecuteKCCFlags(tvbuff_t *tvb _U_, int offset _U_, pack
 
 
 /* IDL: struct { */
-/* IDL:        uint32 taskID; */
-/* IDL:        drsuapi_DsExecuteKCCFlags flags; */
+/* IDL:        uint32 count; */
+/* IDL:        uint32 enumeration_context; */
+/* IDL:        [size_is(count)] drsuapi_DsReplicaCursor2 array[*]; */
 /* IDL: } */
 
 static int
-drsuapi_dissect_element_DsExecuteKCC1_taskID(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaCursor2Ctr_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsExecuteKCC1_taskID, 0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaCursor2Ctr_count, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsExecuteKCC1_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaCursor2Ctr_enumeration_context(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_bitmap_DsExecuteKCCFlags(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsExecuteKCC1_flags, 0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaCursor2Ctr_enumeration_context, 0);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsReplicaCursor2Ctr_array(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaCursor2Ctr_array_);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsReplicaCursor2Ctr_array_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = drsuapi_dissect_struct_DsReplicaCursor2(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaCursor2Ctr_array,0);
 
        return offset;
 }
 
 int
-drsuapi_dissect_struct_DsExecuteKCC1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_struct_DsReplicaCursor2Ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
        proto_item *item = NULL;
        proto_tree *tree = NULL;
        int old_offset;
 
-       ALIGN_TO_4_BYTES;
+       ALIGN_TO_8_BYTES;
 
        old_offset = offset;
 
        if (parent_tree) {
                item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsExecuteKCC1);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaCursor2Ctr);
        }
 
-       offset = drsuapi_dissect_element_DsExecuteKCC1_taskID(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaCursor2Ctr_count(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsExecuteKCC1_flags(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaCursor2Ctr_enumeration_context(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsReplicaCursor2Ctr_array(tvb, offset, pinfo, tree, di, drep);
 
 
        proto_item_set_len(item, offset-old_offset);
 
 
        if (di->call_data->flags & DCERPC_IS_NDR64) {
-               ALIGN_TO_4_BYTES;
+               ALIGN_TO_8_BYTES;
        }
 
        return offset;
 }
 
 
-/* IDL: [switch_type(uint32)] union { */
-/* IDL: [case(1)] [case(1)] drsuapi_DsExecuteKCC1 ctr1; */
+/* IDL: struct { */
+/* IDL:        GUID source_dsa_invocation_id; */
+/* IDL:        hyper highest_usn; */
+/* IDL:        NTTIME last_sync_success; */
+/* IDL:        [charset(UTF16)] [unique(1)] uint16 *source_dsa_obj_dn; */
 /* IDL: } */
 
 static int
-drsuapi_dissect_element_DsExecuteKCCRequest_ctr1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaCursor3_source_dsa_invocation_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsExecuteKCC1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsExecuteKCCRequest_ctr1,0);
+       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaCursor3_source_dsa_invocation_id, NULL);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_DsExecuteKCCRequest(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_element_DsReplicaCursor3_highest_usn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       proto_item *item = NULL;
-       proto_tree *tree = NULL;
-       int old_offset;
-       guint32 level;
-
-       old_offset = offset;
-       if (parent_tree) {
-               tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_DsExecuteKCCRequest, &item, "drsuapi_DsExecuteKCCRequest");
-       }
-
-       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level);
-       ALIGN_TO_4_BYTES;
+       offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaCursor3_highest_usn, NULL);
 
-       switch(level) {
-               case 1:
-                       offset = drsuapi_dissect_element_DsExecuteKCCRequest_ctr1(tvb, offset, pinfo, tree, di, drep);
-               break;
-       }
-       proto_item_set_len(item, offset-old_offset);
+       return offset;
+}
 
+static int
+drsuapi_dissect_element_DsReplicaCursor3_last_sync_success(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaCursor3_last_sync_success);
 
        return offset;
 }
 
-/* IDL: enum { */
-/* IDL:        DRSUAPI_DS_REPLICA_GET_INFO=1, */
-/* IDL:        DRSUAPI_DS_REPLICA_GET_INFO2=2, */
-/* IDL: } */
-
-int
-drsuapi_dissect_enum_DsReplicaGetInfoLevel(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 *param _U_)
+static int
+drsuapi_dissect_element_DsReplicaCursor3_source_dsa_obj_dn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       guint32 parameter=0;
-       if (param) {
-               parameter = *param;
-       }
-       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &parameter);
-       if (param) {
-               *param = parameter;
-       }
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaCursor3_source_dsa_obj_dn_, NDR_POINTER_UNIQUE, "Pointer to Source Dsa Obj Dn (uint16)",hf_drsuapi_drsuapi_DsReplicaCursor3_source_dsa_obj_dn);
+
        return offset;
 }
 
+static int
+drsuapi_dissect_element_DsReplicaCursor3_source_dsa_obj_dn_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       char *data;
 
-/* IDL: enum { */
-/* IDL:        DRSUAPI_DS_REPLICA_INFO_NEIGHBORS=0, */
-/* IDL:        DRSUAPI_DS_REPLICA_INFO_CURSORS=1, */
-/* IDL:        DRSUAPI_DS_REPLICA_INFO_OBJ_METADATA=2, */
-/* IDL:        DRSUAPI_DS_REPLICA_INFO_KCC_DSA_CONNECT_FAILURES=3, */
-/* IDL:        DRSUAPI_DS_REPLICA_INFO_KCC_DSA_LINK_FAILURES=4, */
-/* IDL:        DRSUAPI_DS_REPLICA_INFO_PENDING_OPS=5, */
-/* IDL:        DRSUAPI_DS_REPLICA_INFO_ATTRIBUTE_VALUE_METADATA=6, */
-/* IDL:        DRSUAPI_DS_REPLICA_INFO_CURSORS2=7, */
-/* IDL:        DRSUAPI_DS_REPLICA_INFO_CURSORS3=8, */
-/* IDL:        DRSUAPI_DS_REPLICA_INFO_OBJ_METADATA2=9, */
-/* IDL:        DRSUAPI_DS_REPLICA_INFO_ATTRIBUTE_VALUE_METADATA2=10, */
-/* IDL:        DRSUAPI_DS_REPLICA_INFO_REPSTO=-2, */
-/* IDL:        DRSUAPI_DS_REPLICA_INFO_CLIENT_CONTEXTS=-4, */
-/* IDL:        DRSUAPI_DS_REPLICA_INFO_UPTODATE_VECTOR_V1=-5, */
-/* IDL:        DRSUAPI_DS_REPLICA_INFO_SERVER_OUTGOING_CALLS=-6, */
-/* IDL: } */
+       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsReplicaCursor3_source_dsa_obj_dn, FALSE, &data);
+       proto_item_append_text(tree, ": %s", data);
+
+       return offset;
+}
 
 int
-drsuapi_dissect_enum_DsReplicaInfoType(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 *param _U_)
+drsuapi_dissect_struct_DsReplicaCursor3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
-       guint32 parameter=0;
-       if (param) {
-               parameter = *param;
+       proto_item *item = NULL;
+       proto_tree *tree = NULL;
+       int old_offset;
+
+       ALIGN_TO_8_BYTES;
+
+       old_offset = offset;
+
+       if (parent_tree) {
+               item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaCursor3);
        }
-       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &parameter);
-       if (param) {
-               *param = parameter;
+
+       offset = drsuapi_dissect_element_DsReplicaCursor3_source_dsa_invocation_id(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsReplicaCursor3_highest_usn(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsReplicaCursor3_last_sync_success(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsReplicaCursor3_source_dsa_obj_dn(tvb, offset, pinfo, tree, di, drep);
+
+
+       proto_item_set_len(item, offset-old_offset);
+
+
+       if (di->call_data->flags & DCERPC_IS_NDR64) {
+               ALIGN_TO_8_BYTES;
        }
+
        return offset;
 }
 
 
 /* IDL: struct { */
-/* IDL:        drsuapi_DsReplicaInfoType info_type; */
-/* IDL:        [charset(UTF16)] [unique(1)] uint16 *object_dn; */
-/* IDL:        GUID source_dsa_guid; */
+/* IDL:        uint32 count; */
+/* IDL:        uint32 enumeration_context; */
+/* IDL:        [size_is(count)] drsuapi_DsReplicaCursor3 array[*]; */
 /* IDL: } */
 
 static int
-drsuapi_dissect_element_DsReplicaGetInfoRequest1_info_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaCursor3Ctr_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_enum_DsReplicaInfoType(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaGetInfoRequest1_info_type, 0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaCursor3Ctr_count, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaGetInfoRequest1_object_dn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaCursor3Ctr_enumeration_context(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaGetInfoRequest1_object_dn_, NDR_POINTER_UNIQUE, "Pointer to Object Dn (uint16)",hf_drsuapi_drsuapi_DsReplicaGetInfoRequest1_object_dn);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaCursor3Ctr_enumeration_context, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaGetInfoRequest1_object_dn_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaCursor3Ctr_array(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       char *data;
-
-       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsReplicaGetInfoRequest1_object_dn, FALSE, &data);
-       proto_item_append_text(tree, ": %s", data);
+       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaCursor3Ctr_array_);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaGetInfoRequest1_source_dsa_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaCursor3Ctr_array_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaGetInfoRequest1_source_dsa_guid, NULL);
+       offset = drsuapi_dissect_struct_DsReplicaCursor3(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaCursor3Ctr_array,0);
 
        return offset;
 }
 
 int
-drsuapi_dissect_struct_DsReplicaGetInfoRequest1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_struct_DsReplicaCursor3Ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
        proto_item *item = NULL;
        proto_tree *tree = NULL;
        int old_offset;
 
-       ALIGN_TO_5_BYTES;
+       ALIGN_TO_8_BYTES;
 
        old_offset = offset;
 
        if (parent_tree) {
                item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaGetInfoRequest1);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaCursor3Ctr);
        }
 
-       offset = drsuapi_dissect_element_DsReplicaGetInfoRequest1_info_type(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaCursor3Ctr_count(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaGetInfoRequest1_object_dn(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaCursor3Ctr_enumeration_context(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaGetInfoRequest1_source_dsa_guid(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaCursor3Ctr_array(tvb, offset, pinfo, tree, di, drep);
 
 
        proto_item_set_len(item, offset-old_offset);
 
 
        if (di->call_data->flags & DCERPC_IS_NDR64) {
-               ALIGN_TO_5_BYTES;
+               ALIGN_TO_8_BYTES;
        }
 
        return offset;
@@ -14665,391 +17467,451 @@ drsuapi_dissect_struct_DsReplicaGetInfoRequest1(tvbuff_t *tvb _U_, int offset _U
 
 
 /* IDL: struct { */
-/* IDL:        drsuapi_DsReplicaInfoType info_type; */
-/* IDL:        [charset(UTF16)] [unique(1)] uint16 *object_dn; */
-/* IDL:        GUID source_dsa_guid; */
-/* IDL:        uint32 flags; */
 /* IDL:        [charset(UTF16)] [unique(1)] uint16 *attribute_name; */
-/* IDL:        [charset(UTF16)] [unique(1)] uint16 *value_dn_str; */
-/* IDL:        uint32 enumeration_context; */
+/* IDL:        uint32 version; */
+/* IDL:        NTTIME originating_change_time; */
+/* IDL:        GUID originating_invocation_id; */
+/* IDL:        hyper originating_usn; */
+/* IDL:        hyper local_usn; */
+/* IDL:        [charset(UTF16)] [unique(1)] uint16 *originating_dsa_dn; */
 /* IDL: } */
 
 static int
-drsuapi_dissect_element_DsReplicaGetInfoRequest2_info_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = drsuapi_dissect_enum_DsReplicaInfoType(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaGetInfoRequest2_info_type, 0);
-
-       return offset;
-}
-
-static int
-drsuapi_dissect_element_DsReplicaGetInfoRequest2_object_dn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaObjMetaData2_attribute_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaGetInfoRequest2_object_dn_, NDR_POINTER_UNIQUE, "Pointer to Object Dn (uint16)",hf_drsuapi_drsuapi_DsReplicaGetInfoRequest2_object_dn);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaObjMetaData2_attribute_name_, NDR_POINTER_UNIQUE, "Pointer to Attribute Name (uint16)",hf_drsuapi_drsuapi_DsReplicaObjMetaData2_attribute_name);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaGetInfoRequest2_object_dn_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaObjMetaData2_attribute_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
        char *data;
 
-       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsReplicaGetInfoRequest2_object_dn, FALSE, &data);
+       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsReplicaObjMetaData2_attribute_name, FALSE, &data);
        proto_item_append_text(tree, ": %s", data);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaGetInfoRequest2_source_dsa_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaObjMetaData2_version(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaGetInfoRequest2_source_dsa_guid, NULL);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjMetaData2_version, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaGetInfoRequest2_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaObjMetaData2_originating_change_time(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaGetInfoRequest2_flags, 0);
+       offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjMetaData2_originating_change_time);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaGetInfoRequest2_attribute_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaObjMetaData2_originating_invocation_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaGetInfoRequest2_attribute_name_, NDR_POINTER_UNIQUE, "Pointer to Attribute Name (uint16)",hf_drsuapi_drsuapi_DsReplicaGetInfoRequest2_attribute_name);
+       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjMetaData2_originating_invocation_id, NULL);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaGetInfoRequest2_attribute_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaObjMetaData2_originating_usn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       char *data;
-
-       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsReplicaGetInfoRequest2_attribute_name, FALSE, &data);
-       proto_item_append_text(tree, ": %s", data);
+       offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjMetaData2_originating_usn, NULL);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaGetInfoRequest2_value_dn_str(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaObjMetaData2_local_usn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaGetInfoRequest2_value_dn_str_, NDR_POINTER_UNIQUE, "Pointer to Value Dn Str (uint16)",hf_drsuapi_drsuapi_DsReplicaGetInfoRequest2_value_dn_str);
+       offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjMetaData2_local_usn, NULL);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaGetInfoRequest2_value_dn_str_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaObjMetaData2_originating_dsa_dn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       char *data;
-
-       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsReplicaGetInfoRequest2_value_dn_str, FALSE, &data);
-       proto_item_append_text(tree, ": %s", data);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaObjMetaData2_originating_dsa_dn_, NDR_POINTER_UNIQUE, "Pointer to Originating Dsa Dn (uint16)",hf_drsuapi_drsuapi_DsReplicaObjMetaData2_originating_dsa_dn);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaGetInfoRequest2_enumeration_context(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaObjMetaData2_originating_dsa_dn_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaGetInfoRequest2_enumeration_context, 0);
+       char *data;
+
+       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsReplicaObjMetaData2_originating_dsa_dn, FALSE, &data);
+       proto_item_append_text(tree, ": %s", data);
 
        return offset;
 }
 
 int
-drsuapi_dissect_struct_DsReplicaGetInfoRequest2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_struct_DsReplicaObjMetaData2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
        proto_item *item = NULL;
        proto_tree *tree = NULL;
        int old_offset;
 
-       ALIGN_TO_5_BYTES;
+       ALIGN_TO_8_BYTES;
 
        old_offset = offset;
 
        if (parent_tree) {
                item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaGetInfoRequest2);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaObjMetaData2);
        }
 
-       offset = drsuapi_dissect_element_DsReplicaGetInfoRequest2_info_type(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaObjMetaData2_attribute_name(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaGetInfoRequest2_object_dn(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaObjMetaData2_version(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaGetInfoRequest2_source_dsa_guid(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaObjMetaData2_originating_change_time(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaGetInfoRequest2_flags(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaObjMetaData2_originating_invocation_id(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaGetInfoRequest2_attribute_name(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaObjMetaData2_originating_usn(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaGetInfoRequest2_value_dn_str(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaObjMetaData2_local_usn(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaGetInfoRequest2_enumeration_context(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaObjMetaData2_originating_dsa_dn(tvb, offset, pinfo, tree, di, drep);
 
 
        proto_item_set_len(item, offset-old_offset);
 
 
        if (di->call_data->flags & DCERPC_IS_NDR64) {
-               ALIGN_TO_5_BYTES;
+               ALIGN_TO_8_BYTES;
        }
 
        return offset;
 }
 
 
-/* IDL: [switch_type(drsuapi_DsReplicaGetInfoLevel)] union { */
-/* IDL: [case(DRSUAPI_DS_REPLICA_GET_INFO)] [case(DRSUAPI_DS_REPLICA_GET_INFO)] drsuapi_DsReplicaGetInfoRequest1 req1; */
-/* IDL: [case(DRSUAPI_DS_REPLICA_GET_INFO2)] [case(DRSUAPI_DS_REPLICA_GET_INFO2)] drsuapi_DsReplicaGetInfoRequest2 req2; */
+/* IDL: struct { */
+/* IDL:        uint32 count; */
+/* IDL:        uint32 enumeration_context; */
+/* IDL:        [size_is(count)] drsuapi_DsReplicaObjMetaData2 array[*]; */
 /* IDL: } */
 
 static int
-drsuapi_dissect_element_DsReplicaGetInfoRequest_req1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaObjMetaData2Ctr_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaGetInfoRequest1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaGetInfoRequest_req1,0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjMetaData2Ctr_count, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaGetInfoRequest_req2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaObjMetaData2Ctr_enumeration_context(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaGetInfoRequest2(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaGetInfoRequest_req2,0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjMetaData2Ctr_enumeration_context, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_DsReplicaGetInfoRequest(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_element_DsReplicaObjMetaData2Ctr_array(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaObjMetaData2Ctr_array_);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsReplicaObjMetaData2Ctr_array_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = drsuapi_dissect_struct_DsReplicaObjMetaData2(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaObjMetaData2Ctr_array,0);
+
+       return offset;
+}
+
+int
+drsuapi_dissect_struct_DsReplicaObjMetaData2Ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
        proto_item *item = NULL;
        proto_tree *tree = NULL;
        int old_offset;
-       guint32 level;
+
+       ALIGN_TO_8_BYTES;
 
        old_offset = offset;
+
        if (parent_tree) {
-               tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_DsReplicaGetInfoRequest, &item, "drsuapi_DsReplicaGetInfoRequest");
+               item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaObjMetaData2Ctr);
        }
 
-       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level);
-       ALIGN_TO_5_BYTES;
+       offset = drsuapi_dissect_element_DsReplicaObjMetaData2Ctr_count(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsReplicaObjMetaData2Ctr_enumeration_context(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsReplicaObjMetaData2Ctr_array(tvb, offset, pinfo, tree, di, drep);
 
-       switch(level) {
-               case DRSUAPI_DS_REPLICA_GET_INFO:
-                       offset = drsuapi_dissect_element_DsReplicaGetInfoRequest_req1(tvb, offset, pinfo, tree, di, drep);
-               break;
 
-               case DRSUAPI_DS_REPLICA_GET_INFO2:
-                       offset = drsuapi_dissect_element_DsReplicaGetInfoRequest_req2(tvb, offset, pinfo, tree, di, drep);
-               break;
-       }
        proto_item_set_len(item, offset-old_offset);
 
 
+       if (di->call_data->flags & DCERPC_IS_NDR64) {
+               ALIGN_TO_8_BYTES;
+       }
+
        return offset;
 }
 
+
 /* IDL: struct { */
-/* IDL:        [charset(UTF16)] [unique(1)] uint16 *naming_context_dn; */
-/* IDL:        [charset(UTF16)] [unique(1)] uint16 *source_dsa_obj_dn; */
-/* IDL:        [charset(UTF16)] [unique(1)] uint16 *source_dsa_address; */
-/* IDL:        [charset(UTF16)] [unique(1)] uint16 *transport_obj_dn; */
-/* IDL:        drsuapi_DrsOptions replica_flags; */
-/* IDL:        uint32 reserved; */
-/* IDL:        GUID naming_context_obj_guid; */
-/* IDL:        GUID source_dsa_obj_guid; */
-/* IDL:        GUID source_dsa_invocation_id; */
-/* IDL:        GUID transport_obj_guid; */
-/* IDL:        hyper tmp_highest_usn; */
-/* IDL:        hyper highest_usn; */
-/* IDL:        NTTIME last_success; */
-/* IDL:        NTTIME last_attempt; */
-/* IDL:        WERROR result_last_attempt; */
-/* IDL:        uint32 consecutive_sync_failures; */
+/* IDL:        [charset(UTF16)] [unique(1)] uint16 *attribute_name; */
+/* IDL:        [charset(UTF16)] [unique(1)] uint16 *object_dn; */
+/* IDL:        [value(ndr_size_DATA_BLOB(0,binary,0))] uint32 __ndr_size_binary; */
+/* IDL:        [unique(1)] DATA_BLOB *binary; */
+/* IDL:        NTTIME deleted; */
+/* IDL:        NTTIME created; */
+/* IDL:        uint32 version; */
+/* IDL:        NTTIME originating_change_time; */
+/* IDL:        GUID originating_invocation_id; */
+/* IDL:        hyper originating_usn; */
+/* IDL:        hyper local_usn; */
+/* IDL:        [charset(UTF16)] [unique(1)] uint16 *originating_dsa_dn; */
 /* IDL: } */
 
 static int
-drsuapi_dissect_element_DsReplicaNeighbour_naming_context_dn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaAttrValMetaData2_attribute_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaNeighbour_naming_context_dn_, NDR_POINTER_UNIQUE, "Pointer to Naming Context Dn (uint16)",hf_drsuapi_drsuapi_DsReplicaNeighbour_naming_context_dn);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaAttrValMetaData2_attribute_name_, NDR_POINTER_UNIQUE, "Pointer to Attribute Name (uint16)",hf_drsuapi_drsuapi_DsReplicaAttrValMetaData2_attribute_name);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaNeighbour_naming_context_dn_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaAttrValMetaData2_attribute_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
        char *data;
 
-       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsReplicaNeighbour_naming_context_dn, FALSE, &data);
+       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsReplicaAttrValMetaData2_attribute_name, FALSE, &data);
        proto_item_append_text(tree, ": %s", data);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaNeighbour_source_dsa_obj_dn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaAttrValMetaData2_object_dn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaNeighbour_source_dsa_obj_dn_, NDR_POINTER_UNIQUE, "Pointer to Source Dsa Obj Dn (uint16)",hf_drsuapi_drsuapi_DsReplicaNeighbour_source_dsa_obj_dn);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaAttrValMetaData2_object_dn_, NDR_POINTER_UNIQUE, "Pointer to Object Dn (uint16)",hf_drsuapi_drsuapi_DsReplicaAttrValMetaData2_object_dn);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaNeighbour_source_dsa_obj_dn_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaAttrValMetaData2_object_dn_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
        char *data;
 
-       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsReplicaNeighbour_source_dsa_obj_dn, FALSE, &data);
+       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsReplicaAttrValMetaData2_object_dn, FALSE, &data);
        proto_item_append_text(tree, ": %s", data);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaNeighbour_source_dsa_address(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaAttrValMetaData2___ndr_size_binary(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaNeighbour_source_dsa_address_, NDR_POINTER_UNIQUE, "Pointer to Source Dsa Address (uint16)",hf_drsuapi_drsuapi_DsReplicaNeighbour_source_dsa_address);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAttrValMetaData2___ndr_size_binary, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaNeighbour_source_dsa_address_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaAttrValMetaData2_binary(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       char *data;
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaAttrValMetaData2_binary_, NDR_POINTER_UNIQUE, "Pointer to Binary (DATA_BLOB)",hf_drsuapi_drsuapi_DsReplicaAttrValMetaData2_binary);
 
-       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsReplicaNeighbour_source_dsa_address, FALSE, &data);
-       proto_item_append_text(tree, ": %s", data);
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsReplicaAttrValMetaData2_binary_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_datablob(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAttrValMetaData2_binary, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaNeighbour_transport_obj_dn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaAttrValMetaData2_deleted(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaNeighbour_transport_obj_dn_, NDR_POINTER_UNIQUE, "Pointer to Transport Obj Dn (uint16)",hf_drsuapi_drsuapi_DsReplicaNeighbour_transport_obj_dn);
+       offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAttrValMetaData2_deleted);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaNeighbour_transport_obj_dn_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaAttrValMetaData2_created(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       char *data;
+       offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAttrValMetaData2_created);
 
-       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsReplicaNeighbour_transport_obj_dn, FALSE, &data);
-       proto_item_append_text(tree, ": %s", data);
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsReplicaAttrValMetaData2_version(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAttrValMetaData2_version, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaNeighbour_replica_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaAttrValMetaData2_originating_change_time(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_bitmap_DrsOptions(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaNeighbour_replica_flags, 0);
+       offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAttrValMetaData2_originating_change_time);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaNeighbour_reserved(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaAttrValMetaData2_originating_invocation_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaNeighbour_reserved, 0);
+       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAttrValMetaData2_originating_invocation_id, NULL);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsReplicaAttrValMetaData2_originating_usn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAttrValMetaData2_originating_usn, NULL);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsReplicaAttrValMetaData2_local_usn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAttrValMetaData2_local_usn, NULL);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsReplicaAttrValMetaData2_originating_dsa_dn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaAttrValMetaData2_originating_dsa_dn_, NDR_POINTER_UNIQUE, "Pointer to Originating Dsa Dn (uint16)",hf_drsuapi_drsuapi_DsReplicaAttrValMetaData2_originating_dsa_dn);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsReplicaAttrValMetaData2_originating_dsa_dn_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       char *data;
+
+       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsReplicaAttrValMetaData2_originating_dsa_dn, FALSE, &data);
+       proto_item_append_text(tree, ": %s", data);
+
+       return offset;
+}
+
+int
+drsuapi_dissect_struct_DsReplicaAttrValMetaData2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+{
+       proto_item *item = NULL;
+       proto_tree *tree = NULL;
+       int old_offset;
+
+       ALIGN_TO_8_BYTES;
+
+       old_offset = offset;
+
+       if (parent_tree) {
+               item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaAttrValMetaData2);
+       }
+
+       offset = drsuapi_dissect_element_DsReplicaAttrValMetaData2_attribute_name(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsReplicaAttrValMetaData2_object_dn(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsReplicaAttrValMetaData2___ndr_size_binary(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsReplicaAttrValMetaData2_binary(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsReplicaAttrValMetaData2_deleted(tvb, offset, pinfo, tree, di, drep);
 
-       return offset;
-}
+       offset = drsuapi_dissect_element_DsReplicaAttrValMetaData2_created(tvb, offset, pinfo, tree, di, drep);
 
-static int
-drsuapi_dissect_element_DsReplicaNeighbour_naming_context_obj_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaNeighbour_naming_context_obj_guid, NULL);
+       offset = drsuapi_dissect_element_DsReplicaAttrValMetaData2_version(tvb, offset, pinfo, tree, di, drep);
 
-       return offset;
-}
+       offset = drsuapi_dissect_element_DsReplicaAttrValMetaData2_originating_change_time(tvb, offset, pinfo, tree, di, drep);
 
-static int
-drsuapi_dissect_element_DsReplicaNeighbour_source_dsa_obj_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaNeighbour_source_dsa_obj_guid, NULL);
+       offset = drsuapi_dissect_element_DsReplicaAttrValMetaData2_originating_invocation_id(tvb, offset, pinfo, tree, di, drep);
 
-       return offset;
-}
+       offset = drsuapi_dissect_element_DsReplicaAttrValMetaData2_originating_usn(tvb, offset, pinfo, tree, di, drep);
 
-static int
-drsuapi_dissect_element_DsReplicaNeighbour_source_dsa_invocation_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaNeighbour_source_dsa_invocation_id, NULL);
+       offset = drsuapi_dissect_element_DsReplicaAttrValMetaData2_local_usn(tvb, offset, pinfo, tree, di, drep);
 
-       return offset;
-}
+       offset = drsuapi_dissect_element_DsReplicaAttrValMetaData2_originating_dsa_dn(tvb, offset, pinfo, tree, di, drep);
 
-static int
-drsuapi_dissect_element_DsReplicaNeighbour_transport_obj_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaNeighbour_transport_obj_guid, NULL);
 
-       return offset;
-}
+       proto_item_set_len(item, offset-old_offset);
 
-static int
-drsuapi_dissect_element_DsReplicaNeighbour_tmp_highest_usn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaNeighbour_tmp_highest_usn, NULL);
+
+       if (di->call_data->flags & DCERPC_IS_NDR64) {
+               ALIGN_TO_8_BYTES;
+       }
 
        return offset;
 }
 
-static int
-drsuapi_dissect_element_DsReplicaNeighbour_highest_usn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaNeighbour_highest_usn, NULL);
 
-       return offset;
-}
+/* IDL: struct { */
+/* IDL:        uint32 count; */
+/* IDL:        uint32 enumeration_context; */
+/* IDL:        [size_is(count)] drsuapi_DsReplicaAttrValMetaData2 array[*]; */
+/* IDL: } */
 
 static int
-drsuapi_dissect_element_DsReplicaNeighbour_last_success(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaAttrValMetaData2Ctr_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaNeighbour_last_success);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAttrValMetaData2Ctr_count, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaNeighbour_last_attempt(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaAttrValMetaData2Ctr_enumeration_context(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaNeighbour_last_attempt);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAttrValMetaData2Ctr_enumeration_context, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaNeighbour_result_last_attempt(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaAttrValMetaData2Ctr_array(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaNeighbour_result_last_attempt, 0);
+       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaAttrValMetaData2Ctr_array_);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaNeighbour_consecutive_sync_failures(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaAttrValMetaData2Ctr_array_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaNeighbour_consecutive_sync_failures, 0);
+       offset = drsuapi_dissect_struct_DsReplicaAttrValMetaData2(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaAttrValMetaData2Ctr_array,0);
 
        return offset;
 }
 
 int
-drsuapi_dissect_struct_DsReplicaNeighbour(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_struct_DsReplicaAttrValMetaData2Ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
        proto_item *item = NULL;
        proto_tree *tree = NULL;
@@ -15061,40 +17923,14 @@ drsuapi_dissect_struct_DsReplicaNeighbour(tvbuff_t *tvb _U_, int offset _U_, pac
 
        if (parent_tree) {
                item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaNeighbour);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaAttrValMetaData2Ctr);
        }
 
-       offset = drsuapi_dissect_element_DsReplicaNeighbour_naming_context_dn(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsReplicaNeighbour_source_dsa_obj_dn(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsReplicaNeighbour_source_dsa_address(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsReplicaNeighbour_transport_obj_dn(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsReplicaNeighbour_replica_flags(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsReplicaNeighbour_reserved(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsReplicaNeighbour_naming_context_obj_guid(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsReplicaNeighbour_source_dsa_obj_guid(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsReplicaNeighbour_source_dsa_invocation_id(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsReplicaNeighbour_transport_obj_guid(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsReplicaNeighbour_tmp_highest_usn(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsReplicaNeighbour_highest_usn(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsReplicaNeighbour_last_success(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsReplicaNeighbour_last_attempt(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaAttrValMetaData2Ctr_count(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaNeighbour_result_last_attempt(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaAttrValMetaData2Ctr_enumeration_context(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaNeighbour_consecutive_sync_failures(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaAttrValMetaData2Ctr_array(tvb, offset, pinfo, tree, di, drep);
 
 
        proto_item_set_len(item, offset-old_offset);
@@ -15109,45 +17945,73 @@ drsuapi_dissect_struct_DsReplicaNeighbour(tvbuff_t *tvb _U_, int offset _U_, pac
 
 
 /* IDL: struct { */
-/* IDL:        uint32 count; */
-/* IDL:        uint32 reserved; */
-/* IDL:        [size_is(count)] drsuapi_DsReplicaNeighbour array[*]; */
+/* IDL:        hyper u1; */
+/* IDL:        uint32 u2; */
+/* IDL:        uint32 u3; */
+/* IDL:        GUID bind_guid; */
+/* IDL:        NTTIME_1sec bind_time; */
+/* IDL:        [flag(LIBNDR_FLAG_BIGENDIAN)] ipv4address client_ip_address; */
+/* IDL:        uint32 u5; */
 /* IDL: } */
 
 static int
-drsuapi_dissect_element_DsReplicaNeighbourCtr_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaConnection04_u1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaNeighbourCtr_count, 0);
+       offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaConnection04_u1, NULL);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaNeighbourCtr_reserved(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaConnection04_u2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaNeighbourCtr_reserved, 0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaConnection04_u2, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaNeighbourCtr_array(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaConnection04_u3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaNeighbourCtr_array_);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaConnection04_u3, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaNeighbourCtr_array_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaConnection04_bind_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaNeighbour(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaNeighbourCtr_array,0);
+       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaConnection04_bind_guid, NULL);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsReplicaConnection04_bind_time(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaConnection04_bind_time);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsReplicaConnection04_client_ip_address(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       proto_tree_add_item(tree, hf_drsuapi_drsuapi_DsReplicaConnection04_client_ip_address, tvb, offset, 4, ENC_BIG_ENDIAN); offset += 4;
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsReplicaConnection04_u5(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaConnection04_u5, 0);
 
        return offset;
 }
 
 int
-drsuapi_dissect_struct_DsReplicaNeighbourCtr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_struct_DsReplicaConnection04(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
        proto_item *item = NULL;
        proto_tree *tree = NULL;
@@ -15159,14 +18023,22 @@ drsuapi_dissect_struct_DsReplicaNeighbourCtr(tvbuff_t *tvb _U_, int offset _U_,
 
        if (parent_tree) {
                item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaNeighbourCtr);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaConnection04);
        }
 
-       offset = drsuapi_dissect_element_DsReplicaNeighbourCtr_count(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaConnection04_u1(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaNeighbourCtr_reserved(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaConnection04_u2(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaNeighbourCtr_array(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaConnection04_u3(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsReplicaConnection04_bind_guid(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsReplicaConnection04_bind_time(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsReplicaConnection04_client_ip_address(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsReplicaConnection04_u5(tvb, offset, pinfo, tree, di, drep);
 
 
        proto_item_set_len(item, offset-old_offset);
@@ -15181,45 +18053,45 @@ drsuapi_dissect_struct_DsReplicaNeighbourCtr(tvbuff_t *tvb _U_, int offset _U_,
 
 
 /* IDL: struct { */
-/* IDL:        uint32 count; */
+/* IDL:        [range(0,10000)] uint32 count; */
 /* IDL:        uint32 reserved; */
-/* IDL:        [size_is(count)] drsuapi_DsReplicaCursor array[*]; */
+/* IDL:        [size_is(count)] drsuapi_DsReplicaConnection04 array[*]; */
 /* IDL: } */
 
 static int
-drsuapi_dissect_element_DsReplicaCursorCtr_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaConnection04Ctr_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaCursorCtr_count, 0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaConnection04Ctr_count, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaCursorCtr_reserved(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaConnection04Ctr_reserved(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaCursorCtr_reserved, 0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaConnection04Ctr_reserved, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaCursorCtr_array(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaConnection04Ctr_array(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaCursorCtr_array_);
+       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaConnection04Ctr_array_);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaCursorCtr_array_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaConnection04Ctr_array_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaCursor(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaCursorCtr_array,0);
+       offset = drsuapi_dissect_struct_DsReplicaConnection04(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaConnection04Ctr_array,0);
 
        return offset;
 }
 
 int
-drsuapi_dissect_struct_DsReplicaCursorCtr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_struct_DsReplicaConnection04Ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
        proto_item *item = NULL;
        proto_tree *tree = NULL;
@@ -15231,14 +18103,14 @@ drsuapi_dissect_struct_DsReplicaCursorCtr(tvbuff_t *tvb _U_, int offset _U_, pac
 
        if (parent_tree) {
                item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaCursorCtr);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaConnection04Ctr);
        }
 
-       offset = drsuapi_dissect_element_DsReplicaCursorCtr_count(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaConnection04Ctr_count(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaCursorCtr_reserved(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaConnection04Ctr_reserved(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaCursorCtr_array(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaConnection04Ctr_array(tvb, offset, pinfo, tree, di, drep);
 
 
        proto_item_set_len(item, offset-old_offset);
@@ -15253,75 +18125,93 @@ drsuapi_dissect_struct_DsReplicaCursorCtr(tvbuff_t *tvb _U_, int offset _U_, pac
 
 
 /* IDL: struct { */
-/* IDL:        [charset(UTF16)] [unique(1)] uint16 *attribute_name; */
-/* IDL:        uint32 version; */
-/* IDL:        NTTIME originating_change_time; */
-/* IDL:        GUID originating_invocation_id; */
-/* IDL:        hyper originating_usn; */
-/* IDL:        hyper local_usn; */
+/* IDL:        [charset(UTF16)] [unique(1)] uint16 *str1; */
+/* IDL:        uint32 u1; */
+/* IDL:        uint32 u2; */
+/* IDL:        uint32 u3; */
+/* IDL:        uint32 u4; */
+/* IDL:        uint32 u5; */
+/* IDL:        hyper u6; */
+/* IDL:        uint32 u7; */
 /* IDL: } */
 
 static int
-drsuapi_dissect_element_DsReplicaObjMetaData_attribute_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplica06_str1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaObjMetaData_attribute_name_, NDR_POINTER_UNIQUE, "Pointer to Attribute Name (uint16)",hf_drsuapi_drsuapi_DsReplicaObjMetaData_attribute_name);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplica06_str1_, NDR_POINTER_UNIQUE, "Pointer to Str1 (uint16)",hf_drsuapi_drsuapi_DsReplica06_str1);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaObjMetaData_attribute_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplica06_str1_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
        char *data;
 
-       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsReplicaObjMetaData_attribute_name, FALSE, &data);
+       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsReplica06_str1, FALSE, &data);
        proto_item_append_text(tree, ": %s", data);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaObjMetaData_version(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplica06_u1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjMetaData_version, 0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplica06_u1, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaObjMetaData_originating_change_time(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplica06_u2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjMetaData_originating_change_time);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplica06_u2, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaObjMetaData_originating_invocation_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplica06_u3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjMetaData_originating_invocation_id, NULL);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplica06_u3, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaObjMetaData_originating_usn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplica06_u4(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplica06_u4, 0);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsReplica06_u5(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplica06_u5, 0);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsReplica06_u6(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjMetaData_originating_usn, NULL);
+       offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplica06_u6, NULL);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaObjMetaData_local_usn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplica06_u7(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjMetaData_local_usn, NULL);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplica06_u7, 0);
 
        return offset;
 }
 
 int
-drsuapi_dissect_struct_DsReplicaObjMetaData(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_struct_DsReplica06(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
        proto_item *item = NULL;
        proto_tree *tree = NULL;
@@ -15333,20 +18223,24 @@ drsuapi_dissect_struct_DsReplicaObjMetaData(tvbuff_t *tvb _U_, int offset _U_, p
 
        if (parent_tree) {
                item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaObjMetaData);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplica06);
        }
 
-       offset = drsuapi_dissect_element_DsReplicaObjMetaData_attribute_name(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplica06_str1(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaObjMetaData_version(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplica06_u1(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaObjMetaData_originating_change_time(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplica06_u2(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaObjMetaData_originating_invocation_id(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplica06_u3(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaObjMetaData_originating_usn(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplica06_u4(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaObjMetaData_local_usn(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplica06_u5(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsReplica06_u6(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsReplica06_u7(tvb, offset, pinfo, tree, di, drep);
 
 
        proto_item_set_len(item, offset-old_offset);
@@ -15361,45 +18255,45 @@ drsuapi_dissect_struct_DsReplicaObjMetaData(tvbuff_t *tvb _U_, int offset _U_, p
 
 
 /* IDL: struct { */
-/* IDL:        uint32 count; */
+/* IDL:        [range(0,256)] uint32 count; */
 /* IDL:        uint32 reserved; */
-/* IDL:        [size_is(count)] drsuapi_DsReplicaObjMetaData array[*]; */
+/* IDL:        [size_is(count)] drsuapi_DsReplica06 array[*]; */
 /* IDL: } */
 
 static int
-drsuapi_dissect_element_DsReplicaObjMetaDataCtr_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplica06Ctr_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjMetaDataCtr_count, 0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplica06Ctr_count, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaObjMetaDataCtr_reserved(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplica06Ctr_reserved(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjMetaDataCtr_reserved, 0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplica06Ctr_reserved, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaObjMetaDataCtr_array(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplica06Ctr_array(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaObjMetaDataCtr_array_);
+       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplica06Ctr_array_);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaObjMetaDataCtr_array_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplica06Ctr_array_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaObjMetaData(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaObjMetaDataCtr_array,0);
+       offset = drsuapi_dissect_struct_DsReplica06(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplica06Ctr_array,0);
 
        return offset;
 }
 
 int
-drsuapi_dissect_struct_DsReplicaObjMetaDataCtr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_struct_DsReplica06Ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
        proto_item *item = NULL;
        proto_tree *tree = NULL;
@@ -15411,14 +18305,14 @@ drsuapi_dissect_struct_DsReplicaObjMetaDataCtr(tvbuff_t *tvb _U_, int offset _U_
 
        if (parent_tree) {
                item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaObjMetaDataCtr);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplica06Ctr);
        }
 
-       offset = drsuapi_dissect_element_DsReplicaObjMetaDataCtr_count(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplica06Ctr_count(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaObjMetaDataCtr_reserved(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplica06Ctr_reserved(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaObjMetaDataCtr_array(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsReplica06Ctr_array(tvb, offset, pinfo, tree, di, drep);
 
 
        proto_item_set_len(item, offset-old_offset);
@@ -15432,412 +18326,394 @@ drsuapi_dissect_struct_DsReplicaObjMetaDataCtr(tvbuff_t *tvb _U_, int offset _U_
 }
 
 
-/* IDL: struct { */
-/* IDL:        [charset(UTF16)] [unique(1)] uint16 *dsa_obj_dn; */
-/* IDL:        GUID dsa_obj_guid; */
-/* IDL:        NTTIME first_failure; */
-/* IDL:        uint32 num_failures; */
-/* IDL:        WERROR last_result; */
+/* IDL: [switch_type(drsuapi_DsReplicaInfoType)] union { */
+/* IDL: [case(DRSUAPI_DS_REPLICA_INFO_NEIGHBORS)] [case(DRSUAPI_DS_REPLICA_INFO_NEIGHBORS)] [unique(1)] drsuapi_DsReplicaNeighbourCtr *neighbours; */
+/* IDL: [case(DRSUAPI_DS_REPLICA_INFO_CURSORS)] [case(DRSUAPI_DS_REPLICA_INFO_CURSORS)] [unique(1)] drsuapi_DsReplicaCursorCtr *cursors; */
+/* IDL: [case(DRSUAPI_DS_REPLICA_INFO_OBJ_METADATA)] [case(DRSUAPI_DS_REPLICA_INFO_OBJ_METADATA)] [unique(1)] drsuapi_DsReplicaObjMetaDataCtr *objmetadata; */
+/* IDL: [case(DRSUAPI_DS_REPLICA_INFO_KCC_DSA_CONNECT_FAILURES)] [case(DRSUAPI_DS_REPLICA_INFO_KCC_DSA_CONNECT_FAILURES)] [unique(1)] drsuapi_DsReplicaKccDsaFailuresCtr *connectfailures; */
+/* IDL: [case(DRSUAPI_DS_REPLICA_INFO_KCC_DSA_LINK_FAILURES)] [case(DRSUAPI_DS_REPLICA_INFO_KCC_DSA_LINK_FAILURES)] [unique(1)] drsuapi_DsReplicaKccDsaFailuresCtr *linkfailures; */
+/* IDL: [case(DRSUAPI_DS_REPLICA_INFO_PENDING_OPS)] [case(DRSUAPI_DS_REPLICA_INFO_PENDING_OPS)] [unique(1)] drsuapi_DsReplicaOpCtr *pendingops; */
+/* IDL: [case(DRSUAPI_DS_REPLICA_INFO_ATTRIBUTE_VALUE_METADATA)] [case(DRSUAPI_DS_REPLICA_INFO_ATTRIBUTE_VALUE_METADATA)] [unique(1)] drsuapi_DsReplicaAttrValMetaDataCtr *attrvalmetadata; */
+/* IDL: [case(DRSUAPI_DS_REPLICA_INFO_CURSORS2)] [case(DRSUAPI_DS_REPLICA_INFO_CURSORS2)] [unique(1)] drsuapi_DsReplicaCursor2Ctr *cursors2; */
+/* IDL: [case(DRSUAPI_DS_REPLICA_INFO_CURSORS3)] [case(DRSUAPI_DS_REPLICA_INFO_CURSORS3)] [unique(1)] drsuapi_DsReplicaCursor3Ctr *cursors3; */
+/* IDL: [case(DRSUAPI_DS_REPLICA_INFO_OBJ_METADATA2)] [case(DRSUAPI_DS_REPLICA_INFO_OBJ_METADATA2)] [unique(1)] drsuapi_DsReplicaObjMetaData2Ctr *objmetadata2; */
+/* IDL: [case(DRSUAPI_DS_REPLICA_INFO_ATTRIBUTE_VALUE_METADATA2)] [case(DRSUAPI_DS_REPLICA_INFO_ATTRIBUTE_VALUE_METADATA2)] [unique(1)] drsuapi_DsReplicaAttrValMetaData2Ctr *attrvalmetadata2; */
+/* IDL: [case(DRSUAPI_DS_REPLICA_INFO_REPSTO)] [case(DRSUAPI_DS_REPLICA_INFO_REPSTO)] [unique(1)] drsuapi_DsReplicaNeighbourCtr *repsto; */
+/* IDL: [case(DRSUAPI_DS_REPLICA_INFO_CLIENT_CONTEXTS)] [case(DRSUAPI_DS_REPLICA_INFO_CLIENT_CONTEXTS)] [unique(1)] drsuapi_DsReplicaConnection04Ctr *clientctx; */
+/* IDL: [case(DRSUAPI_DS_REPLICA_INFO_UPTODATE_VECTOR_V1)] [case(DRSUAPI_DS_REPLICA_INFO_UPTODATE_VECTOR_V1)] [unique(1)] drsuapi_DsReplicaCursorCtrEx *udv1; */
+/* IDL: [case(DRSUAPI_DS_REPLICA_INFO_SERVER_OUTGOING_CALLS)] [case(DRSUAPI_DS_REPLICA_INFO_SERVER_OUTGOING_CALLS)] [unique(1)] drsuapi_DsReplica06Ctr *srvoutgoingcalls; */
 /* IDL: } */
 
 static int
-drsuapi_dissect_element_DsReplicaKccDsaFailure_dsa_obj_dn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaInfo_neighbours(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaKccDsaFailure_dsa_obj_dn_, NDR_POINTER_UNIQUE, "Pointer to Dsa Obj Dn (uint16)",hf_drsuapi_drsuapi_DsReplicaKccDsaFailure_dsa_obj_dn);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaInfo_neighbours_, NDR_POINTER_UNIQUE, "Pointer to Neighbours (drsuapi_DsReplicaNeighbourCtr)",hf_drsuapi_drsuapi_DsReplicaInfo_neighbours);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaKccDsaFailure_dsa_obj_dn_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaInfo_neighbours_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       char *data;
-
-       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsReplicaKccDsaFailure_dsa_obj_dn, FALSE, &data);
-       proto_item_append_text(tree, ": %s", data);
+       offset = drsuapi_dissect_struct_DsReplicaNeighbourCtr(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaInfo_neighbours,0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaKccDsaFailure_dsa_obj_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaInfo_cursors(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaKccDsaFailure_dsa_obj_guid, NULL);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaInfo_cursors_, NDR_POINTER_UNIQUE, "Pointer to Cursors (drsuapi_DsReplicaCursorCtr)",hf_drsuapi_drsuapi_DsReplicaInfo_cursors);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaKccDsaFailure_first_failure(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaInfo_cursors_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaKccDsaFailure_first_failure);
+       offset = drsuapi_dissect_struct_DsReplicaCursorCtr(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaInfo_cursors,0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaKccDsaFailure_num_failures(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaInfo_objmetadata(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaKccDsaFailure_num_failures, 0);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaInfo_objmetadata_, NDR_POINTER_UNIQUE, "Pointer to Objmetadata (drsuapi_DsReplicaObjMetaDataCtr)",hf_drsuapi_drsuapi_DsReplicaInfo_objmetadata);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaKccDsaFailure_last_result(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaInfo_objmetadata_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaKccDsaFailure_last_result, 0);
+       offset = drsuapi_dissect_struct_DsReplicaObjMetaDataCtr(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaInfo_objmetadata,0);
 
        return offset;
 }
 
-int
-drsuapi_dissect_struct_DsReplicaKccDsaFailure(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+static int
+drsuapi_dissect_element_DsReplicaInfo_connectfailures(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       proto_item *item = NULL;
-       proto_tree *tree = NULL;
-       int old_offset;
-
-       ALIGN_TO_5_BYTES;
-
-       old_offset = offset;
-
-       if (parent_tree) {
-               item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaKccDsaFailure);
-       }
-
-       offset = drsuapi_dissect_element_DsReplicaKccDsaFailure_dsa_obj_dn(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsReplicaKccDsaFailure_dsa_obj_guid(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsReplicaKccDsaFailure_first_failure(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsReplicaKccDsaFailure_num_failures(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsReplicaKccDsaFailure_last_result(tvb, offset, pinfo, tree, di, drep);
-
-
-       proto_item_set_len(item, offset-old_offset);
-
-
-       if (di->call_data->flags & DCERPC_IS_NDR64) {
-               ALIGN_TO_5_BYTES;
-       }
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaInfo_connectfailures_, NDR_POINTER_UNIQUE, "Pointer to Connectfailures (drsuapi_DsReplicaKccDsaFailuresCtr)",hf_drsuapi_drsuapi_DsReplicaInfo_connectfailures);
 
        return offset;
 }
 
-
-/* IDL: struct { */
-/* IDL:        uint32 count; */
-/* IDL:        uint32 reserved; */
-/* IDL:        [size_is(count)] drsuapi_DsReplicaKccDsaFailure array[*]; */
-/* IDL: } */
-
 static int
-drsuapi_dissect_element_DsReplicaKccDsaFailuresCtr_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaInfo_connectfailures_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaKccDsaFailuresCtr_count, 0);
+       offset = drsuapi_dissect_struct_DsReplicaKccDsaFailuresCtr(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaInfo_connectfailures,0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaKccDsaFailuresCtr_reserved(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaInfo_linkfailures(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaKccDsaFailuresCtr_reserved, 0);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaInfo_linkfailures_, NDR_POINTER_UNIQUE, "Pointer to Linkfailures (drsuapi_DsReplicaKccDsaFailuresCtr)",hf_drsuapi_drsuapi_DsReplicaInfo_linkfailures);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaKccDsaFailuresCtr_array(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaInfo_linkfailures_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaKccDsaFailuresCtr_array_);
+       offset = drsuapi_dissect_struct_DsReplicaKccDsaFailuresCtr(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaInfo_linkfailures,0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaKccDsaFailuresCtr_array_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaInfo_pendingops(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaKccDsaFailure(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaKccDsaFailuresCtr_array,0);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaInfo_pendingops_, NDR_POINTER_UNIQUE, "Pointer to Pendingops (drsuapi_DsReplicaOpCtr)",hf_drsuapi_drsuapi_DsReplicaInfo_pendingops);
 
        return offset;
 }
 
-int
-drsuapi_dissect_struct_DsReplicaKccDsaFailuresCtr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+static int
+drsuapi_dissect_element_DsReplicaInfo_pendingops_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       proto_item *item = NULL;
-       proto_tree *tree = NULL;
-       int old_offset;
-
-       ALIGN_TO_5_BYTES;
-
-       old_offset = offset;
-
-       if (parent_tree) {
-               item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaKccDsaFailuresCtr);
-       }
-
-       offset = drsuapi_dissect_element_DsReplicaKccDsaFailuresCtr_count(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsReplicaKccDsaFailuresCtr_reserved(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsReplicaKccDsaFailuresCtr_array(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_struct_DsReplicaOpCtr(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaInfo_pendingops,0);
 
+       return offset;
+}
 
-       proto_item_set_len(item, offset-old_offset);
+static int
+drsuapi_dissect_element_DsReplicaInfo_attrvalmetadata(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaInfo_attrvalmetadata_, NDR_POINTER_UNIQUE, "Pointer to Attrvalmetadata (drsuapi_DsReplicaAttrValMetaDataCtr)",hf_drsuapi_drsuapi_DsReplicaInfo_attrvalmetadata);
 
+       return offset;
+}
 
-       if (di->call_data->flags & DCERPC_IS_NDR64) {
-               ALIGN_TO_5_BYTES;
-       }
+static int
+drsuapi_dissect_element_DsReplicaInfo_attrvalmetadata_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = drsuapi_dissect_struct_DsReplicaAttrValMetaDataCtr(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaInfo_attrvalmetadata,0);
 
        return offset;
 }
 
+static int
+drsuapi_dissect_element_DsReplicaInfo_cursors2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaInfo_cursors2_, NDR_POINTER_UNIQUE, "Pointer to Cursors2 (drsuapi_DsReplicaCursor2Ctr)",hf_drsuapi_drsuapi_DsReplicaInfo_cursors2);
 
-/* IDL: enum { */
-/* IDL:        DRSUAPI_DS_REPLICA_OP_TYPE_SYNC=0, */
-/* IDL:        DRSUAPI_DS_REPLICA_OP_TYPE_ADD=1, */
-/* IDL:        DRSUAPI_DS_REPLICA_OP_TYPE_DELETE=2, */
-/* IDL:        DRSUAPI_DS_REPLICA_OP_TYPE_MODIFY=3, */
-/* IDL:        DRSUAPI_DS_REPLICA_OP_TYPE_UPDATE_REFS=4, */
-/* IDL: } */
+       return offset;
+}
 
-int
-drsuapi_dissect_enum_DsReplicaOpType(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint1632 *param _U_)
+static int
+drsuapi_dissect_element_DsReplicaInfo_cursors2_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       guint1632 parameter=0;
-       if (param) {
-               parameter = *param;
-       }
-       offset = dissect_ndr_uint1632(tvb, offset, pinfo, tree, di, drep, hf_index, &parameter);
-       if (param) {
-               *param = parameter;
-       }
+       offset = drsuapi_dissect_struct_DsReplicaCursor2Ctr(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaInfo_cursors2,0);
+
        return offset;
 }
 
+static int
+drsuapi_dissect_element_DsReplicaInfo_cursors3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaInfo_cursors3_, NDR_POINTER_UNIQUE, "Pointer to Cursors3 (drsuapi_DsReplicaCursor3Ctr)",hf_drsuapi_drsuapi_DsReplicaInfo_cursors3);
 
-/* IDL: struct { */
-/* IDL:        NTTIME operation_start; */
-/* IDL:        uint32 serial_num; */
-/* IDL:        uint32 priority; */
-/* IDL:        drsuapi_DsReplicaOpType operation_type; */
-/* IDL:        drsuapi_DrsOptions options; */
-/* IDL:        [charset(UTF16)] [unique(1)] uint16 *nc_dn; */
-/* IDL:        [charset(UTF16)] [unique(1)] uint16 *remote_dsa_obj_dn; */
-/* IDL:        [charset(UTF16)] [unique(1)] uint16 *remote_dsa_address; */
-/* IDL:        GUID nc_obj_guid; */
-/* IDL:        GUID remote_dsa_obj_guid; */
-/* IDL: } */
+       return offset;
+}
 
 static int
-drsuapi_dissect_element_DsReplicaOp_operation_start(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaInfo_cursors3_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaOp_operation_start);
+       offset = drsuapi_dissect_struct_DsReplicaCursor3Ctr(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaInfo_cursors3,0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaOp_serial_num(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaInfo_objmetadata2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaOp_serial_num, 0);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaInfo_objmetadata2_, NDR_POINTER_UNIQUE, "Pointer to Objmetadata2 (drsuapi_DsReplicaObjMetaData2Ctr)",hf_drsuapi_drsuapi_DsReplicaInfo_objmetadata2);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaOp_priority(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaInfo_objmetadata2_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaOp_priority, 0);
+       offset = drsuapi_dissect_struct_DsReplicaObjMetaData2Ctr(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaInfo_objmetadata2,0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaOp_operation_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaInfo_attrvalmetadata2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_enum_DsReplicaOpType(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaOp_operation_type, 0);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaInfo_attrvalmetadata2_, NDR_POINTER_UNIQUE, "Pointer to Attrvalmetadata2 (drsuapi_DsReplicaAttrValMetaData2Ctr)",hf_drsuapi_drsuapi_DsReplicaInfo_attrvalmetadata2);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaOp_options(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaInfo_attrvalmetadata2_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_bitmap_DrsOptions(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaOp_options, 0);
+       offset = drsuapi_dissect_struct_DsReplicaAttrValMetaData2Ctr(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaInfo_attrvalmetadata2,0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaOp_nc_dn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaInfo_repsto(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaOp_nc_dn_, NDR_POINTER_UNIQUE, "Pointer to Nc Dn (uint16)",hf_drsuapi_drsuapi_DsReplicaOp_nc_dn);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaInfo_repsto_, NDR_POINTER_UNIQUE, "Pointer to Repsto (drsuapi_DsReplicaNeighbourCtr)",hf_drsuapi_drsuapi_DsReplicaInfo_repsto);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaOp_nc_dn_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaInfo_repsto_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       char *data;
-
-       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsReplicaOp_nc_dn, FALSE, &data);
-       proto_item_append_text(tree, ": %s", data);
+       offset = drsuapi_dissect_struct_DsReplicaNeighbourCtr(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaInfo_repsto,0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaOp_remote_dsa_obj_dn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaInfo_clientctx(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaOp_remote_dsa_obj_dn_, NDR_POINTER_UNIQUE, "Pointer to Remote Dsa Obj Dn (uint16)",hf_drsuapi_drsuapi_DsReplicaOp_remote_dsa_obj_dn);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaInfo_clientctx_, NDR_POINTER_UNIQUE, "Pointer to Clientctx (drsuapi_DsReplicaConnection04Ctr)",hf_drsuapi_drsuapi_DsReplicaInfo_clientctx);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaOp_remote_dsa_obj_dn_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaInfo_clientctx_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       char *data;
-
-       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsReplicaOp_remote_dsa_obj_dn, FALSE, &data);
-       proto_item_append_text(tree, ": %s", data);
+       offset = drsuapi_dissect_struct_DsReplicaConnection04Ctr(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaInfo_clientctx,0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaOp_remote_dsa_address(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaInfo_udv1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaOp_remote_dsa_address_, NDR_POINTER_UNIQUE, "Pointer to Remote Dsa Address (uint16)",hf_drsuapi_drsuapi_DsReplicaOp_remote_dsa_address);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaInfo_udv1_, NDR_POINTER_UNIQUE, "Pointer to Udv1 (drsuapi_DsReplicaCursorCtrEx)",hf_drsuapi_drsuapi_DsReplicaInfo_udv1);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaOp_remote_dsa_address_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaInfo_udv1_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       char *data;
-
-       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsReplicaOp_remote_dsa_address, FALSE, &data);
-       proto_item_append_text(tree, ": %s", data);
+       offset = drsuapi_dissect_struct_DsReplicaCursorCtrEx(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaInfo_udv1,0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaOp_nc_obj_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaInfo_srvoutgoingcalls(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaOp_nc_obj_guid, NULL);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaInfo_srvoutgoingcalls_, NDR_POINTER_UNIQUE, "Pointer to Srvoutgoingcalls (drsuapi_DsReplica06Ctr)",hf_drsuapi_drsuapi_DsReplicaInfo_srvoutgoingcalls);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaOp_remote_dsa_obj_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaInfo_srvoutgoingcalls_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaOp_remote_dsa_obj_guid, NULL);
+       offset = drsuapi_dissect_struct_DsReplica06Ctr(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaInfo_srvoutgoingcalls,0);
 
        return offset;
 }
 
-int
-drsuapi_dissect_struct_DsReplicaOp(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+static int
+drsuapi_dissect_DsReplicaInfo(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
        proto_item *item = NULL;
        proto_tree *tree = NULL;
        int old_offset;
-
-       ALIGN_TO_5_BYTES;
+       guint32 level;
 
        old_offset = offset;
-
        if (parent_tree) {
-               item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaOp);
+               tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_DsReplicaInfo, &item, "drsuapi_DsReplicaInfo");
        }
 
-       offset = drsuapi_dissect_element_DsReplicaOp_operation_start(tvb, offset, pinfo, tree, di, drep);
+       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level);
+       ALIGN_TO_5_BYTES;
 
-       offset = drsuapi_dissect_element_DsReplicaOp_serial_num(tvb, offset, pinfo, tree, di, drep);
+       switch(level) {
+               case DRSUAPI_DS_REPLICA_INFO_NEIGHBORS:
+                       offset = drsuapi_dissect_element_DsReplicaInfo_neighbours(tvb, offset, pinfo, tree, di, drep);
+               break;
 
-       offset = drsuapi_dissect_element_DsReplicaOp_priority(tvb, offset, pinfo, tree, di, drep);
+               case DRSUAPI_DS_REPLICA_INFO_CURSORS:
+                       offset = drsuapi_dissect_element_DsReplicaInfo_cursors(tvb, offset, pinfo, tree, di, drep);
+               break;
 
-       offset = drsuapi_dissect_element_DsReplicaOp_operation_type(tvb, offset, pinfo, tree, di, drep);
+               case DRSUAPI_DS_REPLICA_INFO_OBJ_METADATA:
+                       offset = drsuapi_dissect_element_DsReplicaInfo_objmetadata(tvb, offset, pinfo, tree, di, drep);
+               break;
 
-       offset = drsuapi_dissect_element_DsReplicaOp_options(tvb, offset, pinfo, tree, di, drep);
+               case DRSUAPI_DS_REPLICA_INFO_KCC_DSA_CONNECT_FAILURES:
+                       offset = drsuapi_dissect_element_DsReplicaInfo_connectfailures(tvb, offset, pinfo, tree, di, drep);
+               break;
 
-       offset = drsuapi_dissect_element_DsReplicaOp_nc_dn(tvb, offset, pinfo, tree, di, drep);
+               case DRSUAPI_DS_REPLICA_INFO_KCC_DSA_LINK_FAILURES:
+                       offset = drsuapi_dissect_element_DsReplicaInfo_linkfailures(tvb, offset, pinfo, tree, di, drep);
+               break;
 
-       offset = drsuapi_dissect_element_DsReplicaOp_remote_dsa_obj_dn(tvb, offset, pinfo, tree, di, drep);
+               case DRSUAPI_DS_REPLICA_INFO_PENDING_OPS:
+                       offset = drsuapi_dissect_element_DsReplicaInfo_pendingops(tvb, offset, pinfo, tree, di, drep);
+               break;
 
-       offset = drsuapi_dissect_element_DsReplicaOp_remote_dsa_address(tvb, offset, pinfo, tree, di, drep);
+               case DRSUAPI_DS_REPLICA_INFO_ATTRIBUTE_VALUE_METADATA:
+                       offset = drsuapi_dissect_element_DsReplicaInfo_attrvalmetadata(tvb, offset, pinfo, tree, di, drep);
+               break;
 
-       offset = drsuapi_dissect_element_DsReplicaOp_nc_obj_guid(tvb, offset, pinfo, tree, di, drep);
+               case DRSUAPI_DS_REPLICA_INFO_CURSORS2:
+                       offset = drsuapi_dissect_element_DsReplicaInfo_cursors2(tvb, offset, pinfo, tree, di, drep);
+               break;
 
-       offset = drsuapi_dissect_element_DsReplicaOp_remote_dsa_obj_guid(tvb, offset, pinfo, tree, di, drep);
+               case DRSUAPI_DS_REPLICA_INFO_CURSORS3:
+                       offset = drsuapi_dissect_element_DsReplicaInfo_cursors3(tvb, offset, pinfo, tree, di, drep);
+               break;
+
+               case DRSUAPI_DS_REPLICA_INFO_OBJ_METADATA2:
+                       offset = drsuapi_dissect_element_DsReplicaInfo_objmetadata2(tvb, offset, pinfo, tree, di, drep);
+               break;
 
+               case DRSUAPI_DS_REPLICA_INFO_ATTRIBUTE_VALUE_METADATA2:
+                       offset = drsuapi_dissect_element_DsReplicaInfo_attrvalmetadata2(tvb, offset, pinfo, tree, di, drep);
+               break;
 
-       proto_item_set_len(item, offset-old_offset);
+               case DRSUAPI_DS_REPLICA_INFO_REPSTO:
+                       offset = drsuapi_dissect_element_DsReplicaInfo_repsto(tvb, offset, pinfo, tree, di, drep);
+               break;
 
+               case DRSUAPI_DS_REPLICA_INFO_CLIENT_CONTEXTS:
+                       offset = drsuapi_dissect_element_DsReplicaInfo_clientctx(tvb, offset, pinfo, tree, di, drep);
+               break;
 
-       if (di->call_data->flags & DCERPC_IS_NDR64) {
-               ALIGN_TO_5_BYTES;
+               case DRSUAPI_DS_REPLICA_INFO_UPTODATE_VECTOR_V1:
+                       offset = drsuapi_dissect_element_DsReplicaInfo_udv1(tvb, offset, pinfo, tree, di, drep);
+               break;
+
+               case DRSUAPI_DS_REPLICA_INFO_SERVER_OUTGOING_CALLS:
+                       offset = drsuapi_dissect_element_DsReplicaInfo_srvoutgoingcalls(tvb, offset, pinfo, tree, di, drep);
+               break;
        }
+       proto_item_set_len(item, offset-old_offset);
+
 
        return offset;
 }
 
-
 /* IDL: struct { */
-/* IDL:        NTTIME time; */
-/* IDL:        uint32 count; */
-/* IDL:        [size_is(count)] drsuapi_DsReplicaOp array[*]; */
+/* IDL:        [range(0,10000)] uint32 num_entries; */
+/* IDL:        [size_is(num_entries)] [unique(1)] drsuapi_DsGetMembershipsCtr1 **ctrl_array; */
 /* IDL: } */
 
 static int
-drsuapi_dissect_element_DsReplicaOpCtr_time(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetMemberships2Ctr1_num_entries(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaOpCtr_time);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetMemberships2Ctr1_num_entries, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaOpCtr_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetMemberships2Ctr1_ctrl_array(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaOpCtr_count, 0);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetMemberships2Ctr1_ctrl_array_, NDR_POINTER_UNIQUE, "Pointer to Ctrl Array (drsuapi_DsGetMembershipsCtr1)",hf_drsuapi_drsuapi_DsGetMemberships2Ctr1_ctrl_array);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaOpCtr_array(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetMemberships2Ctr1_ctrl_array_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaOpCtr_array_);
+       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetMemberships2Ctr1_ctrl_array__);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaOpCtr_array_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetMemberships2Ctr1_ctrl_array__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaOp(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaOpCtr_array,0);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetMemberships2Ctr1_ctrl_array___, NDR_POINTER_UNIQUE, "Pointer to Ctrl Array (drsuapi_DsGetMembershipsCtr1)",hf_drsuapi_drsuapi_DsGetMemberships2Ctr1_ctrl_array);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsGetMemberships2Ctr1_ctrl_array___(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = drsuapi_dissect_struct_DsGetMembershipsCtr1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetMemberships2Ctr1_ctrl_array,0);
 
        return offset;
 }
 
 int
-drsuapi_dissect_struct_DsReplicaOpCtr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_struct_DsGetMemberships2Ctr1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
        proto_item *item = NULL;
        proto_tree *tree = NULL;
@@ -15849,14 +18725,12 @@ drsuapi_dissect_struct_DsReplicaOpCtr(tvbuff_t *tvb _U_, int offset _U_, packet_
 
        if (parent_tree) {
                item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaOpCtr);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsGetMemberships2Ctr1);
        }
 
-       offset = drsuapi_dissect_element_DsReplicaOpCtr_time(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsReplicaOpCtr_count(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsGetMemberships2Ctr1_num_entries(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaOpCtr_array(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsGetMemberships2Ctr1_ctrl_array(tvb, offset, pinfo, tree, di, drep);
 
 
        proto_item_set_len(item, offset-old_offset);
@@ -15870,254 +18744,208 @@ drsuapi_dissect_struct_DsReplicaOpCtr(tvbuff_t *tvb _U_, int offset _U_, packet_
 }
 
 
-/* IDL: struct { */
-/* IDL:        [charset(UTF16)] [unique(1)] uint16 *attribute_name; */
-/* IDL:        [charset(UTF16)] [unique(1)] uint16 *object_dn; */
-/* IDL:        [value(ndr_size_DATA_BLOB(0,binary,0))] uint32 __ndr_size_binary; */
-/* IDL:        [unique(1)] DATA_BLOB *binary; */
-/* IDL:        NTTIME deleted; */
-/* IDL:        NTTIME created; */
-/* IDL:        uint32 version; */
-/* IDL:        NTTIME originating_change_time; */
-/* IDL:        GUID originating_invocation_id; */
-/* IDL:        hyper originating_usn; */
-/* IDL:        hyper local_usn; */
+/* IDL: [switch_type(uint32)] union { */
+/* IDL: [case(1)] [case(1)] drsuapi_DsGetMembershipsCtr1 ctr1; */
 /* IDL: } */
 
 static int
-drsuapi_dissect_element_DsReplicaAttrValMetaData_attribute_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaAttrValMetaData_attribute_name_, NDR_POINTER_UNIQUE, "Pointer to Attribute Name (uint16)",hf_drsuapi_drsuapi_DsReplicaAttrValMetaData_attribute_name);
-
-       return offset;
-}
-
-static int
-drsuapi_dissect_element_DsReplicaAttrValMetaData_attribute_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       char *data;
-
-       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsReplicaAttrValMetaData_attribute_name, FALSE, &data);
-       proto_item_append_text(tree, ": %s", data);
-
-       return offset;
-}
-
-static int
-drsuapi_dissect_element_DsReplicaAttrValMetaData_object_dn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaAttrValMetaData_object_dn_, NDR_POINTER_UNIQUE, "Pointer to Object Dn (uint16)",hf_drsuapi_drsuapi_DsReplicaAttrValMetaData_object_dn);
-
-       return offset;
-}
-
-static int
-drsuapi_dissect_element_DsReplicaAttrValMetaData_object_dn_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       char *data;
-
-       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsReplicaAttrValMetaData_object_dn, FALSE, &data);
-       proto_item_append_text(tree, ": %s", data);
-
-       return offset;
-}
-
-static int
-drsuapi_dissect_element_DsReplicaAttrValMetaData___ndr_size_binary(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAttrValMetaData___ndr_size_binary, 0);
-
-       return offset;
-}
-
-static int
-drsuapi_dissect_element_DsReplicaAttrValMetaData_binary(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetMemberships2Ctr_ctr1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaAttrValMetaData_binary_, NDR_POINTER_UNIQUE, "Pointer to Binary (DATA_BLOB)",hf_drsuapi_drsuapi_DsReplicaAttrValMetaData_binary);
+       offset = drsuapi_dissect_struct_DsGetMembershipsCtr1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetMemberships2Ctr_ctr1,0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaAttrValMetaData_binary_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_DsGetMemberships2Ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
-       offset = dissect_ndr_datablob(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAttrValMetaData_binary, 0);
+       proto_item *item = NULL;
+       proto_tree *tree = NULL;
+       int old_offset;
+       guint32 level;
 
-       return offset;
-}
+       old_offset = offset;
+       if (parent_tree) {
+               tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_DsGetMemberships2Ctr, &item, "drsuapi_DsGetMemberships2Ctr");
+       }
 
-static int
-drsuapi_dissect_element_DsReplicaAttrValMetaData_deleted(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAttrValMetaData_deleted);
+       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level);
+       ALIGN_TO_5_BYTES;
 
-       return offset;
-}
+       switch(level) {
+               case 1:
+                       offset = drsuapi_dissect_element_DsGetMemberships2Ctr_ctr1(tvb, offset, pinfo, tree, di, drep);
+               break;
+       }
+       proto_item_set_len(item, offset-old_offset);
 
-static int
-drsuapi_dissect_element_DsReplicaAttrValMetaData_created(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAttrValMetaData_created);
 
        return offset;
 }
 
+/* IDL: struct { */
+/* IDL:        [range(1,10000)] uint32 num_req; */
+/* IDL:        [size_is(num_req)] [unique(1)] drsuapi_DsGetMembershipsRequest1 **req_array; */
+/* IDL: } */
+
 static int
-drsuapi_dissect_element_DsReplicaAttrValMetaData_version(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetMemberships2Request1_num_req(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAttrValMetaData_version, 0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetMemberships2Request1_num_req, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaAttrValMetaData_originating_change_time(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetMemberships2Request1_req_array(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAttrValMetaData_originating_change_time);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetMemberships2Request1_req_array_, NDR_POINTER_UNIQUE, "Pointer to Req Array (drsuapi_DsGetMembershipsRequest1)",hf_drsuapi_drsuapi_DsGetMemberships2Request1_req_array);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaAttrValMetaData_originating_invocation_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetMemberships2Request1_req_array_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAttrValMetaData_originating_invocation_id, NULL);
+       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetMemberships2Request1_req_array__);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaAttrValMetaData_originating_usn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetMemberships2Request1_req_array__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAttrValMetaData_originating_usn, NULL);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetMemberships2Request1_req_array___, NDR_POINTER_UNIQUE, "Pointer to Req Array (drsuapi_DsGetMembershipsRequest1)",hf_drsuapi_drsuapi_DsGetMemberships2Request1_req_array);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaAttrValMetaData_local_usn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetMemberships2Request1_req_array___(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAttrValMetaData_local_usn, NULL);
+       offset = drsuapi_dissect_struct_DsGetMembershipsRequest1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetMemberships2Request1_req_array,0);
 
        return offset;
 }
 
 int
-drsuapi_dissect_struct_DsReplicaAttrValMetaData(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_struct_DsGetMemberships2Request1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
        proto_item *item = NULL;
        proto_tree *tree = NULL;
        int old_offset;
 
-       ALIGN_TO_8_BYTES;
+       ALIGN_TO_5_BYTES;
 
        old_offset = offset;
 
        if (parent_tree) {
                item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaAttrValMetaData);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsGetMemberships2Request1);
        }
 
-       offset = drsuapi_dissect_element_DsReplicaAttrValMetaData_attribute_name(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsReplicaAttrValMetaData_object_dn(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsReplicaAttrValMetaData___ndr_size_binary(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsReplicaAttrValMetaData_binary(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsReplicaAttrValMetaData_deleted(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsReplicaAttrValMetaData_created(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsReplicaAttrValMetaData_version(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsReplicaAttrValMetaData_originating_change_time(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsReplicaAttrValMetaData_originating_invocation_id(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsReplicaAttrValMetaData_originating_usn(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsGetMemberships2Request1_num_req(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaAttrValMetaData_local_usn(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsGetMemberships2Request1_req_array(tvb, offset, pinfo, tree, di, drep);
 
 
        proto_item_set_len(item, offset-old_offset);
 
 
        if (di->call_data->flags & DCERPC_IS_NDR64) {
-               ALIGN_TO_8_BYTES;
+               ALIGN_TO_5_BYTES;
        }
 
        return offset;
 }
 
 
-/* IDL: struct { */
-/* IDL:        uint32 count; */
-/* IDL:        uint32 enumeration_context; */
-/* IDL:        [size_is(count)] drsuapi_DsReplicaAttrValMetaData array[*]; */
+/* IDL: [switch_type(uint32)] union { */
+/* IDL: [case(1)] [case(1)] drsuapi_DsGetMemberships2Request1 req1; */
 /* IDL: } */
 
 static int
-drsuapi_dissect_element_DsReplicaAttrValMetaDataCtr_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetMemberships2Request_req1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAttrValMetaDataCtr_count, 0);
+       offset = drsuapi_dissect_struct_DsGetMemberships2Request1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetMemberships2Request_req1,0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaAttrValMetaDataCtr_enumeration_context(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_DsGetMemberships2Request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAttrValMetaDataCtr_enumeration_context, 0);
+       proto_item *item = NULL;
+       proto_tree *tree = NULL;
+       int old_offset;
+       guint32 level;
+
+       old_offset = offset;
+       if (parent_tree) {
+               tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_DsGetMemberships2Request, &item, "drsuapi_DsGetMemberships2Request");
+       }
+
+       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level);
+       ALIGN_TO_5_BYTES;
+
+       switch(level) {
+               case 1:
+                       offset = drsuapi_dissect_element_DsGetMemberships2Request_req1(tvb, offset, pinfo, tree, di, drep);
+               break;
+       }
+       proto_item_set_len(item, offset-old_offset);
+
 
        return offset;
 }
 
+/* IDL: struct { */
+/* IDL:        WERROR error_code; */
+/* IDL:        uint32 site_cost; */
+/* IDL: } */
+
 static int
-drsuapi_dissect_element_DsReplicaAttrValMetaDataCtr_array(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsSiteCostInfo_error_code(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaAttrValMetaDataCtr_array_);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsSiteCostInfo_error_code, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaAttrValMetaDataCtr_array_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsSiteCostInfo_site_cost(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaAttrValMetaData(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaAttrValMetaDataCtr_array,0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsSiteCostInfo_site_cost, 0);
 
        return offset;
 }
 
 int
-drsuapi_dissect_struct_DsReplicaAttrValMetaDataCtr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_struct_DsSiteCostInfo(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
        proto_item *item = NULL;
        proto_tree *tree = NULL;
        int old_offset;
 
-       ALIGN_TO_8_BYTES;
+       ALIGN_TO_4_BYTES;
 
        old_offset = offset;
 
        if (parent_tree) {
                item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaAttrValMetaDataCtr);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsSiteCostInfo);
        }
 
-       offset = drsuapi_dissect_element_DsReplicaAttrValMetaDataCtr_count(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsReplicaAttrValMetaDataCtr_enumeration_context(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsSiteCostInfo_error_code(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaAttrValMetaDataCtr_array(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsSiteCostInfo_site_cost(tvb, offset, pinfo, tree, di, drep);
 
 
        proto_item_set_len(item, offset-old_offset);
 
 
        if (di->call_data->flags & DCERPC_IS_NDR64) {
-               ALIGN_TO_8_BYTES;
+               ALIGN_TO_4_BYTES;
        }
 
        return offset;
@@ -16125,2055 +18953,2364 @@ drsuapi_dissect_struct_DsReplicaAttrValMetaDataCtr(tvbuff_t *tvb _U_, int offset
 
 
 /* IDL: struct { */
-/* IDL:        uint32 count; */
-/* IDL:        uint32 enumeration_context; */
-/* IDL:        [size_is(count)] drsuapi_DsReplicaCursor2 array[*]; */
+/* IDL:        [range(0,10000)] uint32 num_info; */
+/* IDL:        [size_is(num_info)] [unique(1)] drsuapi_DsSiteCostInfo *info; */
+/* IDL:        [value(0)] uint32 flags_reserved; */
 /* IDL: } */
 
 static int
-drsuapi_dissect_element_DsReplicaCursor2Ctr_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_QuerySitesByCostCtr1_num_info(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaCursor2Ctr_count, 0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_QuerySitesByCostCtr1_num_info, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaCursor2Ctr_enumeration_context(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_QuerySitesByCostCtr1_info(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaCursor2Ctr_enumeration_context, 0);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_QuerySitesByCostCtr1_info_, NDR_POINTER_UNIQUE, "Pointer to Info (drsuapi_DsSiteCostInfo)",hf_drsuapi_drsuapi_QuerySitesByCostCtr1_info);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaCursor2Ctr_array(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_QuerySitesByCostCtr1_info_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaCursor2Ctr_array_);
+       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_QuerySitesByCostCtr1_info__);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaCursor2Ctr_array_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_QuerySitesByCostCtr1_info__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaCursor2(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaCursor2Ctr_array,0);
+       offset = drsuapi_dissect_struct_DsSiteCostInfo(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_QuerySitesByCostCtr1_info,0);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_QuerySitesByCostCtr1_flags_reserved(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_QuerySitesByCostCtr1_flags_reserved, 0);
 
        return offset;
 }
 
 int
-drsuapi_dissect_struct_DsReplicaCursor2Ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_struct_QuerySitesByCostCtr1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
        proto_item *item = NULL;
        proto_tree *tree = NULL;
        int old_offset;
 
-       ALIGN_TO_8_BYTES;
+       ALIGN_TO_5_BYTES;
 
        old_offset = offset;
 
        if (parent_tree) {
                item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaCursor2Ctr);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_QuerySitesByCostCtr1);
        }
 
-       offset = drsuapi_dissect_element_DsReplicaCursor2Ctr_count(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_QuerySitesByCostCtr1_num_info(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaCursor2Ctr_enumeration_context(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_QuerySitesByCostCtr1_info(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaCursor2Ctr_array(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_QuerySitesByCostCtr1_flags_reserved(tvb, offset, pinfo, tree, di, drep);
 
 
        proto_item_set_len(item, offset-old_offset);
 
 
        if (di->call_data->flags & DCERPC_IS_NDR64) {
-               ALIGN_TO_8_BYTES;
+               ALIGN_TO_5_BYTES;
        }
 
        return offset;
 }
 
 
+/* IDL: [switch_type(uint32)] union { */
+/* IDL: [case(1)] [case(1)] drsuapi_QuerySitesByCostCtr1 ctr1; */
+/* IDL: } */
+
+static int
+drsuapi_dissect_element_QuerySitesByCostCtr_ctr1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = drsuapi_dissect_struct_QuerySitesByCostCtr1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_QuerySitesByCostCtr_ctr1,0);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_QuerySitesByCostCtr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+{
+       proto_item *item = NULL;
+       proto_tree *tree = NULL;
+       int old_offset;
+       guint32 level;
+
+       old_offset = offset;
+       if (parent_tree) {
+               tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_QuerySitesByCostCtr, &item, "drsuapi_QuerySitesByCostCtr");
+       }
+
+       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level);
+       ALIGN_TO_5_BYTES;
+
+       switch(level) {
+               case 1:
+                       offset = drsuapi_dissect_element_QuerySitesByCostCtr_ctr1(tvb, offset, pinfo, tree, di, drep);
+               break;
+       }
+       proto_item_set_len(item, offset-old_offset);
+
+
+       return offset;
+}
+
 /* IDL: struct { */
-/* IDL:        GUID source_dsa_invocation_id; */
-/* IDL:        hyper highest_usn; */
-/* IDL:        NTTIME last_sync_success; */
-/* IDL:        [charset(UTF16)] [unique(1)] uint16 *source_dsa_obj_dn; */
+/* IDL:        [charset(UTF16)] [unique(1)] uint16 *site_from; */
+/* IDL:        [range(1,10000)] uint32 num_req; */
+/* IDL:        [charset(UTF16)] [size_is(num_req)] [unique(1)] uint16 **site_to; */
+/* IDL:        uint32 flags; */
 /* IDL: } */
 
 static int
-drsuapi_dissect_element_DsReplicaCursor3_source_dsa_invocation_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_QuerySitesByCostRequest1_site_from(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaCursor3_source_dsa_invocation_id, NULL);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_QuerySitesByCostRequest1_site_from_, NDR_POINTER_UNIQUE, "Pointer to Site From (uint16)",hf_drsuapi_drsuapi_QuerySitesByCostRequest1_site_from);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaCursor3_highest_usn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_QuerySitesByCostRequest1_site_from_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaCursor3_highest_usn, NULL);
+       char *data;
+
+       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_QuerySitesByCostRequest1_site_from, FALSE, &data);
+       proto_item_append_text(tree, ": %s", data);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaCursor3_last_sync_success(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_QuerySitesByCostRequest1_num_req(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaCursor3_last_sync_success);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_QuerySitesByCostRequest1_num_req, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaCursor3_source_dsa_obj_dn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_QuerySitesByCostRequest1_site_to(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaCursor3_source_dsa_obj_dn_, NDR_POINTER_UNIQUE, "Pointer to Source Dsa Obj Dn (uint16)",hf_drsuapi_drsuapi_DsReplicaCursor3_source_dsa_obj_dn);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_QuerySitesByCostRequest1_site_to_, NDR_POINTER_UNIQUE, "Pointer to Site To (uint16)",hf_drsuapi_drsuapi_QuerySitesByCostRequest1_site_to);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaCursor3_source_dsa_obj_dn_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_QuerySitesByCostRequest1_site_to_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_QuerySitesByCostRequest1_site_to__);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_QuerySitesByCostRequest1_site_to__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_QuerySitesByCostRequest1_site_to___, NDR_POINTER_UNIQUE, "Pointer to Site To (uint16)",hf_drsuapi_drsuapi_QuerySitesByCostRequest1_site_to);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_QuerySitesByCostRequest1_site_to___(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
        char *data;
 
-       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsReplicaCursor3_source_dsa_obj_dn, FALSE, &data);
+       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_QuerySitesByCostRequest1_site_to, FALSE, &data);
        proto_item_append_text(tree, ": %s", data);
 
        return offset;
 }
 
+static int
+drsuapi_dissect_element_QuerySitesByCostRequest1_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_QuerySitesByCostRequest1_flags, 0);
+
+       return offset;
+}
+
 int
-drsuapi_dissect_struct_DsReplicaCursor3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_struct_QuerySitesByCostRequest1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
        proto_item *item = NULL;
        proto_tree *tree = NULL;
        int old_offset;
 
-       ALIGN_TO_8_BYTES;
+       ALIGN_TO_5_BYTES;
 
        old_offset = offset;
 
        if (parent_tree) {
                item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaCursor3);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_QuerySitesByCostRequest1);
        }
 
-       offset = drsuapi_dissect_element_DsReplicaCursor3_source_dsa_invocation_id(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_QuerySitesByCostRequest1_site_from(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaCursor3_highest_usn(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_QuerySitesByCostRequest1_num_req(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaCursor3_last_sync_success(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_QuerySitesByCostRequest1_site_to(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaCursor3_source_dsa_obj_dn(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_QuerySitesByCostRequest1_flags(tvb, offset, pinfo, tree, di, drep);
 
 
        proto_item_set_len(item, offset-old_offset);
 
 
        if (di->call_data->flags & DCERPC_IS_NDR64) {
-               ALIGN_TO_8_BYTES;
+               ALIGN_TO_5_BYTES;
        }
 
        return offset;
 }
 
 
-/* IDL: struct { */
-/* IDL:        uint32 count; */
-/* IDL:        uint32 enumeration_context; */
-/* IDL:        [size_is(count)] drsuapi_DsReplicaCursor3 array[*]; */
+/* IDL: [switch_type(uint32)] union { */
+/* IDL: [case(1)] [case(1)] drsuapi_QuerySitesByCostRequest1 req1; */
 /* IDL: } */
 
 static int
-drsuapi_dissect_element_DsReplicaCursor3Ctr_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_QuerySitesByCostRequest_req1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaCursor3Ctr_count, 0);
+       offset = drsuapi_dissect_struct_QuerySitesByCostRequest1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_QuerySitesByCostRequest_req1,0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaCursor3Ctr_enumeration_context(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_QuerySitesByCostRequest(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaCursor3Ctr_enumeration_context, 0);
+       proto_item *item = NULL;
+       proto_tree *tree = NULL;
+       int old_offset;
+       guint32 level;
 
-       return offset;
-}
+       old_offset = offset;
+       if (parent_tree) {
+               tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_QuerySitesByCostRequest, &item, "drsuapi_QuerySitesByCostRequest");
+       }
+
+       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level);
+       ALIGN_TO_5_BYTES;
+
+       switch(level) {
+               case 1:
+                       offset = drsuapi_dissect_element_QuerySitesByCostRequest_req1(tvb, offset, pinfo, tree, di, drep);
+               break;
+       }
+       proto_item_set_len(item, offset-old_offset);
 
-static int
-drsuapi_dissect_element_DsReplicaCursor3Ctr_array(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaCursor3Ctr_array_);
 
        return offset;
 }
 
+/* IDL: struct { */
+/* IDL:        uint32 reserved; */
+/* IDL: } */
+
 static int
-drsuapi_dissect_element_DsReplicaCursor3Ctr_array_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_InitDemotionRequest1_reserved(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaCursor3(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaCursor3Ctr_array,0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_InitDemotionRequest1_reserved, 0);
 
        return offset;
 }
 
 int
-drsuapi_dissect_struct_DsReplicaCursor3Ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_struct_InitDemotionRequest1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
        proto_item *item = NULL;
        proto_tree *tree = NULL;
        int old_offset;
 
-       ALIGN_TO_8_BYTES;
+       ALIGN_TO_4_BYTES;
 
        old_offset = offset;
 
        if (parent_tree) {
                item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaCursor3Ctr);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_InitDemotionRequest1);
        }
 
-       offset = drsuapi_dissect_element_DsReplicaCursor3Ctr_count(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsReplicaCursor3Ctr_enumeration_context(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsReplicaCursor3Ctr_array(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_InitDemotionRequest1_reserved(tvb, offset, pinfo, tree, di, drep);
 
 
        proto_item_set_len(item, offset-old_offset);
 
 
        if (di->call_data->flags & DCERPC_IS_NDR64) {
-               ALIGN_TO_8_BYTES;
+               ALIGN_TO_4_BYTES;
        }
 
        return offset;
 }
 
 
-/* IDL: struct { */
-/* IDL:        [charset(UTF16)] [unique(1)] uint16 *attribute_name; */
-/* IDL:        uint32 version; */
-/* IDL:        NTTIME originating_change_time; */
-/* IDL:        GUID originating_invocation_id; */
-/* IDL:        hyper originating_usn; */
-/* IDL:        hyper local_usn; */
-/* IDL:        [charset(UTF16)] [unique(1)] uint16 *originating_dsa_dn; */
+/* IDL: [switch_type(uint32)] union { */
+/* IDL: [case(1)] [case(1)] drsuapi_InitDemotionRequest1 req1; */
 /* IDL: } */
 
 static int
-drsuapi_dissect_element_DsReplicaObjMetaData2_attribute_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_InitDemotionRequest_req1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaObjMetaData2_attribute_name_, NDR_POINTER_UNIQUE, "Pointer to Attribute Name (uint16)",hf_drsuapi_drsuapi_DsReplicaObjMetaData2_attribute_name);
+       offset = drsuapi_dissect_struct_InitDemotionRequest1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_InitDemotionRequest_req1,0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaObjMetaData2_attribute_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_InitDemotionRequest(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
-       char *data;
+       proto_item *item = NULL;
+       proto_tree *tree = NULL;
+       int old_offset;
+       guint32 level;
 
-       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsReplicaObjMetaData2_attribute_name, FALSE, &data);
-       proto_item_append_text(tree, ": %s", data);
+       old_offset = offset;
+       if (parent_tree) {
+               tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_InitDemotionRequest, &item, "drsuapi_InitDemotionRequest");
+       }
 
-       return offset;
-}
+       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level);
+       ALIGN_TO_4_BYTES;
+
+       switch(level) {
+               case 1:
+                       offset = drsuapi_dissect_element_InitDemotionRequest_req1(tvb, offset, pinfo, tree, di, drep);
+               break;
+       }
+       proto_item_set_len(item, offset-old_offset);
 
-static int
-drsuapi_dissect_element_DsReplicaObjMetaData2_version(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjMetaData2_version, 0);
 
        return offset;
 }
 
+/* IDL: struct { */
+/* IDL:        WERROR op_error; */
+/* IDL: } */
+
 static int
-drsuapi_dissect_element_DsReplicaObjMetaData2_originating_change_time(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_InitDemotionCtr1_op_error(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjMetaData2_originating_change_time);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_InitDemotionCtr1_op_error, 0);
 
        return offset;
 }
 
-static int
-drsuapi_dissect_element_DsReplicaObjMetaData2_originating_invocation_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+int
+drsuapi_dissect_struct_InitDemotionCtr1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
-       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjMetaData2_originating_invocation_id, NULL);
+       proto_item *item = NULL;
+       proto_tree *tree = NULL;
+       int old_offset;
 
-       return offset;
-}
+       ALIGN_TO_4_BYTES;
 
-static int
-drsuapi_dissect_element_DsReplicaObjMetaData2_originating_usn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjMetaData2_originating_usn, NULL);
+       old_offset = offset;
 
-       return offset;
-}
+       if (parent_tree) {
+               item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_InitDemotionCtr1);
+       }
 
-static int
-drsuapi_dissect_element_DsReplicaObjMetaData2_local_usn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjMetaData2_local_usn, NULL);
+       offset = drsuapi_dissect_element_InitDemotionCtr1_op_error(tvb, offset, pinfo, tree, di, drep);
 
-       return offset;
-}
 
-static int
-drsuapi_dissect_element_DsReplicaObjMetaData2_originating_dsa_dn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaObjMetaData2_originating_dsa_dn_, NDR_POINTER_UNIQUE, "Pointer to Originating Dsa Dn (uint16)",hf_drsuapi_drsuapi_DsReplicaObjMetaData2_originating_dsa_dn);
+       proto_item_set_len(item, offset-old_offset);
+
+
+       if (di->call_data->flags & DCERPC_IS_NDR64) {
+               ALIGN_TO_4_BYTES;
+       }
 
        return offset;
 }
 
+
+/* IDL: [switch_type(uint32)] union { */
+/* IDL: [case(1)] [case(1)] drsuapi_InitDemotionCtr1 ctr1; */
+/* IDL: } */
+
 static int
-drsuapi_dissect_element_DsReplicaObjMetaData2_originating_dsa_dn_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_InitDemotionCtr_ctr1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       char *data;
-
-       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsReplicaObjMetaData2_originating_dsa_dn, FALSE, &data);
-       proto_item_append_text(tree, ": %s", data);
+       offset = drsuapi_dissect_struct_InitDemotionCtr1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_InitDemotionCtr_ctr1,0);
 
        return offset;
 }
 
-int
-drsuapi_dissect_struct_DsReplicaObjMetaData2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+static int
+drsuapi_dissect_InitDemotionCtr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
        proto_item *item = NULL;
        proto_tree *tree = NULL;
        int old_offset;
-
-       ALIGN_TO_8_BYTES;
+       guint32 level;
 
        old_offset = offset;
-
        if (parent_tree) {
-               item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaObjMetaData2);
+               tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_InitDemotionCtr, &item, "drsuapi_InitDemotionCtr");
        }
 
-       offset = drsuapi_dissect_element_DsReplicaObjMetaData2_attribute_name(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsReplicaObjMetaData2_version(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsReplicaObjMetaData2_originating_change_time(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsReplicaObjMetaData2_originating_invocation_id(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsReplicaObjMetaData2_originating_usn(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsReplicaObjMetaData2_local_usn(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsReplicaObjMetaData2_originating_dsa_dn(tvb, offset, pinfo, tree, di, drep);
-
+       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level);
+       ALIGN_TO_4_BYTES;
 
+       switch(level) {
+               case 1:
+                       offset = drsuapi_dissect_element_InitDemotionCtr_ctr1(tvb, offset, pinfo, tree, di, drep);
+               break;
+       }
        proto_item_set_len(item, offset-old_offset);
 
 
-       if (di->call_data->flags & DCERPC_IS_NDR64) {
-               ALIGN_TO_8_BYTES;
-       }
-
        return offset;
 }
 
-
 /* IDL: struct { */
-/* IDL:        uint32 count; */
-/* IDL:        uint32 enumeration_context; */
-/* IDL:        [size_is(count)] drsuapi_DsReplicaObjMetaData2 array[*]; */
+/* IDL:        uint32 flags; */
+/* IDL:        GUID uuid_helper_dest; */
+/* IDL:        [ref] drsuapi_DsReplicaObjectIdentifier *naming_context; */
 /* IDL: } */
 
 static int
-drsuapi_dissect_element_DsReplicaObjMetaData2Ctr_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_ReplicaDemotionRequest1_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjMetaData2Ctr_count, 0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_ReplicaDemotionRequest1_flags, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaObjMetaData2Ctr_enumeration_context(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_ReplicaDemotionRequest1_uuid_helper_dest(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaObjMetaData2Ctr_enumeration_context, 0);
+       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_ReplicaDemotionRequest1_uuid_helper_dest, NULL);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaObjMetaData2Ctr_array(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_ReplicaDemotionRequest1_naming_context(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaObjMetaData2Ctr_array_);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_ReplicaDemotionRequest1_naming_context_, NDR_POINTER_REF, "Pointer to Naming Context (drsuapi_DsReplicaObjectIdentifier)",hf_drsuapi_drsuapi_ReplicaDemotionRequest1_naming_context);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaObjMetaData2Ctr_array_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_ReplicaDemotionRequest1_naming_context_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaObjMetaData2(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaObjMetaData2Ctr_array,0);
+       offset = drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_ReplicaDemotionRequest1_naming_context,0);
 
        return offset;
 }
 
 int
-drsuapi_dissect_struct_DsReplicaObjMetaData2Ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_struct_ReplicaDemotionRequest1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
        proto_item *item = NULL;
        proto_tree *tree = NULL;
        int old_offset;
 
-       ALIGN_TO_8_BYTES;
+       ALIGN_TO_5_BYTES;
 
        old_offset = offset;
 
        if (parent_tree) {
                item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaObjMetaData2Ctr);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_ReplicaDemotionRequest1);
        }
 
-       offset = drsuapi_dissect_element_DsReplicaObjMetaData2Ctr_count(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_ReplicaDemotionRequest1_flags(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaObjMetaData2Ctr_enumeration_context(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_ReplicaDemotionRequest1_uuid_helper_dest(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaObjMetaData2Ctr_array(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_ReplicaDemotionRequest1_naming_context(tvb, offset, pinfo, tree, di, drep);
 
 
        proto_item_set_len(item, offset-old_offset);
 
 
        if (di->call_data->flags & DCERPC_IS_NDR64) {
-               ALIGN_TO_8_BYTES;
+               ALIGN_TO_5_BYTES;
        }
 
        return offset;
 }
 
 
-/* IDL: struct { */
-/* IDL:        [charset(UTF16)] [unique(1)] uint16 *attribute_name; */
-/* IDL:        [charset(UTF16)] [unique(1)] uint16 *object_dn; */
-/* IDL:        [value(ndr_size_DATA_BLOB(0,binary,0))] uint32 __ndr_size_binary; */
-/* IDL:        [unique(1)] DATA_BLOB *binary; */
-/* IDL:        NTTIME deleted; */
-/* IDL:        NTTIME created; */
-/* IDL:        uint32 version; */
-/* IDL:        NTTIME originating_change_time; */
-/* IDL:        GUID originating_invocation_id; */
-/* IDL:        hyper originating_usn; */
-/* IDL:        hyper local_usn; */
-/* IDL:        [charset(UTF16)] [unique(1)] uint16 *originating_dsa_dn; */
+/* IDL: [switch_type(uint32)] union { */
+/* IDL: [case(1)] [case(1)] drsuapi_ReplicaDemotionRequest1 req1; */
 /* IDL: } */
 
 static int
-drsuapi_dissect_element_DsReplicaAttrValMetaData2_attribute_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_ReplicaDemotionRequest_req1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaAttrValMetaData2_attribute_name_, NDR_POINTER_UNIQUE, "Pointer to Attribute Name (uint16)",hf_drsuapi_drsuapi_DsReplicaAttrValMetaData2_attribute_name);
+       offset = drsuapi_dissect_struct_ReplicaDemotionRequest1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_ReplicaDemotionRequest_req1,0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaAttrValMetaData2_attribute_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_ReplicaDemotionRequest(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
-       char *data;
+       proto_item *item = NULL;
+       proto_tree *tree = NULL;
+       int old_offset;
+       guint32 level;
 
-       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsReplicaAttrValMetaData2_attribute_name, FALSE, &data);
-       proto_item_append_text(tree, ": %s", data);
+       old_offset = offset;
+       if (parent_tree) {
+               tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_ReplicaDemotionRequest, &item, "drsuapi_ReplicaDemotionRequest");
+       }
 
-       return offset;
-}
+       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level);
+       ALIGN_TO_5_BYTES;
+
+       switch(level) {
+               case 1:
+                       offset = drsuapi_dissect_element_ReplicaDemotionRequest_req1(tvb, offset, pinfo, tree, di, drep);
+               break;
+       }
+       proto_item_set_len(item, offset-old_offset);
 
-static int
-drsuapi_dissect_element_DsReplicaAttrValMetaData2_object_dn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaAttrValMetaData2_object_dn_, NDR_POINTER_UNIQUE, "Pointer to Object Dn (uint16)",hf_drsuapi_drsuapi_DsReplicaAttrValMetaData2_object_dn);
 
        return offset;
 }
 
+/* IDL: struct { */
+/* IDL:        WERROR op_error; */
+/* IDL: } */
+
 static int
-drsuapi_dissect_element_DsReplicaAttrValMetaData2_object_dn_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_ReplicaDemotionCtr1_op_error(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       char *data;
-
-       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsReplicaAttrValMetaData2_object_dn, FALSE, &data);
-       proto_item_append_text(tree, ": %s", data);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_ReplicaDemotionCtr1_op_error, 0);
 
        return offset;
 }
 
-static int
-drsuapi_dissect_element_DsReplicaAttrValMetaData2___ndr_size_binary(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+int
+drsuapi_dissect_struct_ReplicaDemotionCtr1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAttrValMetaData2___ndr_size_binary, 0);
+       proto_item *item = NULL;
+       proto_tree *tree = NULL;
+       int old_offset;
 
-       return offset;
-}
+       ALIGN_TO_4_BYTES;
 
-static int
-drsuapi_dissect_element_DsReplicaAttrValMetaData2_binary(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaAttrValMetaData2_binary_, NDR_POINTER_UNIQUE, "Pointer to Binary (DATA_BLOB)",hf_drsuapi_drsuapi_DsReplicaAttrValMetaData2_binary);
+       old_offset = offset;
 
-       return offset;
-}
+       if (parent_tree) {
+               item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_ReplicaDemotionCtr1);
+       }
 
-static int
-drsuapi_dissect_element_DsReplicaAttrValMetaData2_binary_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = dissect_ndr_datablob(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAttrValMetaData2_binary, 0);
+       offset = drsuapi_dissect_element_ReplicaDemotionCtr1_op_error(tvb, offset, pinfo, tree, di, drep);
 
-       return offset;
-}
 
-static int
-drsuapi_dissect_element_DsReplicaAttrValMetaData2_deleted(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAttrValMetaData2_deleted);
+       proto_item_set_len(item, offset-old_offset);
 
-       return offset;
-}
 
-static int
-drsuapi_dissect_element_DsReplicaAttrValMetaData2_created(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAttrValMetaData2_created);
+       if (di->call_data->flags & DCERPC_IS_NDR64) {
+               ALIGN_TO_4_BYTES;
+       }
 
        return offset;
 }
 
-static int
-drsuapi_dissect_element_DsReplicaAttrValMetaData2_version(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAttrValMetaData2_version, 0);
 
-       return offset;
-}
+/* IDL: [switch_type(uint32)] union { */
+/* IDL: [case(1)] [case(1)] drsuapi_ReplicaDemotionCtr1 ctr1; */
+/* IDL: } */
 
 static int
-drsuapi_dissect_element_DsReplicaAttrValMetaData2_originating_change_time(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_ReplicaDemotionCtr_ctr1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAttrValMetaData2_originating_change_time);
+       offset = drsuapi_dissect_struct_ReplicaDemotionCtr1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_ReplicaDemotionCtr_ctr1,0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaAttrValMetaData2_originating_invocation_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_ReplicaDemotionCtr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
-       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAttrValMetaData2_originating_invocation_id, NULL);
+       proto_item *item = NULL;
+       proto_tree *tree = NULL;
+       int old_offset;
+       guint32 level;
+
+       old_offset = offset;
+       if (parent_tree) {
+               tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_ReplicaDemotionCtr, &item, "drsuapi_ReplicaDemotionCtr");
+       }
+
+       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level);
+       ALIGN_TO_4_BYTES;
+
+       switch(level) {
+               case 1:
+                       offset = drsuapi_dissect_element_ReplicaDemotionCtr_ctr1(tvb, offset, pinfo, tree, di, drep);
+               break;
+       }
+       proto_item_set_len(item, offset-old_offset);
+
 
        return offset;
 }
 
+/* IDL: struct { */
+/* IDL:        uint32 operations; */
+/* IDL:        GUID uuid_helper_dest; */
+/* IDL:        [charset(UTF16)] [unique(1)] uint16 *script_base; */
+/* IDL: } */
+
 static int
-drsuapi_dissect_element_DsReplicaAttrValMetaData2_originating_usn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_FinishDemotionRequest1_operations(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAttrValMetaData2_originating_usn, NULL);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_FinishDemotionRequest1_operations, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaAttrValMetaData2_local_usn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_FinishDemotionRequest1_uuid_helper_dest(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAttrValMetaData2_local_usn, NULL);
+       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_FinishDemotionRequest1_uuid_helper_dest, NULL);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaAttrValMetaData2_originating_dsa_dn(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_FinishDemotionRequest1_script_base(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaAttrValMetaData2_originating_dsa_dn_, NDR_POINTER_UNIQUE, "Pointer to Originating Dsa Dn (uint16)",hf_drsuapi_drsuapi_DsReplicaAttrValMetaData2_originating_dsa_dn);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_FinishDemotionRequest1_script_base_, NDR_POINTER_UNIQUE, "Pointer to Script Base (uint16)",hf_drsuapi_drsuapi_FinishDemotionRequest1_script_base);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaAttrValMetaData2_originating_dsa_dn_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_FinishDemotionRequest1_script_base_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
        char *data;
 
-       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsReplicaAttrValMetaData2_originating_dsa_dn, FALSE, &data);
+       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_FinishDemotionRequest1_script_base, FALSE, &data);
        proto_item_append_text(tree, ": %s", data);
 
        return offset;
 }
 
 int
-drsuapi_dissect_struct_DsReplicaAttrValMetaData2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_struct_FinishDemotionRequest1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
        proto_item *item = NULL;
        proto_tree *tree = NULL;
        int old_offset;
 
-       ALIGN_TO_8_BYTES;
+       ALIGN_TO_5_BYTES;
 
        old_offset = offset;
 
        if (parent_tree) {
                item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaAttrValMetaData2);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_FinishDemotionRequest1);
        }
 
-       offset = drsuapi_dissect_element_DsReplicaAttrValMetaData2_attribute_name(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_FinishDemotionRequest1_operations(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaAttrValMetaData2_object_dn(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_FinishDemotionRequest1_uuid_helper_dest(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaAttrValMetaData2___ndr_size_binary(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_FinishDemotionRequest1_script_base(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaAttrValMetaData2_binary(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaAttrValMetaData2_deleted(tvb, offset, pinfo, tree, di, drep);
+       proto_item_set_len(item, offset-old_offset);
 
-       offset = drsuapi_dissect_element_DsReplicaAttrValMetaData2_created(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaAttrValMetaData2_version(tvb, offset, pinfo, tree, di, drep);
+       if (di->call_data->flags & DCERPC_IS_NDR64) {
+               ALIGN_TO_5_BYTES;
+       }
 
-       offset = drsuapi_dissect_element_DsReplicaAttrValMetaData2_originating_change_time(tvb, offset, pinfo, tree, di, drep);
+       return offset;
+}
 
-       offset = drsuapi_dissect_element_DsReplicaAttrValMetaData2_originating_invocation_id(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaAttrValMetaData2_originating_usn(tvb, offset, pinfo, tree, di, drep);
+/* IDL: [switch_type(uint32)] union { */
+/* IDL: [case(1)] [case(1)] drsuapi_FinishDemotionRequest1 req1; */
+/* IDL: } */
 
-       offset = drsuapi_dissect_element_DsReplicaAttrValMetaData2_local_usn(tvb, offset, pinfo, tree, di, drep);
+static int
+drsuapi_dissect_element_FinishDemotionRequest_req1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = drsuapi_dissect_struct_FinishDemotionRequest1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_FinishDemotionRequest_req1,0);
 
-       offset = drsuapi_dissect_element_DsReplicaAttrValMetaData2_originating_dsa_dn(tvb, offset, pinfo, tree, di, drep);
+       return offset;
+}
 
+static int
+drsuapi_dissect_FinishDemotionRequest(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+{
+       proto_item *item = NULL;
+       proto_tree *tree = NULL;
+       int old_offset;
+       guint32 level;
 
-       proto_item_set_len(item, offset-old_offset);
+       old_offset = offset;
+       if (parent_tree) {
+               tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_FinishDemotionRequest, &item, "drsuapi_FinishDemotionRequest");
+       }
 
+       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level);
+       ALIGN_TO_5_BYTES;
 
-       if (di->call_data->flags & DCERPC_IS_NDR64) {
-               ALIGN_TO_8_BYTES;
+       switch(level) {
+               case 1:
+                       offset = drsuapi_dissect_element_FinishDemotionRequest_req1(tvb, offset, pinfo, tree, di, drep);
+               break;
        }
+       proto_item_set_len(item, offset-old_offset);
+
 
        return offset;
 }
 
-
 /* IDL: struct { */
-/* IDL:        uint32 count; */
-/* IDL:        uint32 enumeration_context; */
-/* IDL:        [size_is(count)] drsuapi_DsReplicaAttrValMetaData2 array[*]; */
+/* IDL:        uint32 operations_done; */
+/* IDL:        uint32 op_failed; */
+/* IDL:        WERROR op_error; */
 /* IDL: } */
 
 static int
-drsuapi_dissect_element_DsReplicaAttrValMetaData2Ctr_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAttrValMetaData2Ctr_count, 0);
-
-       return offset;
-}
-
-static int
-drsuapi_dissect_element_DsReplicaAttrValMetaData2Ctr_enumeration_context(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_FinishDemotionCtr1_operations_done(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAttrValMetaData2Ctr_enumeration_context, 0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_FinishDemotionCtr1_operations_done, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaAttrValMetaData2Ctr_array(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_FinishDemotionCtr1_op_failed(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaAttrValMetaData2Ctr_array_);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_FinishDemotionCtr1_op_failed, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaAttrValMetaData2Ctr_array_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_FinishDemotionCtr1_op_error(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaAttrValMetaData2(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaAttrValMetaData2Ctr_array,0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_FinishDemotionCtr1_op_error, 0);
 
        return offset;
 }
 
 int
-drsuapi_dissect_struct_DsReplicaAttrValMetaData2Ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_struct_FinishDemotionCtr1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
        proto_item *item = NULL;
        proto_tree *tree = NULL;
        int old_offset;
 
-       ALIGN_TO_8_BYTES;
+       ALIGN_TO_4_BYTES;
 
        old_offset = offset;
 
        if (parent_tree) {
                item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaAttrValMetaData2Ctr);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_FinishDemotionCtr1);
        }
 
-       offset = drsuapi_dissect_element_DsReplicaAttrValMetaData2Ctr_count(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_FinishDemotionCtr1_operations_done(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaAttrValMetaData2Ctr_enumeration_context(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_FinishDemotionCtr1_op_failed(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaAttrValMetaData2Ctr_array(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_FinishDemotionCtr1_op_error(tvb, offset, pinfo, tree, di, drep);
 
 
        proto_item_set_len(item, offset-old_offset);
 
 
        if (di->call_data->flags & DCERPC_IS_NDR64) {
-               ALIGN_TO_8_BYTES;
+               ALIGN_TO_4_BYTES;
        }
 
        return offset;
 }
 
 
-/* IDL: struct { */
-/* IDL:        hyper u1; */
-/* IDL:        uint32 u2; */
-/* IDL:        uint32 u3; */
-/* IDL:        GUID bind_guid; */
-/* IDL:        NTTIME_1sec bind_time; */
-/* IDL:        [flag(LIBNDR_FLAG_BIGENDIAN)] ipv4address client_ip_address; */
-/* IDL:        uint32 u5; */
+/* IDL: [switch_type(uint32)] union { */
+/* IDL: [case(1)] [case(1)] drsuapi_FinishDemotionCtr1 ctr1; */
 /* IDL: } */
 
 static int
-drsuapi_dissect_element_DsReplicaConnection04_u1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_FinishDemotionCtr_ctr1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaConnection04_u1, NULL);
+       offset = drsuapi_dissect_struct_FinishDemotionCtr1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_FinishDemotionCtr_ctr1,0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaConnection04_u2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_FinishDemotionCtr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaConnection04_u2, 0);
+       proto_item *item = NULL;
+       proto_tree *tree = NULL;
+       int old_offset;
+       guint32 level;
 
-       return offset;
-}
+       old_offset = offset;
+       if (parent_tree) {
+               tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_FinishDemotionCtr, &item, "drsuapi_FinishDemotionCtr");
+       }
+
+       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level);
+       ALIGN_TO_4_BYTES;
+
+       switch(level) {
+               case 1:
+                       offset = drsuapi_dissect_element_FinishDemotionCtr_ctr1(tvb, offset, pinfo, tree, di, drep);
+               break;
+       }
+       proto_item_set_len(item, offset-old_offset);
 
-static int
-drsuapi_dissect_element_DsReplicaConnection04_u3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaConnection04_u3, 0);
 
        return offset;
 }
 
+/* IDL: struct { */
+/* IDL:        [charset(UTF16)] [unique(1)] uint16 *clone_dc_name; */
+/* IDL:        [charset(UTF16)] [unique(1)] uint16 *site; */
+/* IDL: } */
+
 static int
-drsuapi_dissect_element_DsReplicaConnection04_bind_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_AddCloneDCRequest1_clone_dc_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaConnection04_bind_guid, NULL);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_AddCloneDCRequest1_clone_dc_name_, NDR_POINTER_UNIQUE, "Pointer to Clone Dc Name (uint16)",hf_drsuapi_drsuapi_AddCloneDCRequest1_clone_dc_name);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaConnection04_bind_time(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_AddCloneDCRequest1_clone_dc_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaConnection04_bind_time);
+       char *data;
+
+       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_AddCloneDCRequest1_clone_dc_name, FALSE, &data);
+       proto_item_append_text(tree, ": %s", data);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaConnection04_client_ip_address(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_AddCloneDCRequest1_site(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       proto_tree_add_item(tree, hf_drsuapi_drsuapi_DsReplicaConnection04_client_ip_address, tvb, offset, 4, ENC_BIG_ENDIAN); offset += 4;
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_AddCloneDCRequest1_site_, NDR_POINTER_UNIQUE, "Pointer to Site (uint16)",hf_drsuapi_drsuapi_AddCloneDCRequest1_site);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaConnection04_u5(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_AddCloneDCRequest1_site_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaConnection04_u5, 0);
+       char *data;
+
+       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_AddCloneDCRequest1_site, FALSE, &data);
+       proto_item_append_text(tree, ": %s", data);
 
        return offset;
 }
 
 int
-drsuapi_dissect_struct_DsReplicaConnection04(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_struct_AddCloneDCRequest1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
        proto_item *item = NULL;
        proto_tree *tree = NULL;
        int old_offset;
 
-       ALIGN_TO_8_BYTES;
+       ALIGN_TO_5_BYTES;
 
        old_offset = offset;
 
        if (parent_tree) {
                item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaConnection04);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_AddCloneDCRequest1);
        }
 
-       offset = drsuapi_dissect_element_DsReplicaConnection04_u1(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_AddCloneDCRequest1_clone_dc_name(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_AddCloneDCRequest1_site(tvb, offset, pinfo, tree, di, drep);
+
+
+       proto_item_set_len(item, offset-old_offset);
+
+
+       if (di->call_data->flags & DCERPC_IS_NDR64) {
+               ALIGN_TO_5_BYTES;
+       }
+
+       return offset;
+}
+
+
+/* IDL: [switch_type(uint32)] union { */
+/* IDL: [case(1)] [case(1)] drsuapi_AddCloneDCRequest1 req1; */
+/* IDL: } */
+
+static int
+drsuapi_dissect_element_AddCloneDCRequest_req1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = drsuapi_dissect_struct_AddCloneDCRequest1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_AddCloneDCRequest_req1,0);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_AddCloneDCRequest(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+{
+       proto_item *item = NULL;
+       proto_tree *tree = NULL;
+       int old_offset;
+       guint32 level;
+
+       old_offset = offset;
+       if (parent_tree) {
+               tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_AddCloneDCRequest, &item, "drsuapi_AddCloneDCRequest");
+       }
+
+       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level);
+       ALIGN_TO_5_BYTES;
 
-       offset = drsuapi_dissect_element_DsReplicaConnection04_u2(tvb, offset, pinfo, tree, di, drep);
+       switch(level) {
+               case 1:
+                       offset = drsuapi_dissect_element_AddCloneDCRequest_req1(tvb, offset, pinfo, tree, di, drep);
+               break;
+       }
+       proto_item_set_len(item, offset-old_offset);
 
-       offset = drsuapi_dissect_element_DsReplicaConnection04_u3(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaConnection04_bind_guid(tvb, offset, pinfo, tree, di, drep);
+       return offset;
+}
 
-       offset = drsuapi_dissect_element_DsReplicaConnection04_bind_time(tvb, offset, pinfo, tree, di, drep);
+/* IDL: struct { */
+/* IDL:        [charset(UTF16)] [unique(1)] uint16 *clone_dc_name; */
+/* IDL:        [charset(UTF16)] [unique(1)] uint16 *site; */
+/* IDL:        [range(0,1024)] uint32 password_length; */
+/* IDL:        [charset(UTF16)] [size_is(password_length)] [unique(1)] uint16 *new_dc_account_password; */
+/* IDL: } */
 
-       offset = drsuapi_dissect_element_DsReplicaConnection04_client_ip_address(tvb, offset, pinfo, tree, di, drep);
+static int
+drsuapi_dissect_element_AddCloneDCCtr1_clone_dc_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_AddCloneDCCtr1_clone_dc_name_, NDR_POINTER_UNIQUE, "Pointer to Clone Dc Name (uint16)",hf_drsuapi_drsuapi_AddCloneDCCtr1_clone_dc_name);
 
-       offset = drsuapi_dissect_element_DsReplicaConnection04_u5(tvb, offset, pinfo, tree, di, drep);
+       return offset;
+}
 
+static int
+drsuapi_dissect_element_AddCloneDCCtr1_clone_dc_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       char *data;
 
-       proto_item_set_len(item, offset-old_offset);
+       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_AddCloneDCCtr1_clone_dc_name, FALSE, &data);
+       proto_item_append_text(tree, ": %s", data);
 
+       return offset;
+}
 
-       if (di->call_data->flags & DCERPC_IS_NDR64) {
-               ALIGN_TO_8_BYTES;
-       }
+static int
+drsuapi_dissect_element_AddCloneDCCtr1_site(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_AddCloneDCCtr1_site_, NDR_POINTER_UNIQUE, "Pointer to Site (uint16)",hf_drsuapi_drsuapi_AddCloneDCCtr1_site);
 
        return offset;
 }
 
+static int
+drsuapi_dissect_element_AddCloneDCCtr1_site_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       char *data;
 
-/* IDL: struct { */
-/* IDL:        [range(0,10000)] uint32 count; */
-/* IDL:        uint32 reserved; */
-/* IDL:        [size_is(count)] drsuapi_DsReplicaConnection04 array[*]; */
-/* IDL: } */
+       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_AddCloneDCCtr1_site, FALSE, &data);
+       proto_item_append_text(tree, ": %s", data);
+
+       return offset;
+}
 
 static int
-drsuapi_dissect_element_DsReplicaConnection04Ctr_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_AddCloneDCCtr1_password_length(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaConnection04Ctr_count, 0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_AddCloneDCCtr1_password_length, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaConnection04Ctr_reserved(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_AddCloneDCCtr1_new_dc_account_password(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaConnection04Ctr_reserved, 0);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_AddCloneDCCtr1_new_dc_account_password_, NDR_POINTER_UNIQUE, "Pointer to New Dc Account Password (uint16)",hf_drsuapi_drsuapi_AddCloneDCCtr1_new_dc_account_password);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaConnection04Ctr_array(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_AddCloneDCCtr1_new_dc_account_password_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaConnection04Ctr_array_);
+       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_AddCloneDCCtr1_new_dc_account_password__);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaConnection04Ctr_array_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_AddCloneDCCtr1_new_dc_account_password__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaConnection04(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaConnection04Ctr_array,0);
+       offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_AddCloneDCCtr1_new_dc_account_password, 0);
 
        return offset;
 }
 
 int
-drsuapi_dissect_struct_DsReplicaConnection04Ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_struct_AddCloneDCCtr1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
        proto_item *item = NULL;
        proto_tree *tree = NULL;
        int old_offset;
 
-       ALIGN_TO_8_BYTES;
+       ALIGN_TO_5_BYTES;
 
        old_offset = offset;
 
        if (parent_tree) {
                item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplicaConnection04Ctr);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_AddCloneDCCtr1);
        }
 
-       offset = drsuapi_dissect_element_DsReplicaConnection04Ctr_count(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_AddCloneDCCtr1_clone_dc_name(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaConnection04Ctr_reserved(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_AddCloneDCCtr1_site(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaConnection04Ctr_array(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_AddCloneDCCtr1_password_length(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_AddCloneDCCtr1_new_dc_account_password(tvb, offset, pinfo, tree, di, drep);
 
 
        proto_item_set_len(item, offset-old_offset);
 
 
        if (di->call_data->flags & DCERPC_IS_NDR64) {
-               ALIGN_TO_8_BYTES;
+               ALIGN_TO_5_BYTES;
        }
 
        return offset;
 }
 
 
-/* IDL: struct { */
-/* IDL:        [charset(UTF16)] [unique(1)] uint16 *str1; */
-/* IDL:        uint32 u1; */
-/* IDL:        uint32 u2; */
-/* IDL:        uint32 u3; */
-/* IDL:        uint32 u4; */
-/* IDL:        uint32 u5; */
-/* IDL:        hyper u6; */
-/* IDL:        uint32 u7; */
+/* IDL: [switch_type(uint32)] union { */
+/* IDL: [case(1)] [case(1)] drsuapi_AddCloneDCCtr1 ctr1; */
 /* IDL: } */
 
 static int
-drsuapi_dissect_element_DsReplica06_str1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_AddCloneDCCtr_ctr1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplica06_str1_, NDR_POINTER_UNIQUE, "Pointer to Str1 (uint16)",hf_drsuapi_drsuapi_DsReplica06_str1);
+       offset = drsuapi_dissect_struct_AddCloneDCCtr1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_AddCloneDCCtr_ctr1,0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplica06_str1_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_AddCloneDCCtr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
-       char *data;
+       proto_item *item = NULL;
+       proto_tree *tree = NULL;
+       int old_offset;
+       guint32 level;
 
-       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_DsReplica06_str1, FALSE, &data);
-       proto_item_append_text(tree, ": %s", data);
+       old_offset = offset;
+       if (parent_tree) {
+               tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_AddCloneDCCtr, &item, "drsuapi_AddCloneDCCtr");
+       }
 
-       return offset;
-}
+       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level);
+       ALIGN_TO_5_BYTES;
+
+       switch(level) {
+               case 1:
+                       offset = drsuapi_dissect_element_AddCloneDCCtr_ctr1(tvb, offset, pinfo, tree, di, drep);
+               break;
+       }
+       proto_item_set_len(item, offset-old_offset);
 
-static int
-drsuapi_dissect_element_DsReplica06_u1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplica06_u1, 0);
 
        return offset;
 }
 
+/* IDL: struct { */
+/* IDL:        [charset(UTF16)] [unique(1)] uint16 *account; */
+/* IDL:        [range(0,0xFFFF)] uint32 ngc_key_size; */
+/* IDL:        [flag(LIBNDR_PRINT_ARRAY_HEX)] [size_is(ngc_key_size)] [unique(1)] uint8 *ngc_key; */
+/* IDL: } */
+
 static int
-drsuapi_dissect_element_DsReplica06_u2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_WriteNgcKeyRequest1_account(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplica06_u2, 0);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_WriteNgcKeyRequest1_account_, NDR_POINTER_UNIQUE, "Pointer to Account (uint16)",hf_drsuapi_drsuapi_WriteNgcKeyRequest1_account);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplica06_u3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_WriteNgcKeyRequest1_account_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplica06_u3, 0);
+       char *data;
+
+       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_WriteNgcKeyRequest1_account, FALSE, &data);
+       proto_item_append_text(tree, ": %s", data);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplica06_u4(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_WriteNgcKeyRequest1_ngc_key_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplica06_u4, 0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_WriteNgcKeyRequest1_ngc_key_size, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplica06_u5(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_WriteNgcKeyRequest1_ngc_key(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplica06_u5, 0);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_WriteNgcKeyRequest1_ngc_key_, NDR_POINTER_UNIQUE, "Pointer to Ngc Key (uint8)",hf_drsuapi_drsuapi_WriteNgcKeyRequest1_ngc_key);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplica06_u6(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_WriteNgcKeyRequest1_ngc_key_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplica06_u6, NULL);
+       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_WriteNgcKeyRequest1_ngc_key__);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplica06_u7(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_WriteNgcKeyRequest1_ngc_key__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplica06_u7, 0);
+       offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_WriteNgcKeyRequest1_ngc_key, 0);
 
        return offset;
 }
 
 int
-drsuapi_dissect_struct_DsReplica06(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_struct_WriteNgcKeyRequest1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
        proto_item *item = NULL;
        proto_tree *tree = NULL;
        int old_offset;
 
-       ALIGN_TO_8_BYTES;
+       ALIGN_TO_5_BYTES;
 
        old_offset = offset;
 
        if (parent_tree) {
                item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplica06);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_WriteNgcKeyRequest1);
        }
 
-       offset = drsuapi_dissect_element_DsReplica06_str1(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsReplica06_u1(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsReplica06_u2(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsReplica06_u3(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsReplica06_u4(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsReplica06_u5(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_WriteNgcKeyRequest1_account(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplica06_u6(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_WriteNgcKeyRequest1_ngc_key_size(tvb, offset, pinfo, tree, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplica06_u7(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_WriteNgcKeyRequest1_ngc_key(tvb, offset, pinfo, tree, di, drep);
 
 
        proto_item_set_len(item, offset-old_offset);
 
 
        if (di->call_data->flags & DCERPC_IS_NDR64) {
-               ALIGN_TO_8_BYTES;
+               ALIGN_TO_5_BYTES;
        }
 
        return offset;
 }
 
 
-/* IDL: struct { */
-/* IDL:        [range(0,256)] uint32 count; */
-/* IDL:        uint32 reserved; */
-/* IDL:        [size_is(count)] drsuapi_DsReplica06 array[*]; */
+/* IDL: [switch_type(uint32)] union { */
+/* IDL: [case(1)] [case(1)] drsuapi_WriteNgcKeyRequest1 req1; */
 /* IDL: } */
 
 static int
-drsuapi_dissect_element_DsReplica06Ctr_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_WriteNgcKeyRequest_req1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplica06Ctr_count, 0);
+       offset = drsuapi_dissect_struct_WriteNgcKeyRequest1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_WriteNgcKeyRequest_req1,0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplica06Ctr_reserved(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_WriteNgcKeyRequest(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplica06Ctr_reserved, 0);
+       proto_item *item = NULL;
+       proto_tree *tree = NULL;
+       int old_offset;
+       guint32 level;
 
-       return offset;
-}
+       old_offset = offset;
+       if (parent_tree) {
+               tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_WriteNgcKeyRequest, &item, "drsuapi_WriteNgcKeyRequest");
+       }
+
+       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level);
+       ALIGN_TO_5_BYTES;
+
+       switch(level) {
+               case 1:
+                       offset = drsuapi_dissect_element_WriteNgcKeyRequest_req1(tvb, offset, pinfo, tree, di, drep);
+               break;
+       }
+       proto_item_set_len(item, offset-old_offset);
 
-static int
-drsuapi_dissect_element_DsReplica06Ctr_array(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplica06Ctr_array_);
 
        return offset;
 }
 
+/* IDL: struct { */
+/* IDL:        WERROR ret_val; */
+/* IDL: } */
+
 static int
-drsuapi_dissect_element_DsReplica06Ctr_array_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_WriteNgcKeyCtr1_ret_val(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplica06(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplica06Ctr_array,0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_WriteNgcKeyCtr1_ret_val, 0);
 
        return offset;
 }
 
 int
-drsuapi_dissect_struct_DsReplica06Ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_struct_WriteNgcKeyCtr1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
        proto_item *item = NULL;
        proto_tree *tree = NULL;
        int old_offset;
 
-       ALIGN_TO_8_BYTES;
+       ALIGN_TO_4_BYTES;
 
        old_offset = offset;
 
        if (parent_tree) {
                item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsReplica06Ctr);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_WriteNgcKeyCtr1);
        }
 
-       offset = drsuapi_dissect_element_DsReplica06Ctr_count(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsReplica06Ctr_reserved(tvb, offset, pinfo, tree, di, drep);
-
-       offset = drsuapi_dissect_element_DsReplica06Ctr_array(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_WriteNgcKeyCtr1_ret_val(tvb, offset, pinfo, tree, di, drep);
 
 
        proto_item_set_len(item, offset-old_offset);
 
 
        if (di->call_data->flags & DCERPC_IS_NDR64) {
-               ALIGN_TO_8_BYTES;
+               ALIGN_TO_4_BYTES;
        }
 
        return offset;
 }
 
 
-/* IDL: [switch_type(drsuapi_DsReplicaInfoType)] union { */
-/* IDL: [case(DRSUAPI_DS_REPLICA_INFO_NEIGHBORS)] [case(DRSUAPI_DS_REPLICA_INFO_NEIGHBORS)] [unique(1)] drsuapi_DsReplicaNeighbourCtr *neighbours; */
-/* IDL: [case(DRSUAPI_DS_REPLICA_INFO_CURSORS)] [case(DRSUAPI_DS_REPLICA_INFO_CURSORS)] [unique(1)] drsuapi_DsReplicaCursorCtr *cursors; */
-/* IDL: [case(DRSUAPI_DS_REPLICA_INFO_OBJ_METADATA)] [case(DRSUAPI_DS_REPLICA_INFO_OBJ_METADATA)] [unique(1)] drsuapi_DsReplicaObjMetaDataCtr *objmetadata; */
-/* IDL: [case(DRSUAPI_DS_REPLICA_INFO_KCC_DSA_CONNECT_FAILURES)] [case(DRSUAPI_DS_REPLICA_INFO_KCC_DSA_CONNECT_FAILURES)] [unique(1)] drsuapi_DsReplicaKccDsaFailuresCtr *connectfailures; */
-/* IDL: [case(DRSUAPI_DS_REPLICA_INFO_KCC_DSA_LINK_FAILURES)] [case(DRSUAPI_DS_REPLICA_INFO_KCC_DSA_LINK_FAILURES)] [unique(1)] drsuapi_DsReplicaKccDsaFailuresCtr *linkfailures; */
-/* IDL: [case(DRSUAPI_DS_REPLICA_INFO_PENDING_OPS)] [case(DRSUAPI_DS_REPLICA_INFO_PENDING_OPS)] [unique(1)] drsuapi_DsReplicaOpCtr *pendingops; */
-/* IDL: [case(DRSUAPI_DS_REPLICA_INFO_ATTRIBUTE_VALUE_METADATA)] [case(DRSUAPI_DS_REPLICA_INFO_ATTRIBUTE_VALUE_METADATA)] [unique(1)] drsuapi_DsReplicaAttrValMetaDataCtr *attrvalmetadata; */
-/* IDL: [case(DRSUAPI_DS_REPLICA_INFO_CURSORS2)] [case(DRSUAPI_DS_REPLICA_INFO_CURSORS2)] [unique(1)] drsuapi_DsReplicaCursor2Ctr *cursors2; */
-/* IDL: [case(DRSUAPI_DS_REPLICA_INFO_CURSORS3)] [case(DRSUAPI_DS_REPLICA_INFO_CURSORS3)] [unique(1)] drsuapi_DsReplicaCursor3Ctr *cursors3; */
-/* IDL: [case(DRSUAPI_DS_REPLICA_INFO_OBJ_METADATA2)] [case(DRSUAPI_DS_REPLICA_INFO_OBJ_METADATA2)] [unique(1)] drsuapi_DsReplicaObjMetaData2Ctr *objmetadata2; */
-/* IDL: [case(DRSUAPI_DS_REPLICA_INFO_ATTRIBUTE_VALUE_METADATA2)] [case(DRSUAPI_DS_REPLICA_INFO_ATTRIBUTE_VALUE_METADATA2)] [unique(1)] drsuapi_DsReplicaAttrValMetaData2Ctr *attrvalmetadata2; */
-/* IDL: [case(DRSUAPI_DS_REPLICA_INFO_REPSTO)] [case(DRSUAPI_DS_REPLICA_INFO_REPSTO)] [unique(1)] drsuapi_DsReplicaNeighbourCtr *repsto; */
-/* IDL: [case(DRSUAPI_DS_REPLICA_INFO_CLIENT_CONTEXTS)] [case(DRSUAPI_DS_REPLICA_INFO_CLIENT_CONTEXTS)] [unique(1)] drsuapi_DsReplicaConnection04Ctr *clientctx; */
-/* IDL: [case(DRSUAPI_DS_REPLICA_INFO_UPTODATE_VECTOR_V1)] [case(DRSUAPI_DS_REPLICA_INFO_UPTODATE_VECTOR_V1)] [unique(1)] drsuapi_DsReplicaCursorCtrEx *udv1; */
-/* IDL: [case(DRSUAPI_DS_REPLICA_INFO_SERVER_OUTGOING_CALLS)] [case(DRSUAPI_DS_REPLICA_INFO_SERVER_OUTGOING_CALLS)] [unique(1)] drsuapi_DsReplica06Ctr *srvoutgoingcalls; */
+/* IDL: [switch_type(uint32)] union { */
+/* IDL: [case(1)] [case(1)] drsuapi_WriteNgcKeyCtr1 ctr1; */
 /* IDL: } */
 
 static int
-drsuapi_dissect_element_DsReplicaInfo_neighbours(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_WriteNgcKeyCtr_ctr1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaInfo_neighbours_, NDR_POINTER_UNIQUE, "Pointer to Neighbours (drsuapi_DsReplicaNeighbourCtr)",hf_drsuapi_drsuapi_DsReplicaInfo_neighbours);
+       offset = drsuapi_dissect_struct_WriteNgcKeyCtr1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_WriteNgcKeyCtr_ctr1,0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaInfo_neighbours_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_WriteNgcKeyCtr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaNeighbourCtr(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaInfo_neighbours,0);
+       proto_item *item = NULL;
+       proto_tree *tree = NULL;
+       int old_offset;
+       guint32 level;
+
+       old_offset = offset;
+       if (parent_tree) {
+               tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_WriteNgcKeyCtr, &item, "drsuapi_WriteNgcKeyCtr");
+       }
+
+       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level);
+       ALIGN_TO_4_BYTES;
+
+       switch(level) {
+               case 1:
+                       offset = drsuapi_dissect_element_WriteNgcKeyCtr_ctr1(tvb, offset, pinfo, tree, di, drep);
+               break;
+       }
+       proto_item_set_len(item, offset-old_offset);
+
 
        return offset;
 }
 
+/* IDL: struct { */
+/* IDL:        [charset(UTF16)] [unique(1)] uint16 *account; */
+/* IDL: } */
+
 static int
-drsuapi_dissect_element_DsReplicaInfo_cursors(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_ReadNgcKeyRequest1_account(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaInfo_cursors_, NDR_POINTER_UNIQUE, "Pointer to Cursors (drsuapi_DsReplicaCursorCtr)",hf_drsuapi_drsuapi_DsReplicaInfo_cursors);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_ReadNgcKeyRequest1_account_, NDR_POINTER_UNIQUE, "Pointer to Account (uint16)",hf_drsuapi_drsuapi_ReadNgcKeyRequest1_account);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaInfo_cursors_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_ReadNgcKeyRequest1_account_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaCursorCtr(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaInfo_cursors,0);
+       char *data;
+
+       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_ReadNgcKeyRequest1_account, FALSE, &data);
+       proto_item_append_text(tree, ": %s", data);
+
+       return offset;
+}
+
+int
+drsuapi_dissect_struct_ReadNgcKeyRequest1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+{
+       proto_item *item = NULL;
+       proto_tree *tree = NULL;
+       int old_offset;
+
+       ALIGN_TO_5_BYTES;
+
+       old_offset = offset;
+
+       if (parent_tree) {
+               item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_ReadNgcKeyRequest1);
+       }
+
+       offset = drsuapi_dissect_element_ReadNgcKeyRequest1_account(tvb, offset, pinfo, tree, di, drep);
+
+
+       proto_item_set_len(item, offset-old_offset);
+
+
+       if (di->call_data->flags & DCERPC_IS_NDR64) {
+               ALIGN_TO_5_BYTES;
+       }
 
        return offset;
 }
 
-static int
-drsuapi_dissect_element_DsReplicaInfo_objmetadata(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaInfo_objmetadata_, NDR_POINTER_UNIQUE, "Pointer to Objmetadata (drsuapi_DsReplicaObjMetaDataCtr)",hf_drsuapi_drsuapi_DsReplicaInfo_objmetadata);
 
-       return offset;
-}
+/* IDL: [switch_type(uint32)] union { */
+/* IDL: [case(1)] [case(1)] drsuapi_ReadNgcKeyRequest1 req1; */
+/* IDL: } */
 
 static int
-drsuapi_dissect_element_DsReplicaInfo_objmetadata_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_ReadNgcKeyRequest_req1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaObjMetaDataCtr(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaInfo_objmetadata,0);
+       offset = drsuapi_dissect_struct_ReadNgcKeyRequest1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_ReadNgcKeyRequest_req1,0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaInfo_connectfailures(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_ReadNgcKeyRequest(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaInfo_connectfailures_, NDR_POINTER_UNIQUE, "Pointer to Connectfailures (drsuapi_DsReplicaKccDsaFailuresCtr)",hf_drsuapi_drsuapi_DsReplicaInfo_connectfailures);
+       proto_item *item = NULL;
+       proto_tree *tree = NULL;
+       int old_offset;
+       guint32 level;
 
-       return offset;
-}
+       old_offset = offset;
+       if (parent_tree) {
+               tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_ReadNgcKeyRequest, &item, "drsuapi_ReadNgcKeyRequest");
+       }
 
-static int
-drsuapi_dissect_element_DsReplicaInfo_connectfailures_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = drsuapi_dissect_struct_DsReplicaKccDsaFailuresCtr(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaInfo_connectfailures,0);
+       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level);
+       ALIGN_TO_5_BYTES;
 
-       return offset;
-}
+       switch(level) {
+               case 1:
+                       offset = drsuapi_dissect_element_ReadNgcKeyRequest_req1(tvb, offset, pinfo, tree, di, drep);
+               break;
+       }
+       proto_item_set_len(item, offset-old_offset);
 
-static int
-drsuapi_dissect_element_DsReplicaInfo_linkfailures(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaInfo_linkfailures_, NDR_POINTER_UNIQUE, "Pointer to Linkfailures (drsuapi_DsReplicaKccDsaFailuresCtr)",hf_drsuapi_drsuapi_DsReplicaInfo_linkfailures);
 
        return offset;
 }
 
+/* IDL: struct { */
+/* IDL:        WERROR ret_val; */
+/* IDL:        [range(0,0xFFFF)] uint32 ngc_key_size; */
+/* IDL:        [flag(LIBNDR_PRINT_ARRAY_HEX)] [size_is(ngc_key_size)] [unique(1)] uint8 *ngc_key; */
+/* IDL: } */
+
 static int
-drsuapi_dissect_element_DsReplicaInfo_linkfailures_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_ReadNgcKeyCtr1_ret_val(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaKccDsaFailuresCtr(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaInfo_linkfailures,0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_ReadNgcKeyCtr1_ret_val, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaInfo_pendingops(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_ReadNgcKeyCtr1_ngc_key_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaInfo_pendingops_, NDR_POINTER_UNIQUE, "Pointer to Pendingops (drsuapi_DsReplicaOpCtr)",hf_drsuapi_drsuapi_DsReplicaInfo_pendingops);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_ReadNgcKeyCtr1_ngc_key_size, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaInfo_pendingops_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_ReadNgcKeyCtr1_ngc_key(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaOpCtr(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaInfo_pendingops,0);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_ReadNgcKeyCtr1_ngc_key_, NDR_POINTER_UNIQUE, "Pointer to Ngc Key (uint8)",hf_drsuapi_drsuapi_ReadNgcKeyCtr1_ngc_key);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaInfo_attrvalmetadata(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_ReadNgcKeyCtr1_ngc_key_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaInfo_attrvalmetadata_, NDR_POINTER_UNIQUE, "Pointer to Attrvalmetadata (drsuapi_DsReplicaAttrValMetaDataCtr)",hf_drsuapi_drsuapi_DsReplicaInfo_attrvalmetadata);
+       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_ReadNgcKeyCtr1_ngc_key__);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaInfo_attrvalmetadata_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_ReadNgcKeyCtr1_ngc_key__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaAttrValMetaDataCtr(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaInfo_attrvalmetadata,0);
+       offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_ReadNgcKeyCtr1_ngc_key, 0);
 
        return offset;
 }
 
-static int
-drsuapi_dissect_element_DsReplicaInfo_cursors2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+int
+drsuapi_dissect_struct_ReadNgcKeyCtr1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaInfo_cursors2_, NDR_POINTER_UNIQUE, "Pointer to Cursors2 (drsuapi_DsReplicaCursor2Ctr)",hf_drsuapi_drsuapi_DsReplicaInfo_cursors2);
+       proto_item *item = NULL;
+       proto_tree *tree = NULL;
+       int old_offset;
 
-       return offset;
-}
+       ALIGN_TO_5_BYTES;
 
-static int
-drsuapi_dissect_element_DsReplicaInfo_cursors2_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = drsuapi_dissect_struct_DsReplicaCursor2Ctr(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaInfo_cursors2,0);
+       old_offset = offset;
 
-       return offset;
-}
+       if (parent_tree) {
+               item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_ReadNgcKeyCtr1);
+       }
 
-static int
-drsuapi_dissect_element_DsReplicaInfo_cursors3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaInfo_cursors3_, NDR_POINTER_UNIQUE, "Pointer to Cursors3 (drsuapi_DsReplicaCursor3Ctr)",hf_drsuapi_drsuapi_DsReplicaInfo_cursors3);
+       offset = drsuapi_dissect_element_ReadNgcKeyCtr1_ret_val(tvb, offset, pinfo, tree, di, drep);
 
-       return offset;
-}
+       offset = drsuapi_dissect_element_ReadNgcKeyCtr1_ngc_key_size(tvb, offset, pinfo, tree, di, drep);
 
-static int
-drsuapi_dissect_element_DsReplicaInfo_cursors3_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = drsuapi_dissect_struct_DsReplicaCursor3Ctr(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaInfo_cursors3,0);
+       offset = drsuapi_dissect_element_ReadNgcKeyCtr1_ngc_key(tvb, offset, pinfo, tree, di, drep);
+
+
+       proto_item_set_len(item, offset-old_offset);
+
+
+       if (di->call_data->flags & DCERPC_IS_NDR64) {
+               ALIGN_TO_5_BYTES;
+       }
 
        return offset;
 }
 
+
+/* IDL: [switch_type(uint32)] union { */
+/* IDL: [case(1)] [case(1)] drsuapi_ReadNgcKeyCtr1 ctr1; */
+/* IDL: } */
+
 static int
-drsuapi_dissect_element_DsReplicaInfo_objmetadata2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_ReadNgcKeyCtr_ctr1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaInfo_objmetadata2_, NDR_POINTER_UNIQUE, "Pointer to Objmetadata2 (drsuapi_DsReplicaObjMetaData2Ctr)",hf_drsuapi_drsuapi_DsReplicaInfo_objmetadata2);
+       offset = drsuapi_dissect_struct_ReadNgcKeyCtr1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_ReadNgcKeyCtr_ctr1,0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaInfo_objmetadata2_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_ReadNgcKeyCtr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaObjMetaData2Ctr(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaInfo_objmetadata2,0);
+       proto_item *item = NULL;
+       proto_tree *tree = NULL;
+       int old_offset;
+       guint32 level;
+
+       old_offset = offset;
+       if (parent_tree) {
+               tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_ReadNgcKeyCtr, &item, "drsuapi_ReadNgcKeyCtr");
+       }
+
+       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level);
+       ALIGN_TO_5_BYTES;
+
+       switch(level) {
+               case 1:
+                       offset = drsuapi_dissect_element_ReadNgcKeyCtr_ctr1(tvb, offset, pinfo, tree, di, drep);
+               break;
+       }
+       proto_item_set_len(item, offset-old_offset);
+
 
        return offset;
 }
-
 static int
-drsuapi_dissect_element_DsReplicaInfo_attrvalmetadata2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsBind_bind_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaInfo_attrvalmetadata2_, NDR_POINTER_UNIQUE, "Pointer to Attrvalmetadata2 (drsuapi_DsReplicaAttrValMetaData2Ctr)",hf_drsuapi_drsuapi_DsReplicaInfo_attrvalmetadata2);
+       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsBind_bind_guid_, NDR_POINTER_UNIQUE, "Pointer to Bind Guid (GUID)",hf_drsuapi_drsuapi_DsBind_bind_guid);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaInfo_attrvalmetadata2_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsBind_bind_guid_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaAttrValMetaData2Ctr(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaInfo_attrvalmetadata2,0);
+       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsBind_bind_guid, NULL);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaInfo_repsto(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsBind_bind_info(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaInfo_repsto_, NDR_POINTER_UNIQUE, "Pointer to Repsto (drsuapi_DsReplicaNeighbourCtr)",hf_drsuapi_drsuapi_DsReplicaInfo_repsto);
+       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsBind_bind_info_, NDR_POINTER_UNIQUE, "Pointer to Bind Info (drsuapi_DsBindInfoCtr)",hf_drsuapi_drsuapi_DsBind_bind_info);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaInfo_repsto_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsBind_bind_info_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaNeighbourCtr(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaInfo_repsto,0);
+       offset = drsuapi_dissect_struct_DsBindInfoCtr(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsBind_bind_info,0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaInfo_clientctx(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsBind_bind_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaInfo_clientctx_, NDR_POINTER_UNIQUE, "Pointer to Clientctx (drsuapi_DsReplicaConnection04Ctr)",hf_drsuapi_drsuapi_DsReplicaInfo_clientctx);
+       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsBind_bind_handle_, NDR_POINTER_REF, "Pointer to Bind Handle (policy_handle)",hf_drsuapi_drsuapi_DsBind_bind_handle);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaInfo_clientctx_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsBind_bind_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaConnection04Ctr(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaInfo_clientctx,0);
+       offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsBind_bind_handle, 0);
 
        return offset;
 }
 
+/* IDL: WERROR drsuapi_DsBind( */
+/* IDL: [in] [unique(1)] GUID *bind_guid, */
+/* IDL: [in] [out] [unique(1)] drsuapi_DsBindInfoCtr *bind_info, */
+/* IDL: [out] [ref] policy_handle *bind_handle */
+/* IDL: ); */
+
 static int
-drsuapi_dissect_element_DsReplicaInfo_udv1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_DsBind_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaInfo_udv1_, NDR_POINTER_UNIQUE, "Pointer to Udv1 (drsuapi_DsReplicaCursorCtrEx)",hf_drsuapi_drsuapi_DsReplicaInfo_udv1);
+       guint32 status;
+
+       di->dcerpc_procedure_name="DsBind";
+       offset = drsuapi_dissect_element_DsBind_bind_info(tvb, offset, pinfo, tree, di, drep);
+       offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
+
+       offset = drsuapi_dissect_element_DsBind_bind_handle(tvb, offset, pinfo, tree, di, drep);
+       offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
+
+       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_werror, &status);
+
+       if (status != 0)
+               col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str(status, WERR_errors, "Unknown DOS error 0x%08x"));
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaInfo_udv1_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_DsBind_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplicaCursorCtrEx(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaInfo_udv1,0);
-
+       di->dcerpc_procedure_name="DsBind";
+       offset = drsuapi_dissect_element_DsBind_bind_guid(tvb, offset, pinfo, tree, di, drep);
+       offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
+       offset = drsuapi_dissect_element_DsBind_bind_info(tvb, offset, pinfo, tree, di, drep);
+       offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaInfo_srvoutgoingcalls(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsUnbind_bind_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaInfo_srvoutgoingcalls_, NDR_POINTER_UNIQUE, "Pointer to Srvoutgoingcalls (drsuapi_DsReplica06Ctr)",hf_drsuapi_drsuapi_DsReplicaInfo_srvoutgoingcalls);
+       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsUnbind_bind_handle_, NDR_POINTER_REF, "Pointer to Bind Handle (policy_handle)",hf_drsuapi_drsuapi_DsUnbind_bind_handle);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaInfo_srvoutgoingcalls_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsUnbind_bind_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsReplica06Ctr(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsReplicaInfo_srvoutgoingcalls,0);
+       offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsUnbind_bind_handle, 0);
 
        return offset;
 }
 
+/* IDL: WERROR drsuapi_DsUnbind( */
+/* IDL: [in] [out] [ref] policy_handle *bind_handle */
+/* IDL: ); */
+
 static int
-drsuapi_dissect_DsReplicaInfo(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_DsUnbind_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       proto_item *item = NULL;
-       proto_tree *tree = NULL;
-       int old_offset;
-       guint32 level;
-
-       old_offset = offset;
-       if (parent_tree) {
-               tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_DsReplicaInfo, &item, "drsuapi_DsReplicaInfo");
-       }
-
-       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level);
-       ALIGN_TO_5_BYTES;
-
-       switch(level) {
-               case DRSUAPI_DS_REPLICA_INFO_NEIGHBORS:
-                       offset = drsuapi_dissect_element_DsReplicaInfo_neighbours(tvb, offset, pinfo, tree, di, drep);
-               break;
-
-               case DRSUAPI_DS_REPLICA_INFO_CURSORS:
-                       offset = drsuapi_dissect_element_DsReplicaInfo_cursors(tvb, offset, pinfo, tree, di, drep);
-               break;
-
-               case DRSUAPI_DS_REPLICA_INFO_OBJ_METADATA:
-                       offset = drsuapi_dissect_element_DsReplicaInfo_objmetadata(tvb, offset, pinfo, tree, di, drep);
-               break;
-
-               case DRSUAPI_DS_REPLICA_INFO_KCC_DSA_CONNECT_FAILURES:
-                       offset = drsuapi_dissect_element_DsReplicaInfo_connectfailures(tvb, offset, pinfo, tree, di, drep);
-               break;
-
-               case DRSUAPI_DS_REPLICA_INFO_KCC_DSA_LINK_FAILURES:
-                       offset = drsuapi_dissect_element_DsReplicaInfo_linkfailures(tvb, offset, pinfo, tree, di, drep);
-               break;
-
-               case DRSUAPI_DS_REPLICA_INFO_PENDING_OPS:
-                       offset = drsuapi_dissect_element_DsReplicaInfo_pendingops(tvb, offset, pinfo, tree, di, drep);
-               break;
-
-               case DRSUAPI_DS_REPLICA_INFO_ATTRIBUTE_VALUE_METADATA:
-                       offset = drsuapi_dissect_element_DsReplicaInfo_attrvalmetadata(tvb, offset, pinfo, tree, di, drep);
-               break;
-
-               case DRSUAPI_DS_REPLICA_INFO_CURSORS2:
-                       offset = drsuapi_dissect_element_DsReplicaInfo_cursors2(tvb, offset, pinfo, tree, di, drep);
-               break;
-
-               case DRSUAPI_DS_REPLICA_INFO_CURSORS3:
-                       offset = drsuapi_dissect_element_DsReplicaInfo_cursors3(tvb, offset, pinfo, tree, di, drep);
-               break;
-
-               case DRSUAPI_DS_REPLICA_INFO_OBJ_METADATA2:
-                       offset = drsuapi_dissect_element_DsReplicaInfo_objmetadata2(tvb, offset, pinfo, tree, di, drep);
-               break;
-
-               case DRSUAPI_DS_REPLICA_INFO_ATTRIBUTE_VALUE_METADATA2:
-                       offset = drsuapi_dissect_element_DsReplicaInfo_attrvalmetadata2(tvb, offset, pinfo, tree, di, drep);
-               break;
-
-               case DRSUAPI_DS_REPLICA_INFO_REPSTO:
-                       offset = drsuapi_dissect_element_DsReplicaInfo_repsto(tvb, offset, pinfo, tree, di, drep);
-               break;
-
-               case DRSUAPI_DS_REPLICA_INFO_CLIENT_CONTEXTS:
-                       offset = drsuapi_dissect_element_DsReplicaInfo_clientctx(tvb, offset, pinfo, tree, di, drep);
-               break;
+       guint32 status;
 
-               case DRSUAPI_DS_REPLICA_INFO_UPTODATE_VECTOR_V1:
-                       offset = drsuapi_dissect_element_DsReplicaInfo_udv1(tvb, offset, pinfo, tree, di, drep);
-               break;
+       di->dcerpc_procedure_name="DsUnbind";
+       offset = drsuapi_dissect_element_DsUnbind_bind_handle(tvb, offset, pinfo, tree, di, drep);
+       offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
 
-               case DRSUAPI_DS_REPLICA_INFO_SERVER_OUTGOING_CALLS:
-                       offset = drsuapi_dissect_element_DsReplicaInfo_srvoutgoingcalls(tvb, offset, pinfo, tree, di, drep);
-               break;
-       }
-       proto_item_set_len(item, offset-old_offset);
+       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_werror, &status);
 
+       if (status != 0)
+               col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str(status, WERR_errors, "Unknown DOS error 0x%08x"));
 
        return offset;
 }
 
-/* IDL: struct { */
-/* IDL:        [range(0,10000)] uint32 num_entries; */
-/* IDL:        [size_is(num_entries)] [unique(1)] drsuapi_DsGetMembershipsCtr1 **ctrl_array; */
-/* IDL: } */
+static int
+drsuapi_dissect_DsUnbind_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       di->dcerpc_procedure_name="DsUnbind";
+       offset = drsuapi_dissect_element_DsUnbind_bind_handle(tvb, offset, pinfo, tree, di, drep);
+       offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
+       return offset;
+}
 
 static int
-drsuapi_dissect_element_DsGetMemberships2Ctr1_num_entries(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaSync_bind_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetMemberships2Ctr1_num_entries, 0);
+       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaSync_bind_handle_, NDR_POINTER_REF, "Pointer to Bind Handle (policy_handle)",hf_drsuapi_drsuapi_DsReplicaSync_bind_handle);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetMemberships2Ctr1_ctrl_array(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaSync_bind_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetMemberships2Ctr1_ctrl_array_, NDR_POINTER_UNIQUE, "Pointer to Ctrl Array (drsuapi_DsGetMembershipsCtr1)",hf_drsuapi_drsuapi_DsGetMemberships2Ctr1_ctrl_array);
+       offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaSync_bind_handle, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetMemberships2Ctr1_ctrl_array_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaSync_level(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetMemberships2Ctr1_ctrl_array__);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaSync_level, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetMemberships2Ctr1_ctrl_array__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaSync_req(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetMemberships2Ctr1_ctrl_array___, NDR_POINTER_UNIQUE, "Pointer to Ctrl Array (drsuapi_DsGetMembershipsCtr1)",hf_drsuapi_drsuapi_DsGetMemberships2Ctr1_ctrl_array);
+       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaSync_req_, NDR_POINTER_REF, "Pointer to Req (drsuapi_DsReplicaSyncRequest)",hf_drsuapi_drsuapi_DsReplicaSync_req);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetMemberships2Ctr1_ctrl_array___(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaSync_req_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsGetMembershipsCtr1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetMemberships2Ctr1_ctrl_array,0);
+       offset = drsuapi_dissect_DsReplicaSyncRequest(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaSync_req, 0);
 
        return offset;
 }
 
-int
-drsuapi_dissect_struct_DsGetMemberships2Ctr1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+/* IDL: WERROR drsuapi_DsReplicaSync( */
+/* IDL: [in] [ref] policy_handle *bind_handle, */
+/* IDL: [in] uint32 level, */
+/* IDL: [in] [ref] [switch_is(level)] drsuapi_DsReplicaSyncRequest *req */
+/* IDL: ); */
+
+static int
+drsuapi_dissect_DsReplicaSync_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       proto_item *item = NULL;
-       proto_tree *tree = NULL;
-       int old_offset;
+       guint32 status;
 
-       ALIGN_TO_5_BYTES;
+       di->dcerpc_procedure_name="DsReplicaSync";
+       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_werror, &status);
 
-       old_offset = offset;
+       if (status != 0)
+               col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str(status, WERR_errors, "Unknown DOS error 0x%08x"));
 
-       if (parent_tree) {
-               item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsGetMemberships2Ctr1);
-       }
+       return offset;
+}
 
-       offset = drsuapi_dissect_element_DsGetMemberships2Ctr1_num_entries(tvb, offset, pinfo, tree, di, drep);
+static int
+drsuapi_dissect_DsReplicaSync_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       di->dcerpc_procedure_name="DsReplicaSync";
+       offset = drsuapi_dissect_element_DsReplicaSync_bind_handle(tvb, offset, pinfo, tree, di, drep);
+       offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaSync_level(tvb, offset, pinfo, tree, di, drep);
+       offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaSync_req(tvb, offset, pinfo, tree, di, drep);
+       offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
+       return offset;
+}
 
-       offset = drsuapi_dissect_element_DsGetMemberships2Ctr1_ctrl_array(tvb, offset, pinfo, tree, di, drep);
+static int
+drsuapi_dissect_element_DsGetNCChanges_bind_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNCChanges_bind_handle_, NDR_POINTER_REF, "Pointer to Bind Handle (policy_handle)",hf_drsuapi_drsuapi_DsGetNCChanges_bind_handle);
 
+       return offset;
+}
 
-       proto_item_set_len(item, offset-old_offset);
+static int
+drsuapi_dissect_element_DsGetNCChanges_bind_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChanges_bind_handle, 0);
 
+       return offset;
+}
 
-       if (di->call_data->flags & DCERPC_IS_NDR64) {
-               ALIGN_TO_5_BYTES;
-       }
+static int
+drsuapi_dissect_element_DsGetNCChanges_level(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChanges_level, 0);
 
        return offset;
 }
 
+static int
+drsuapi_dissect_element_DsGetNCChanges_req(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNCChanges_req_, NDR_POINTER_REF, "Pointer to Req (drsuapi_DsGetNCChangesRequest)",hf_drsuapi_drsuapi_DsGetNCChanges_req);
 
-/* IDL: [switch_type(uint32)] union { */
-/* IDL: [case(1)] [case(1)] drsuapi_DsGetMembershipsCtr1 ctr1; */
-/* IDL: } */
+       return offset;
+}
 
 static int
-drsuapi_dissect_element_DsGetMemberships2Ctr_ctr1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetNCChanges_req_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsGetMembershipsCtr1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetMemberships2Ctr_ctr1,0);
+       offset = drsuapi_dissect_DsGetNCChangesRequest(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChanges_req, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_DsGetMemberships2Ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_element_DsGetNCChanges_level_out(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       proto_item *item = NULL;
-       proto_tree *tree = NULL;
-       int old_offset;
-       guint32 level;
+       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNCChanges_level_out_, NDR_POINTER_REF, "Pointer to Level Out (uint32)",hf_drsuapi_drsuapi_DsGetNCChanges_level_out);
 
-       old_offset = offset;
-       if (parent_tree) {
-               tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_DsGetMemberships2Ctr, &item, "drsuapi_DsGetMemberships2Ctr");
-       }
+       return offset;
+}
 
-       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level);
-       ALIGN_TO_5_BYTES;
+static int
+drsuapi_dissect_element_DsGetNCChanges_level_out_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChanges_level_out, 0);
 
-       switch(level) {
-               case 1:
-                       offset = drsuapi_dissect_element_DsGetMemberships2Ctr_ctr1(tvb, offset, pinfo, tree, di, drep);
-               break;
-       }
-       proto_item_set_len(item, offset-old_offset);
+       return offset;
+}
 
+static int
+drsuapi_dissect_element_DsGetNCChanges_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNCChanges_ctr_, NDR_POINTER_REF, "Pointer to Ctr (drsuapi_DsGetNCChangesCtr)",hf_drsuapi_drsuapi_DsGetNCChanges_ctr);
 
        return offset;
 }
 
-/* IDL: struct { */
-/* IDL:        [range(1,10000)] uint32 num_req; */
-/* IDL:        [size_is(num_req)] [unique(1)] drsuapi_DsGetMembershipsRequest1 **req_array; */
-/* IDL: } */
-
 static int
-drsuapi_dissect_element_DsGetMemberships2Request1_num_req(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetNCChanges_ctr_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetMemberships2Request1_num_req, 0);
+       offset = drsuapi_dissect_DsGetNCChangesCtr(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChanges_ctr, 0);
 
        return offset;
 }
 
+/* IDL: WERROR drsuapi_DsGetNCChanges( */
+/* IDL: [in] [ref] policy_handle *bind_handle, */
+/* IDL: [in] uint32 level, */
+/* IDL: [in] [ref] [switch_is(level)] drsuapi_DsGetNCChangesRequest *req, */
+/* IDL: [out] [ref] uint32 *level_out, */
+/* IDL: [out] [ref] [switch_is(*level_out)] drsuapi_DsGetNCChangesCtr *ctr */
+/* IDL: ); */
+
 static int
-drsuapi_dissect_element_DsGetMemberships2Request1_req_array(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_DsGetNCChanges_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetMemberships2Request1_req_array_, NDR_POINTER_UNIQUE, "Pointer to Req Array (drsuapi_DsGetMembershipsRequest1)",hf_drsuapi_drsuapi_DsGetMemberships2Request1_req_array);
+       guint32 status;
+
+       di->dcerpc_procedure_name="DsGetNCChanges";
+       offset = drsuapi_dissect_element_DsGetNCChanges_level_out(tvb, offset, pinfo, tree, di, drep);
+       offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
+
+       offset = drsuapi_dissect_element_DsGetNCChanges_ctr(tvb, offset, pinfo, tree, di, drep);
+       offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
+
+       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_werror, &status);
+
+       if (status != 0)
+               col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str(status, WERR_errors, "Unknown DOS error 0x%08x"));
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetMemberships2Request1_req_array_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_DsGetNCChanges_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetMemberships2Request1_req_array__);
-
+       di->dcerpc_procedure_name="DsGetNCChanges";
+       offset = drsuapi_dissect_element_DsGetNCChanges_bind_handle(tvb, offset, pinfo, tree, di, drep);
+       offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
+       offset = drsuapi_dissect_element_DsGetNCChanges_level(tvb, offset, pinfo, tree, di, drep);
+       offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
+       offset = drsuapi_dissect_element_DsGetNCChanges_req(tvb, offset, pinfo, tree, di, drep);
+       offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetMemberships2Request1_req_array__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaUpdateRefs_bind_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetMemberships2Request1_req_array___, NDR_POINTER_UNIQUE, "Pointer to Req Array (drsuapi_DsGetMembershipsRequest1)",hf_drsuapi_drsuapi_DsGetMemberships2Request1_req_array);
+       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaUpdateRefs_bind_handle_, NDR_POINTER_REF, "Pointer to Bind Handle (policy_handle)",hf_drsuapi_drsuapi_DsReplicaUpdateRefs_bind_handle);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetMemberships2Request1_req_array___(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaUpdateRefs_bind_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsGetMembershipsRequest1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetMemberships2Request1_req_array,0);
+       offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaUpdateRefs_bind_handle, 0);
 
        return offset;
 }
 
-int
-drsuapi_dissect_struct_DsGetMemberships2Request1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+static int
+drsuapi_dissect_element_DsReplicaUpdateRefs_level(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       proto_item *item = NULL;
-       proto_tree *tree = NULL;
-       int old_offset;
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaUpdateRefs_level, 0);
 
-       ALIGN_TO_5_BYTES;
+       return offset;
+}
 
-       old_offset = offset;
+static int
+drsuapi_dissect_element_DsReplicaUpdateRefs_req(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = drsuapi_dissect_DsReplicaUpdateRefsRequest(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaUpdateRefs_req, 0);
 
-       if (parent_tree) {
-               item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsGetMemberships2Request1);
-       }
+       return offset;
+}
 
-       offset = drsuapi_dissect_element_DsGetMemberships2Request1_num_req(tvb, offset, pinfo, tree, di, drep);
+/* IDL: WERROR drsuapi_DsReplicaUpdateRefs( */
+/* IDL: [in] [ref] policy_handle *bind_handle, */
+/* IDL: [in] uint32 level, */
+/* IDL: [in] [switch_is(level)] drsuapi_DsReplicaUpdateRefsRequest req */
+/* IDL: ); */
 
-       offset = drsuapi_dissect_element_DsGetMemberships2Request1_req_array(tvb, offset, pinfo, tree, di, drep);
+static int
+drsuapi_dissect_DsReplicaUpdateRefs_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       guint32 status;
 
+       di->dcerpc_procedure_name="DsReplicaUpdateRefs";
+       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_werror, &status);
 
-       proto_item_set_len(item, offset-old_offset);
+       if (status != 0)
+               col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str(status, WERR_errors, "Unknown DOS error 0x%08x"));
 
+       return offset;
+}
 
-       if (di->call_data->flags & DCERPC_IS_NDR64) {
-               ALIGN_TO_5_BYTES;
-       }
+static int
+drsuapi_dissect_DsReplicaUpdateRefs_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       di->dcerpc_procedure_name="DsReplicaUpdateRefs";
+       offset = drsuapi_dissect_element_DsReplicaUpdateRefs_bind_handle(tvb, offset, pinfo, tree, di, drep);
+       offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaUpdateRefs_level(tvb, offset, pinfo, tree, di, drep);
+       offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaUpdateRefs_req(tvb, offset, pinfo, tree, di, drep);
+       offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsReplicaAdd_bind_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaAdd_bind_handle_, NDR_POINTER_REF, "Pointer to Bind Handle (policy_handle)",hf_drsuapi_drsuapi_DsReplicaAdd_bind_handle);
 
        return offset;
 }
 
+static int
+drsuapi_dissect_element_DsReplicaAdd_bind_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAdd_bind_handle, 0);
 
-/* IDL: [switch_type(uint32)] union { */
-/* IDL: [case(1)] [case(1)] drsuapi_DsGetMemberships2Request1 req1; */
-/* IDL: } */
+       return offset;
+}
 
 static int
-drsuapi_dissect_element_DsGetMemberships2Request_req1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaAdd_level(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsGetMemberships2Request1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetMemberships2Request_req1,0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAdd_level, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_DsGetMemberships2Request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_element_DsReplicaAdd_req(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       proto_item *item = NULL;
-       proto_tree *tree = NULL;
-       int old_offset;
-       guint32 level;
+       offset = drsuapi_dissect_DsReplicaAddRequest(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAdd_req, 0);
 
-       old_offset = offset;
-       if (parent_tree) {
-               tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_DsGetMemberships2Request, &item, "drsuapi_DsGetMemberships2Request");
-       }
+       return offset;
+}
 
-       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level);
-       ALIGN_TO_5_BYTES;
+/* IDL: WERROR drsuapi_DsReplicaAdd( */
+/* IDL: [in] [ref] policy_handle *bind_handle, */
+/* IDL: [in] uint32 level, */
+/* IDL: [in] [switch_is(level)] drsuapi_DsReplicaAddRequest req */
+/* IDL: ); */
 
-       switch(level) {
-               case 1:
-                       offset = drsuapi_dissect_element_DsGetMemberships2Request_req1(tvb, offset, pinfo, tree, di, drep);
-               break;
-       }
-       proto_item_set_len(item, offset-old_offset);
+static int
+drsuapi_dissect_DsReplicaAdd_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       guint32 status;
+
+       di->dcerpc_procedure_name="DsReplicaAdd";
+       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_werror, &status);
 
+       if (status != 0)
+               col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str(status, WERR_errors, "Unknown DOS error 0x%08x"));
 
        return offset;
 }
 
-/* IDL: struct { */
-/* IDL:        WERROR error_code; */
-/* IDL:        uint32 site_cost; */
-/* IDL: } */
-
 static int
-drsuapi_dissect_element_DsSiteCostInfo_error_code(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_DsReplicaAdd_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsSiteCostInfo_error_code, 0);
-
+       di->dcerpc_procedure_name="DsReplicaAdd";
+       offset = drsuapi_dissect_element_DsReplicaAdd_bind_handle(tvb, offset, pinfo, tree, di, drep);
+       offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaAdd_level(tvb, offset, pinfo, tree, di, drep);
+       offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaAdd_req(tvb, offset, pinfo, tree, di, drep);
+       offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsSiteCostInfo_site_cost(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaDel_bind_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsSiteCostInfo_site_cost, 0);
+       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaDel_bind_handle_, NDR_POINTER_REF, "Pointer to Bind Handle (policy_handle)",hf_drsuapi_drsuapi_DsReplicaDel_bind_handle);
 
        return offset;
 }
 
-int
-drsuapi_dissect_struct_DsSiteCostInfo(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+static int
+drsuapi_dissect_element_DsReplicaDel_bind_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       proto_item *item = NULL;
-       proto_tree *tree = NULL;
-       int old_offset;
+       offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaDel_bind_handle, 0);
 
-       ALIGN_TO_4_BYTES;
+       return offset;
+}
 
-       old_offset = offset;
+static int
+drsuapi_dissect_element_DsReplicaDel_level(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaDel_level, 0);
 
-       if (parent_tree) {
-               item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsSiteCostInfo);
-       }
+       return offset;
+}
 
-       offset = drsuapi_dissect_element_DsSiteCostInfo_error_code(tvb, offset, pinfo, tree, di, drep);
+static int
+drsuapi_dissect_element_DsReplicaDel_req(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = drsuapi_dissect_DsReplicaDelRequest(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaDel_req, 0);
 
-       offset = drsuapi_dissect_element_DsSiteCostInfo_site_cost(tvb, offset, pinfo, tree, di, drep);
+       return offset;
+}
 
+/* IDL: WERROR drsuapi_DsReplicaDel( */
+/* IDL: [in] [ref] policy_handle *bind_handle, */
+/* IDL: [in] uint32 level, */
+/* IDL: [in] [switch_is(level)] drsuapi_DsReplicaDelRequest req */
+/* IDL: ); */
 
-       proto_item_set_len(item, offset-old_offset);
+static int
+drsuapi_dissect_DsReplicaDel_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       guint32 status;
 
+       di->dcerpc_procedure_name="DsReplicaDel";
+       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_werror, &status);
 
-       if (di->call_data->flags & DCERPC_IS_NDR64) {
-               ALIGN_TO_4_BYTES;
-       }
+       if (status != 0)
+               col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str(status, WERR_errors, "Unknown DOS error 0x%08x"));
 
        return offset;
 }
 
-
-/* IDL: struct { */
-/* IDL:        [range(0,10000)] uint32 num_info; */
-/* IDL:        [size_is(num_info)] [unique(1)] drsuapi_DsSiteCostInfo *info; */
-/* IDL:        [value(0)] uint32 flags_reserved; */
-/* IDL: } */
-
 static int
-drsuapi_dissect_element_QuerySitesByCostCtr1_num_info(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_DsReplicaDel_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_QuerySitesByCostCtr1_num_info, 0);
-
+       di->dcerpc_procedure_name="DsReplicaDel";
+       offset = drsuapi_dissect_element_DsReplicaDel_bind_handle(tvb, offset, pinfo, tree, di, drep);
+       offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaDel_level(tvb, offset, pinfo, tree, di, drep);
+       offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaDel_req(tvb, offset, pinfo, tree, di, drep);
+       offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
        return offset;
 }
 
 static int
-drsuapi_dissect_element_QuerySitesByCostCtr1_info(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaMod_bind_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_QuerySitesByCostCtr1_info_, NDR_POINTER_UNIQUE, "Pointer to Info (drsuapi_DsSiteCostInfo)",hf_drsuapi_drsuapi_QuerySitesByCostCtr1_info);
+       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaMod_bind_handle_, NDR_POINTER_REF, "Pointer to Bind Handle (policy_handle)",hf_drsuapi_drsuapi_DsReplicaMod_bind_handle);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_QuerySitesByCostCtr1_info_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaMod_bind_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_QuerySitesByCostCtr1_info__);
+       offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaMod_bind_handle, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_QuerySitesByCostCtr1_info__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaMod_level(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsSiteCostInfo(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_QuerySitesByCostCtr1_info,0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaMod_level, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_QuerySitesByCostCtr1_flags_reserved(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaMod_req(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_QuerySitesByCostCtr1_flags_reserved, 0);
+       offset = drsuapi_dissect_DsReplicaModRequest(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaMod_req, 0);
 
        return offset;
 }
 
-int
-drsuapi_dissect_struct_QuerySitesByCostCtr1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
-{
-       proto_item *item = NULL;
-       proto_tree *tree = NULL;
-       int old_offset;
-
-       ALIGN_TO_5_BYTES;
+/* IDL: WERROR drsuapi_DsReplicaMod( */
+/* IDL: [in] [ref] policy_handle *bind_handle, */
+/* IDL: [in] uint32 level, */
+/* IDL: [in] [switch_is(level)] drsuapi_DsReplicaModRequest req */
+/* IDL: ); */
 
-       old_offset = offset;
+static int
+drsuapi_dissect_DsReplicaMod_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       guint32 status;
 
-       if (parent_tree) {
-               item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_QuerySitesByCostCtr1);
-       }
+       di->dcerpc_procedure_name="DsReplicaMod";
+       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_werror, &status);
 
-       offset = drsuapi_dissect_element_QuerySitesByCostCtr1_num_info(tvb, offset, pinfo, tree, di, drep);
+       if (status != 0)
+               col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str(status, WERR_errors, "Unknown DOS error 0x%08x"));
 
-       offset = drsuapi_dissect_element_QuerySitesByCostCtr1_info(tvb, offset, pinfo, tree, di, drep);
+       return offset;
+}
 
-       offset = drsuapi_dissect_element_QuerySitesByCostCtr1_flags_reserved(tvb, offset, pinfo, tree, di, drep);
+static int
+drsuapi_dissect_DsReplicaMod_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       di->dcerpc_procedure_name="DsReplicaMod";
+       offset = drsuapi_dissect_element_DsReplicaMod_bind_handle(tvb, offset, pinfo, tree, di, drep);
+       offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaMod_level(tvb, offset, pinfo, tree, di, drep);
+       offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaMod_req(tvb, offset, pinfo, tree, di, drep);
+       offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
+       return offset;
+}
 
+/* IDL: WERROR DRSUAPI_VERIFY_NAMES( */
+/* IDL:  */
+/* IDL: ); */
 
-       proto_item_set_len(item, offset-old_offset);
+static int
+drsuapi_dissect_DRSUAPI_VERIFY_NAMES_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       guint32 status;
 
+       di->dcerpc_procedure_name="DRSUAPI_VERIFY_NAMES";
+       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_werror, &status);
 
-       if (di->call_data->flags & DCERPC_IS_NDR64) {
-               ALIGN_TO_5_BYTES;
-       }
+       if (status != 0)
+               col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str(status, WERR_errors, "Unknown DOS error 0x%08x"));
 
        return offset;
 }
 
-
-/* IDL: [switch_type(uint32)] union { */
-/* IDL: [case(1)] [case(1)] drsuapi_QuerySitesByCostCtr1 ctr1; */
-/* IDL: } */
-
 static int
-drsuapi_dissect_element_QuerySitesByCostCtr_ctr1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_DRSUAPI_VERIFY_NAMES_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_QuerySitesByCostCtr1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_QuerySitesByCostCtr_ctr1,0);
-
+       di->dcerpc_procedure_name="DRSUAPI_VERIFY_NAMES";
        return offset;
 }
 
 static int
-drsuapi_dissect_QuerySitesByCostCtr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_element_DsGetMemberships_bind_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       proto_item *item = NULL;
-       proto_tree *tree = NULL;
-       int old_offset;
-       guint32 level;
-
-       old_offset = offset;
-       if (parent_tree) {
-               tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_QuerySitesByCostCtr, &item, "drsuapi_QuerySitesByCostCtr");
-       }
-
-       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level);
-       ALIGN_TO_5_BYTES;
-
-       switch(level) {
-               case 1:
-                       offset = drsuapi_dissect_element_QuerySitesByCostCtr_ctr1(tvb, offset, pinfo, tree, di, drep);
-               break;
-       }
-       proto_item_set_len(item, offset-old_offset);
-
+       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetMemberships_bind_handle_, NDR_POINTER_REF, "Pointer to Bind Handle (policy_handle)",hf_drsuapi_drsuapi_DsGetMemberships_bind_handle);
 
        return offset;
 }
 
-/* IDL: struct { */
-/* IDL:        [charset(UTF16)] [unique(1)] uint16 *site_from; */
-/* IDL:        [range(1,10000)] uint32 num_req; */
-/* IDL:        [charset(UTF16)] [size_is(num_req)] [unique(1)] uint16 **site_to; */
-/* IDL:        uint32 flags; */
-/* IDL: } */
-
 static int
-drsuapi_dissect_element_QuerySitesByCostRequest1_site_from(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetMemberships_bind_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_QuerySitesByCostRequest1_site_from_, NDR_POINTER_UNIQUE, "Pointer to Site From (uint16)",hf_drsuapi_drsuapi_QuerySitesByCostRequest1_site_from);
+       offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetMemberships_bind_handle, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_QuerySitesByCostRequest1_site_from_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetMemberships_level(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       char *data;
-
-       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_QuerySitesByCostRequest1_site_from, FALSE, &data);
-       proto_item_append_text(tree, ": %s", data);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetMemberships_level, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_QuerySitesByCostRequest1_num_req(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetMemberships_req(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_QuerySitesByCostRequest1_num_req, 0);
+       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetMemberships_req_, NDR_POINTER_REF, "Pointer to Req (drsuapi_DsGetMembershipsRequest)",hf_drsuapi_drsuapi_DsGetMemberships_req);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_QuerySitesByCostRequest1_site_to(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetMemberships_req_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_QuerySitesByCostRequest1_site_to_, NDR_POINTER_UNIQUE, "Pointer to Site To (uint16)",hf_drsuapi_drsuapi_QuerySitesByCostRequest1_site_to);
+       offset = drsuapi_dissect_DsGetMembershipsRequest(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetMemberships_req, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_QuerySitesByCostRequest1_site_to_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetMemberships_level_out(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_QuerySitesByCostRequest1_site_to__);
+       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetMemberships_level_out_, NDR_POINTER_REF, "Pointer to Level Out (uint32)",hf_drsuapi_drsuapi_DsGetMemberships_level_out);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_QuerySitesByCostRequest1_site_to__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetMemberships_level_out_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_QuerySitesByCostRequest1_site_to___, NDR_POINTER_UNIQUE, "Pointer to Site To (uint16)",hf_drsuapi_drsuapi_QuerySitesByCostRequest1_site_to);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetMemberships_level_out, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_QuerySitesByCostRequest1_site_to___(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetMemberships_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       char *data;
-
-       offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_drsuapi_drsuapi_QuerySitesByCostRequest1_site_to, FALSE, &data);
-       proto_item_append_text(tree, ": %s", data);
+       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetMemberships_ctr_, NDR_POINTER_REF, "Pointer to Ctr (drsuapi_DsGetMembershipsCtr)",hf_drsuapi_drsuapi_DsGetMemberships_ctr);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_QuerySitesByCostRequest1_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetMemberships_ctr_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_QuerySitesByCostRequest1_flags, 0);
+       offset = drsuapi_dissect_DsGetMembershipsCtr(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetMemberships_ctr, 0);
 
        return offset;
 }
 
-int
-drsuapi_dissect_struct_QuerySitesByCostRequest1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
-{
-       proto_item *item = NULL;
-       proto_tree *tree = NULL;
-       int old_offset;
+/* IDL: WERROR drsuapi_DsGetMemberships( */
+/* IDL: [in] [ref] policy_handle *bind_handle, */
+/* IDL: [in] uint32 level, */
+/* IDL: [in] [ref] [switch_is(level)] drsuapi_DsGetMembershipsRequest *req, */
+/* IDL: [out] [ref] uint32 *level_out, */
+/* IDL: [out] [ref] [switch_is(*level_out)] drsuapi_DsGetMembershipsCtr *ctr */
+/* IDL: ); */
 
-       ALIGN_TO_5_BYTES;
+static int
+drsuapi_dissect_DsGetMemberships_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       guint32 status;
 
-       old_offset = offset;
+       di->dcerpc_procedure_name="DsGetMemberships";
+       offset = drsuapi_dissect_element_DsGetMemberships_level_out(tvb, offset, pinfo, tree, di, drep);
+       offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
 
-       if (parent_tree) {
-               item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
-               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_QuerySitesByCostRequest1);
-       }
+       offset = drsuapi_dissect_element_DsGetMemberships_ctr(tvb, offset, pinfo, tree, di, drep);
+       offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
 
-       offset = drsuapi_dissect_element_QuerySitesByCostRequest1_site_from(tvb, offset, pinfo, tree, di, drep);
+       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_werror, &status);
 
-       offset = drsuapi_dissect_element_QuerySitesByCostRequest1_num_req(tvb, offset, pinfo, tree, di, drep);
+       if (status != 0)
+               col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str(status, WERR_errors, "Unknown DOS error 0x%08x"));
 
-       offset = drsuapi_dissect_element_QuerySitesByCostRequest1_site_to(tvb, offset, pinfo, tree, di, drep);
+       return offset;
+}
 
-       offset = drsuapi_dissect_element_QuerySitesByCostRequest1_flags(tvb, offset, pinfo, tree, di, drep);
+static int
+drsuapi_dissect_DsGetMemberships_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       di->dcerpc_procedure_name="DsGetMemberships";
+       offset = drsuapi_dissect_element_DsGetMemberships_bind_handle(tvb, offset, pinfo, tree, di, drep);
+       offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
+       offset = drsuapi_dissect_element_DsGetMemberships_level(tvb, offset, pinfo, tree, di, drep);
+       offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
+       offset = drsuapi_dissect_element_DsGetMemberships_req(tvb, offset, pinfo, tree, di, drep);
+       offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
+       return offset;
+}
 
+/* IDL: WERROR DRSUAPI_INTER_DOMAIN_MOVE( */
+/* IDL:  */
+/* IDL: ); */
 
-       proto_item_set_len(item, offset-old_offset);
+static int
+drsuapi_dissect_DRSUAPI_INTER_DOMAIN_MOVE_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       guint32 status;
 
+       di->dcerpc_procedure_name="DRSUAPI_INTER_DOMAIN_MOVE";
+       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_werror, &status);
 
-       if (di->call_data->flags & DCERPC_IS_NDR64) {
-               ALIGN_TO_5_BYTES;
-       }
+       if (status != 0)
+               col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str(status, WERR_errors, "Unknown DOS error 0x%08x"));
 
        return offset;
 }
 
-
-/* IDL: [switch_type(uint32)] union { */
-/* IDL: [case(1)] [case(1)] drsuapi_QuerySitesByCostRequest1 req1; */
-/* IDL: } */
-
 static int
-drsuapi_dissect_element_QuerySitesByCostRequest_req1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_DRSUAPI_INTER_DOMAIN_MOVE_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_QuerySitesByCostRequest1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_QuerySitesByCostRequest_req1,0);
-
+       di->dcerpc_procedure_name="DRSUAPI_INTER_DOMAIN_MOVE";
        return offset;
 }
 
 static int
-drsuapi_dissect_QuerySitesByCostRequest(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+drsuapi_dissect_element_DsGetNT4ChangeLog_bind_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       proto_item *item = NULL;
-       proto_tree *tree = NULL;
-       int old_offset;
-       guint32 level;
+       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNT4ChangeLog_bind_handle_, NDR_POINTER_REF, "Pointer to Bind Handle (policy_handle)",hf_drsuapi_drsuapi_DsGetNT4ChangeLog_bind_handle);
 
-       old_offset = offset;
-       if (parent_tree) {
-               tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_QuerySitesByCostRequest, &item, "drsuapi_QuerySitesByCostRequest");
-       }
+       return offset;
+}
 
-       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level);
-       ALIGN_TO_5_BYTES;
+static int
+drsuapi_dissect_element_DsGetNT4ChangeLog_bind_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNT4ChangeLog_bind_handle, 0);
 
-       switch(level) {
-               case 1:
-                       offset = drsuapi_dissect_element_QuerySitesByCostRequest_req1(tvb, offset, pinfo, tree, di, drep);
-               break;
-       }
-       proto_item_set_len(item, offset-old_offset);
+       return offset;
+}
 
+static int
+drsuapi_dissect_element_DsGetNT4ChangeLog_level(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNT4ChangeLog_level, 0);
 
        return offset;
 }
+
 static int
-drsuapi_dissect_element_DsBind_bind_guid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetNT4ChangeLog_req(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsBind_bind_guid_, NDR_POINTER_UNIQUE, "Pointer to Bind Guid (GUID)",hf_drsuapi_drsuapi_DsBind_bind_guid);
+       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNT4ChangeLog_req_, NDR_POINTER_REF, "Pointer to Req (drsuapi_DsGetNT4ChangeLogRequest)",hf_drsuapi_drsuapi_DsGetNT4ChangeLog_req);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsBind_bind_guid_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetNT4ChangeLog_req_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsBind_bind_guid, NULL);
+       offset = drsuapi_dissect_DsGetNT4ChangeLogRequest(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNT4ChangeLog_req, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsBind_bind_info(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetNT4ChangeLog_level_out(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsBind_bind_info_, NDR_POINTER_UNIQUE, "Pointer to Bind Info (drsuapi_DsBindInfoCtr)",hf_drsuapi_drsuapi_DsBind_bind_info);
+       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNT4ChangeLog_level_out_, NDR_POINTER_REF, "Pointer to Level Out (uint32)",hf_drsuapi_drsuapi_DsGetNT4ChangeLog_level_out);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsBind_bind_info_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetNT4ChangeLog_level_out_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_struct_DsBindInfoCtr(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsBind_bind_info,0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNT4ChangeLog_level_out, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsBind_bind_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetNT4ChangeLog_info(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsBind_bind_handle_, NDR_POINTER_REF, "Pointer to Bind Handle (policy_handle)",hf_drsuapi_drsuapi_DsBind_bind_handle);
+       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNT4ChangeLog_info_, NDR_POINTER_REF, "Pointer to Info (drsuapi_DsGetNT4ChangeLogInfo)",hf_drsuapi_drsuapi_DsGetNT4ChangeLog_info);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsBind_bind_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetNT4ChangeLog_info_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsBind_bind_handle, 0);
+       offset = drsuapi_dissect_DsGetNT4ChangeLogInfo(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNT4ChangeLog_info, 0);
 
        return offset;
 }
 
-/* IDL: WERROR drsuapi_DsBind( */
-/* IDL: [in] [unique(1)] GUID *bind_guid, */
-/* IDL: [in] [out] [unique(1)] drsuapi_DsBindInfoCtr *bind_info, */
-/* IDL: [out] [ref] policy_handle *bind_handle */
+/* IDL: WERROR drsuapi_DsGetNT4ChangeLog( */
+/* IDL: [in] [ref] policy_handle *bind_handle, */
+/* IDL: [in] uint32 level, */
+/* IDL: [in] [ref] [switch_is(level)] drsuapi_DsGetNT4ChangeLogRequest *req, */
+/* IDL: [out] [ref] uint32 *level_out, */
+/* IDL: [out] [ref] [switch_is(*level_out)] drsuapi_DsGetNT4ChangeLogInfo *info */
 /* IDL: ); */
 
 static int
-drsuapi_dissect_DsBind_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_DsGetNT4ChangeLog_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
        guint32 status;
 
-       di->dcerpc_procedure_name="DsBind";
-       offset = drsuapi_dissect_element_DsBind_bind_info(tvb, offset, pinfo, tree, di, drep);
+       di->dcerpc_procedure_name="DsGetNT4ChangeLog";
+       offset = drsuapi_dissect_element_DsGetNT4ChangeLog_level_out(tvb, offset, pinfo, tree, di, drep);
        offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
 
-       offset = drsuapi_dissect_element_DsBind_bind_handle(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsGetNT4ChangeLog_info(tvb, offset, pinfo, tree, di, drep);
        offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
 
        offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_werror, &status);
@@ -18185,114 +21322,110 @@ drsuapi_dissect_DsBind_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *
 }
 
 static int
-drsuapi_dissect_DsBind_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_DsGetNT4ChangeLog_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       di->dcerpc_procedure_name="DsBind";
-       offset = drsuapi_dissect_element_DsBind_bind_guid(tvb, offset, pinfo, tree, di, drep);
+       di->dcerpc_procedure_name="DsGetNT4ChangeLog";
+       offset = drsuapi_dissect_element_DsGetNT4ChangeLog_bind_handle(tvb, offset, pinfo, tree, di, drep);
        offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
-       offset = drsuapi_dissect_element_DsBind_bind_info(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsGetNT4ChangeLog_level(tvb, offset, pinfo, tree, di, drep);
+       offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
+       offset = drsuapi_dissect_element_DsGetNT4ChangeLog_req(tvb, offset, pinfo, tree, di, drep);
        offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsUnbind_bind_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsCrackNames_bind_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsUnbind_bind_handle_, NDR_POINTER_REF, "Pointer to Bind Handle (policy_handle)",hf_drsuapi_drsuapi_DsUnbind_bind_handle);
+       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsCrackNames_bind_handle_, NDR_POINTER_REF, "Pointer to Bind Handle (policy_handle)",hf_drsuapi_drsuapi_DsCrackNames_bind_handle);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsUnbind_bind_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsCrackNames_bind_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsUnbind_bind_handle, 0);
+       offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsCrackNames_bind_handle, 0);
 
        return offset;
 }
 
-/* IDL: WERROR drsuapi_DsUnbind( */
-/* IDL: [in] [out] [ref] policy_handle *bind_handle */
-/* IDL: ); */
-
 static int
-drsuapi_dissect_DsUnbind_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsCrackNames_level(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       guint32 status;
-
-       di->dcerpc_procedure_name="DsUnbind";
-       offset = drsuapi_dissect_element_DsUnbind_bind_handle(tvb, offset, pinfo, tree, di, drep);
-       offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
-
-       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_werror, &status);
-
-       if (status != 0)
-               col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str(status, WERR_errors, "Unknown DOS error 0x%08x"));
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsCrackNames_level, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_DsUnbind_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsCrackNames_req(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       di->dcerpc_procedure_name="DsUnbind";
-       offset = drsuapi_dissect_element_DsUnbind_bind_handle(tvb, offset, pinfo, tree, di, drep);
-       offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
+       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsCrackNames_req_, NDR_POINTER_REF, "Pointer to Req (drsuapi_DsNameRequest)",hf_drsuapi_drsuapi_DsCrackNames_req);
+
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaSync_bind_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsCrackNames_req_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaSync_bind_handle_, NDR_POINTER_REF, "Pointer to Bind Handle (policy_handle)",hf_drsuapi_drsuapi_DsReplicaSync_bind_handle);
+       offset = drsuapi_dissect_DsNameRequest(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsCrackNames_req, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaSync_bind_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsCrackNames_level_out(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaSync_bind_handle, 0);
+       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsCrackNames_level_out_, NDR_POINTER_REF, "Pointer to Level Out (uint32)",hf_drsuapi_drsuapi_DsCrackNames_level_out);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaSync_level(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsCrackNames_level_out_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaSync_level, 0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsCrackNames_level_out, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaSync_req(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsCrackNames_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaSync_req_, NDR_POINTER_REF, "Pointer to Req (drsuapi_DsReplicaSyncRequest)",hf_drsuapi_drsuapi_DsReplicaSync_req);
+       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsCrackNames_ctr_, NDR_POINTER_REF, "Pointer to Ctr (drsuapi_DsNameCtr)",hf_drsuapi_drsuapi_DsCrackNames_ctr);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaSync_req_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsCrackNames_ctr_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_DsReplicaSyncRequest(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaSync_req, 0);
+       offset = drsuapi_dissect_DsNameCtr(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsCrackNames_ctr, 0);
 
        return offset;
 }
 
-/* IDL: WERROR drsuapi_DsReplicaSync( */
+/* IDL: WERROR drsuapi_DsCrackNames( */
 /* IDL: [in] [ref] policy_handle *bind_handle, */
 /* IDL: [in] uint32 level, */
-/* IDL: [in] [ref] [switch_is(level)] drsuapi_DsReplicaSyncRequest *req */
+/* IDL: [in] [ref] [switch_is(level)] drsuapi_DsNameRequest *req, */
+/* IDL: [out] [ref] uint32 *level_out, */
+/* IDL: [out] [ref] [switch_is(*level_out)] drsuapi_DsNameCtr *ctr */
 /* IDL: ); */
 
 static int
-drsuapi_dissect_DsReplicaSync_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_DsCrackNames_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
        guint32 status;
 
-       di->dcerpc_procedure_name="DsReplicaSync";
+       di->dcerpc_procedure_name="DsCrackNames";
+       offset = drsuapi_dissect_element_DsCrackNames_level_out(tvb, offset, pinfo, tree, di, drep);
+       offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
+
+       offset = drsuapi_dissect_element_DsCrackNames_ctr(tvb, offset, pinfo, tree, di, drep);
+       offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
+
        offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_werror, &status);
 
        if (status != 0)
@@ -18302,108 +21435,108 @@ drsuapi_dissect_DsReplicaSync_response(tvbuff_t *tvb _U_, int offset _U_, packet
 }
 
 static int
-drsuapi_dissect_DsReplicaSync_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_DsCrackNames_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       di->dcerpc_procedure_name="DsReplicaSync";
-       offset = drsuapi_dissect_element_DsReplicaSync_bind_handle(tvb, offset, pinfo, tree, di, drep);
+       di->dcerpc_procedure_name="DsCrackNames";
+       offset = drsuapi_dissect_element_DsCrackNames_bind_handle(tvb, offset, pinfo, tree, di, drep);
        offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
-       offset = drsuapi_dissect_element_DsReplicaSync_level(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsCrackNames_level(tvb, offset, pinfo, tree, di, drep);
        offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
-       offset = drsuapi_dissect_element_DsReplicaSync_req(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsCrackNames_req(tvb, offset, pinfo, tree, di, drep);
        offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChanges_bind_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsWriteAccountSpn_bind_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNCChanges_bind_handle_, NDR_POINTER_REF, "Pointer to Bind Handle (policy_handle)",hf_drsuapi_drsuapi_DsGetNCChanges_bind_handle);
+       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsWriteAccountSpn_bind_handle_, NDR_POINTER_REF, "Pointer to Bind Handle (policy_handle)",hf_drsuapi_drsuapi_DsWriteAccountSpn_bind_handle);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChanges_bind_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsWriteAccountSpn_bind_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChanges_bind_handle, 0);
+       offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsWriteAccountSpn_bind_handle, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChanges_level(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsWriteAccountSpn_level(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChanges_level, 0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsWriteAccountSpn_level, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChanges_req(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsWriteAccountSpn_req(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNCChanges_req_, NDR_POINTER_REF, "Pointer to Req (drsuapi_DsGetNCChangesRequest)",hf_drsuapi_drsuapi_DsGetNCChanges_req);
+       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsWriteAccountSpn_req_, NDR_POINTER_REF, "Pointer to Req (drsuapi_DsWriteAccountSpnRequest)",hf_drsuapi_drsuapi_DsWriteAccountSpn_req);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChanges_req_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsWriteAccountSpn_req_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_DsGetNCChangesRequest(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChanges_req, 0);
+       offset = drsuapi_dissect_DsWriteAccountSpnRequest(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsWriteAccountSpn_req, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChanges_level_out(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsWriteAccountSpn_level_out(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNCChanges_level_out_, NDR_POINTER_REF, "Pointer to Level Out (uint32)",hf_drsuapi_drsuapi_DsGetNCChanges_level_out);
+       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsWriteAccountSpn_level_out_, NDR_POINTER_REF, "Pointer to Level Out (uint32)",hf_drsuapi_drsuapi_DsWriteAccountSpn_level_out);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChanges_level_out_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsWriteAccountSpn_level_out_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChanges_level_out, 0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsWriteAccountSpn_level_out, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChanges_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsWriteAccountSpn_res(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNCChanges_ctr_, NDR_POINTER_REF, "Pointer to Ctr (drsuapi_DsGetNCChangesCtr)",hf_drsuapi_drsuapi_DsGetNCChanges_ctr);
+       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsWriteAccountSpn_res_, NDR_POINTER_REF, "Pointer to Res (drsuapi_DsWriteAccountSpnResult)",hf_drsuapi_drsuapi_DsWriteAccountSpn_res);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNCChanges_ctr_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsWriteAccountSpn_res_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_DsGetNCChangesCtr(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNCChanges_ctr, 0);
+       offset = drsuapi_dissect_DsWriteAccountSpnResult(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsWriteAccountSpn_res, 0);
 
        return offset;
 }
 
-/* IDL: WERROR drsuapi_DsGetNCChanges( */
+/* IDL: WERROR drsuapi_DsWriteAccountSpn( */
 /* IDL: [in] [ref] policy_handle *bind_handle, */
 /* IDL: [in] uint32 level, */
-/* IDL: [in] [ref] [switch_is(level)] drsuapi_DsGetNCChangesRequest *req, */
+/* IDL: [in] [ref] [switch_is(level)] drsuapi_DsWriteAccountSpnRequest *req, */
 /* IDL: [out] [ref] uint32 *level_out, */
-/* IDL: [out] [ref] [switch_is(*level_out)] drsuapi_DsGetNCChangesCtr *ctr */
+/* IDL: [out] [ref] [switch_is(*level_out)] drsuapi_DsWriteAccountSpnResult *res */
 /* IDL: ); */
 
 static int
-drsuapi_dissect_DsGetNCChanges_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_DsWriteAccountSpn_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
        guint32 status;
 
-       di->dcerpc_procedure_name="DsGetNCChanges";
-       offset = drsuapi_dissect_element_DsGetNCChanges_level_out(tvb, offset, pinfo, tree, di, drep);
+       di->dcerpc_procedure_name="DsWriteAccountSpn";
+       offset = drsuapi_dissect_element_DsWriteAccountSpn_level_out(tvb, offset, pinfo, tree, di, drep);
        offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
 
-       offset = drsuapi_dissect_element_DsGetNCChanges_ctr(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsWriteAccountSpn_res(tvb, offset, pinfo, tree, di, drep);
        offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
 
        offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_werror, &status);
@@ -18415,127 +21548,110 @@ drsuapi_dissect_DsGetNCChanges_response(tvbuff_t *tvb _U_, int offset _U_, packe
 }
 
 static int
-drsuapi_dissect_DsGetNCChanges_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_DsWriteAccountSpn_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       di->dcerpc_procedure_name="DsGetNCChanges";
-       offset = drsuapi_dissect_element_DsGetNCChanges_bind_handle(tvb, offset, pinfo, tree, di, drep);
+       di->dcerpc_procedure_name="DsWriteAccountSpn";
+       offset = drsuapi_dissect_element_DsWriteAccountSpn_bind_handle(tvb, offset, pinfo, tree, di, drep);
        offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
-       offset = drsuapi_dissect_element_DsGetNCChanges_level(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsWriteAccountSpn_level(tvb, offset, pinfo, tree, di, drep);
        offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
-       offset = drsuapi_dissect_element_DsGetNCChanges_req(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsWriteAccountSpn_req(tvb, offset, pinfo, tree, di, drep);
        offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaUpdateRefs_bind_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsRemoveDSServer_bind_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaUpdateRefs_bind_handle_, NDR_POINTER_REF, "Pointer to Bind Handle (policy_handle)",hf_drsuapi_drsuapi_DsReplicaUpdateRefs_bind_handle);
+       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsRemoveDSServer_bind_handle_, NDR_POINTER_REF, "Pointer to Bind Handle (policy_handle)",hf_drsuapi_drsuapi_DsRemoveDSServer_bind_handle);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaUpdateRefs_bind_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsRemoveDSServer_bind_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaUpdateRefs_bind_handle, 0);
+       offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsRemoveDSServer_bind_handle, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaUpdateRefs_level(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsRemoveDSServer_level(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaUpdateRefs_level, 0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsRemoveDSServer_level, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaUpdateRefs_req(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsRemoveDSServer_req(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_DsReplicaUpdateRefsRequest(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaUpdateRefs_req, 0);
+       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsRemoveDSServer_req_, NDR_POINTER_REF, "Pointer to Req (drsuapi_DsRemoveDSServerRequest)",hf_drsuapi_drsuapi_DsRemoveDSServer_req);
 
        return offset;
 }
 
-/* IDL: WERROR drsuapi_DsReplicaUpdateRefs( */
-/* IDL: [in] [ref] policy_handle *bind_handle, */
-/* IDL: [in] uint32 level, */
-/* IDL: [in] [switch_is(level)] drsuapi_DsReplicaUpdateRefsRequest req */
-/* IDL: ); */
-
 static int
-drsuapi_dissect_DsReplicaUpdateRefs_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsRemoveDSServer_req_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       guint32 status;
-
-       di->dcerpc_procedure_name="DsReplicaUpdateRefs";
-       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_werror, &status);
-
-       if (status != 0)
-               col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str(status, WERR_errors, "Unknown DOS error 0x%08x"));
-
-       return offset;
-}
+       offset = drsuapi_dissect_DsRemoveDSServerRequest(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsRemoveDSServer_req, 0);
 
-static int
-drsuapi_dissect_DsReplicaUpdateRefs_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       di->dcerpc_procedure_name="DsReplicaUpdateRefs";
-       offset = drsuapi_dissect_element_DsReplicaUpdateRefs_bind_handle(tvb, offset, pinfo, tree, di, drep);
-       offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
-       offset = drsuapi_dissect_element_DsReplicaUpdateRefs_level(tvb, offset, pinfo, tree, di, drep);
-       offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
-       offset = drsuapi_dissect_element_DsReplicaUpdateRefs_req(tvb, offset, pinfo, tree, di, drep);
-       offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaAdd_bind_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsRemoveDSServer_level_out(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaAdd_bind_handle_, NDR_POINTER_REF, "Pointer to Bind Handle (policy_handle)",hf_drsuapi_drsuapi_DsReplicaAdd_bind_handle);
+       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsRemoveDSServer_level_out_, NDR_POINTER_REF, "Pointer to Level Out (uint32)",hf_drsuapi_drsuapi_DsRemoveDSServer_level_out);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaAdd_bind_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsRemoveDSServer_level_out_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAdd_bind_handle, 0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsRemoveDSServer_level_out, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaAdd_level(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsRemoveDSServer_res(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAdd_level, 0);
+       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsRemoveDSServer_res_, NDR_POINTER_REF, "Pointer to Res (drsuapi_DsRemoveDSServerResult)",hf_drsuapi_drsuapi_DsRemoveDSServer_res);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaAdd_req(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsRemoveDSServer_res_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_DsReplicaAddRequest(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaAdd_req, 0);
+       offset = drsuapi_dissect_DsRemoveDSServerResult(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsRemoveDSServer_res, 0);
 
        return offset;
 }
 
-/* IDL: WERROR drsuapi_DsReplicaAdd( */
+/* IDL: WERROR drsuapi_DsRemoveDSServer( */
 /* IDL: [in] [ref] policy_handle *bind_handle, */
 /* IDL: [in] uint32 level, */
-/* IDL: [in] [switch_is(level)] drsuapi_DsReplicaAddRequest req */
+/* IDL: [in] [ref] [switch_is(level)] drsuapi_DsRemoveDSServerRequest *req, */
+/* IDL: [out] [ref] uint32 *level_out, */
+/* IDL: [out] [ref] [switch_is(*level_out)] drsuapi_DsRemoveDSServerResult *res */
 /* IDL: ); */
 
 static int
-drsuapi_dissect_DsReplicaAdd_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_DsRemoveDSServer_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
        guint32 status;
 
-       di->dcerpc_procedure_name="DsReplicaAdd";
+       di->dcerpc_procedure_name="DsRemoveDSServer";
+       offset = drsuapi_dissect_element_DsRemoveDSServer_level_out(tvb, offset, pinfo, tree, di, drep);
+       offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
+
+       offset = drsuapi_dissect_element_DsRemoveDSServer_res(tvb, offset, pinfo, tree, di, drep);
+       offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
+
        offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_werror, &status);
 
        if (status != 0)
@@ -18545,158 +21661,135 @@ drsuapi_dissect_DsReplicaAdd_response(tvbuff_t *tvb _U_, int offset _U_, packet_
 }
 
 static int
-drsuapi_dissect_DsReplicaAdd_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_DsRemoveDSServer_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       di->dcerpc_procedure_name="DsReplicaAdd";
-       offset = drsuapi_dissect_element_DsReplicaAdd_bind_handle(tvb, offset, pinfo, tree, di, drep);
+       di->dcerpc_procedure_name="DsRemoveDSServer";
+       offset = drsuapi_dissect_element_DsRemoveDSServer_bind_handle(tvb, offset, pinfo, tree, di, drep);
        offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
-       offset = drsuapi_dissect_element_DsReplicaAdd_level(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsRemoveDSServer_level(tvb, offset, pinfo, tree, di, drep);
        offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
-       offset = drsuapi_dissect_element_DsReplicaAdd_req(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsRemoveDSServer_req(tvb, offset, pinfo, tree, di, drep);
        offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
        return offset;
 }
 
+/* IDL: WERROR DRSUAPI_REMOVE_DS_DOMAIN( */
+/* IDL:  */
+/* IDL: ); */
+
 static int
-drsuapi_dissect_element_DsReplicaDel_bind_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_DRSUAPI_REMOVE_DS_DOMAIN_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaDel_bind_handle_, NDR_POINTER_REF, "Pointer to Bind Handle (policy_handle)",hf_drsuapi_drsuapi_DsReplicaDel_bind_handle);
+       guint32 status;
 
-       return offset;
-}
+       di->dcerpc_procedure_name="DRSUAPI_REMOVE_DS_DOMAIN";
+       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_werror, &status);
 
-static int
-drsuapi_dissect_element_DsReplicaDel_bind_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaDel_bind_handle, 0);
+       if (status != 0)
+               col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str(status, WERR_errors, "Unknown DOS error 0x%08x"));
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaDel_level(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_DRSUAPI_REMOVE_DS_DOMAIN_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaDel_level, 0);
-
+       di->dcerpc_procedure_name="DRSUAPI_REMOVE_DS_DOMAIN";
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaDel_req(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetDomainControllerInfo_bind_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_DsReplicaDelRequest(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaDel_req, 0);
+       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetDomainControllerInfo_bind_handle_, NDR_POINTER_REF, "Pointer to Bind Handle (policy_handle)",hf_drsuapi_drsuapi_DsGetDomainControllerInfo_bind_handle);
 
        return offset;
 }
 
-/* IDL: WERROR drsuapi_DsReplicaDel( */
-/* IDL: [in] [ref] policy_handle *bind_handle, */
-/* IDL: [in] uint32 level, */
-/* IDL: [in] [switch_is(level)] drsuapi_DsReplicaDelRequest req */
-/* IDL: ); */
-
 static int
-drsuapi_dissect_DsReplicaDel_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetDomainControllerInfo_bind_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       guint32 status;
-
-       di->dcerpc_procedure_name="DsReplicaDel";
-       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_werror, &status);
-
-       if (status != 0)
-               col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str(status, WERR_errors, "Unknown DOS error 0x%08x"));
+       offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDomainControllerInfo_bind_handle, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_DsReplicaDel_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetDomainControllerInfo_level(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       di->dcerpc_procedure_name="DsReplicaDel";
-       offset = drsuapi_dissect_element_DsReplicaDel_bind_handle(tvb, offset, pinfo, tree, di, drep);
-       offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
-       offset = drsuapi_dissect_element_DsReplicaDel_level(tvb, offset, pinfo, tree, di, drep);
-       offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
-       offset = drsuapi_dissect_element_DsReplicaDel_req(tvb, offset, pinfo, tree, di, drep);
-       offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDomainControllerInfo_level, 0);
+
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaMod_bind_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetDomainControllerInfo_req(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaMod_bind_handle_, NDR_POINTER_REF, "Pointer to Bind Handle (policy_handle)",hf_drsuapi_drsuapi_DsReplicaMod_bind_handle);
+       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetDomainControllerInfo_req_, NDR_POINTER_REF, "Pointer to Req (drsuapi_DsGetDCInfoRequest)",hf_drsuapi_drsuapi_DsGetDomainControllerInfo_req);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaMod_bind_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetDomainControllerInfo_req_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaMod_bind_handle, 0);
+       offset = drsuapi_dissect_DsGetDCInfoRequest(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDomainControllerInfo_req, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaMod_level(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetDomainControllerInfo_level_out(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaMod_level, 0);
+       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetDomainControllerInfo_level_out_, NDR_POINTER_REF, "Pointer to Level Out (drsuapi_DsGetDCInfoCtrLevels)",hf_drsuapi_drsuapi_DsGetDomainControllerInfo_level_out);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaMod_req(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetDomainControllerInfo_level_out_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_DsReplicaModRequest(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaMod_req, 0);
+       offset = drsuapi_dissect_enum_DsGetDCInfoCtrLevels(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDomainControllerInfo_level_out, 0);
 
        return offset;
 }
 
-/* IDL: WERROR drsuapi_DsReplicaMod( */
-/* IDL: [in] [ref] policy_handle *bind_handle, */
-/* IDL: [in] uint32 level, */
-/* IDL: [in] [switch_is(level)] drsuapi_DsReplicaModRequest req */
-/* IDL: ); */
-
 static int
-drsuapi_dissect_DsReplicaMod_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetDomainControllerInfo_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       guint32 status;
-
-       di->dcerpc_procedure_name="DsReplicaMod";
-       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_werror, &status);
-
-       if (status != 0)
-               col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str(status, WERR_errors, "Unknown DOS error 0x%08x"));
+       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetDomainControllerInfo_ctr_, NDR_POINTER_REF, "Pointer to Ctr (drsuapi_DsGetDCInfoCtr)",hf_drsuapi_drsuapi_DsGetDomainControllerInfo_ctr);
 
        return offset;
 }
-
-static int
-drsuapi_dissect_DsReplicaMod_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       di->dcerpc_procedure_name="DsReplicaMod";
-       offset = drsuapi_dissect_element_DsReplicaMod_bind_handle(tvb, offset, pinfo, tree, di, drep);
-       offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
-       offset = drsuapi_dissect_element_DsReplicaMod_level(tvb, offset, pinfo, tree, di, drep);
-       offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
-       offset = drsuapi_dissect_element_DsReplicaMod_req(tvb, offset, pinfo, tree, di, drep);
-       offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
+
+static int
+drsuapi_dissect_element_DsGetDomainControllerInfo_ctr_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = drsuapi_dissect_DsGetDCInfoCtr(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDomainControllerInfo_ctr, 0);
+
        return offset;
 }
 
-/* IDL: WERROR DRSUAPI_VERIFY_NAMES( */
-/* IDL:  */
+/* IDL: WERROR drsuapi_DsGetDomainControllerInfo( */
+/* IDL: [in] [ref] policy_handle *bind_handle, */
+/* IDL: [in] uint32 level, */
+/* IDL: [in] [ref] [switch_is(level)] drsuapi_DsGetDCInfoRequest *req, */
+/* IDL: [out] [ref] drsuapi_DsGetDCInfoCtrLevels *level_out, */
+/* IDL: [out] [ref] [switch_is(*level_out)] drsuapi_DsGetDCInfoCtr *ctr */
 /* IDL: ); */
 
 static int
-drsuapi_dissect_DRSUAPI_VERIFY_NAMES_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_DsGetDomainControllerInfo_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
        guint32 status;
 
-       di->dcerpc_procedure_name="DRSUAPI_VERIFY_NAMES";
+       di->dcerpc_procedure_name="DsGetDomainControllerInfo";
+       offset = drsuapi_dissect_element_DsGetDomainControllerInfo_level_out(tvb, offset, pinfo, tree, di, drep);
+       offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
+
+       offset = drsuapi_dissect_element_DsGetDomainControllerInfo_ctr(tvb, offset, pinfo, tree, di, drep);
+       offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
+
        offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_werror, &status);
 
        if (status != 0)
@@ -18706,102 +21799,108 @@ drsuapi_dissect_DRSUAPI_VERIFY_NAMES_response(tvbuff_t *tvb _U_, int offset _U_,
 }
 
 static int
-drsuapi_dissect_DRSUAPI_VERIFY_NAMES_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_DsGetDomainControllerInfo_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       di->dcerpc_procedure_name="DRSUAPI_VERIFY_NAMES";
+       di->dcerpc_procedure_name="DsGetDomainControllerInfo";
+       offset = drsuapi_dissect_element_DsGetDomainControllerInfo_bind_handle(tvb, offset, pinfo, tree, di, drep);
+       offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
+       offset = drsuapi_dissect_element_DsGetDomainControllerInfo_level(tvb, offset, pinfo, tree, di, drep);
+       offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
+       offset = drsuapi_dissect_element_DsGetDomainControllerInfo_req(tvb, offset, pinfo, tree, di, drep);
+       offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetMemberships_bind_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsAddEntry_bind_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetMemberships_bind_handle_, NDR_POINTER_REF, "Pointer to Bind Handle (policy_handle)",hf_drsuapi_drsuapi_DsGetMemberships_bind_handle);
+       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsAddEntry_bind_handle_, NDR_POINTER_REF, "Pointer to Bind Handle (policy_handle)",hf_drsuapi_drsuapi_DsAddEntry_bind_handle);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetMemberships_bind_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsAddEntry_bind_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetMemberships_bind_handle, 0);
+       offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntry_bind_handle, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetMemberships_level(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsAddEntry_level(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetMemberships_level, 0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntry_level, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetMemberships_req(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsAddEntry_req(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetMemberships_req_, NDR_POINTER_REF, "Pointer to Req (drsuapi_DsGetMembershipsRequest)",hf_drsuapi_drsuapi_DsGetMemberships_req);
+       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsAddEntry_req_, NDR_POINTER_REF, "Pointer to Req (drsuapi_DsAddEntryRequest)",hf_drsuapi_drsuapi_DsAddEntry_req);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetMemberships_req_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsAddEntry_req_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_DsGetMembershipsRequest(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetMemberships_req, 0);
+       offset = drsuapi_dissect_DsAddEntryRequest(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntry_req, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetMemberships_level_out(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsAddEntry_level_out(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetMemberships_level_out_, NDR_POINTER_REF, "Pointer to Level Out (uint32)",hf_drsuapi_drsuapi_DsGetMemberships_level_out);
+       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsAddEntry_level_out_, NDR_POINTER_REF, "Pointer to Level Out (uint32)",hf_drsuapi_drsuapi_DsAddEntry_level_out);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetMemberships_level_out_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsAddEntry_level_out_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetMemberships_level_out, 0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntry_level_out, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetMemberships_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsAddEntry_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetMemberships_ctr_, NDR_POINTER_REF, "Pointer to Ctr (drsuapi_DsGetMembershipsCtr)",hf_drsuapi_drsuapi_DsGetMemberships_ctr);
+       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsAddEntry_ctr_, NDR_POINTER_REF, "Pointer to Ctr (drsuapi_DsAddEntryCtr)",hf_drsuapi_drsuapi_DsAddEntry_ctr);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetMemberships_ctr_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsAddEntry_ctr_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_DsGetMembershipsCtr(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetMemberships_ctr, 0);
+       offset = drsuapi_dissect_DsAddEntryCtr(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntry_ctr, 0);
 
        return offset;
 }
 
-/* IDL: WERROR drsuapi_DsGetMemberships( */
+/* IDL: WERROR drsuapi_DsAddEntry( */
 /* IDL: [in] [ref] policy_handle *bind_handle, */
 /* IDL: [in] uint32 level, */
-/* IDL: [in] [ref] [switch_is(level)] drsuapi_DsGetMembershipsRequest *req, */
+/* IDL: [in] [ref] [switch_is(level)] drsuapi_DsAddEntryRequest *req, */
 /* IDL: [out] [ref] uint32 *level_out, */
-/* IDL: [out] [ref] [switch_is(*level_out)] drsuapi_DsGetMembershipsCtr *ctr */
+/* IDL: [out] [ref] [switch_is(*level_out)] drsuapi_DsAddEntryCtr *ctr */
 /* IDL: ); */
 
 static int
-drsuapi_dissect_DsGetMemberships_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_DsAddEntry_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
        guint32 status;
 
-       di->dcerpc_procedure_name="DsGetMemberships";
-       offset = drsuapi_dissect_element_DsGetMemberships_level_out(tvb, offset, pinfo, tree, di, drep);
+       di->dcerpc_procedure_name="DsAddEntry";
+       offset = drsuapi_dissect_element_DsAddEntry_level_out(tvb, offset, pinfo, tree, di, drep);
        offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
 
-       offset = drsuapi_dissect_element_DsGetMemberships_ctr(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsAddEntry_ctr(tvb, offset, pinfo, tree, di, drep);
        offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
 
        offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_werror, &status);
@@ -18813,248 +21912,214 @@ drsuapi_dissect_DsGetMemberships_response(tvbuff_t *tvb _U_, int offset _U_, pac
 }
 
 static int
-drsuapi_dissect_DsGetMemberships_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_DsAddEntry_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       di->dcerpc_procedure_name="DsGetMemberships";
-       offset = drsuapi_dissect_element_DsGetMemberships_bind_handle(tvb, offset, pinfo, tree, di, drep);
+       di->dcerpc_procedure_name="DsAddEntry";
+       offset = drsuapi_dissect_element_DsAddEntry_bind_handle(tvb, offset, pinfo, tree, di, drep);
        offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
-       offset = drsuapi_dissect_element_DsGetMemberships_level(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsAddEntry_level(tvb, offset, pinfo, tree, di, drep);
        offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
-       offset = drsuapi_dissect_element_DsGetMemberships_req(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsAddEntry_req(tvb, offset, pinfo, tree, di, drep);
        offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
        return offset;
 }
 
-/* IDL: WERROR DRSUAPI_INTER_DOMAIN_MOVE( */
-/* IDL:  */
-/* IDL: ); */
-
 static int
-drsuapi_dissect_DRSUAPI_INTER_DOMAIN_MOVE_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsExecuteKCC_bind_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       guint32 status;
-
-       di->dcerpc_procedure_name="DRSUAPI_INTER_DOMAIN_MOVE";
-       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_werror, &status);
-
-       if (status != 0)
-               col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str(status, WERR_errors, "Unknown DOS error 0x%08x"));
-
-       return offset;
-}
+       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsExecuteKCC_bind_handle_, NDR_POINTER_REF, "Pointer to Bind Handle (policy_handle)",hf_drsuapi_drsuapi_DsExecuteKCC_bind_handle);
 
-static int
-drsuapi_dissect_DRSUAPI_INTER_DOMAIN_MOVE_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       di->dcerpc_procedure_name="DRSUAPI_INTER_DOMAIN_MOVE";
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNT4ChangeLog_bind_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsExecuteKCC_bind_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNT4ChangeLog_bind_handle_, NDR_POINTER_REF, "Pointer to Bind Handle (policy_handle)",hf_drsuapi_drsuapi_DsGetNT4ChangeLog_bind_handle);
+       offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsExecuteKCC_bind_handle, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNT4ChangeLog_bind_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsExecuteKCC_level(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNT4ChangeLog_bind_handle, 0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsExecuteKCC_level, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNT4ChangeLog_level(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsExecuteKCC_req(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNT4ChangeLog_level, 0);
+       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsExecuteKCC_req_, NDR_POINTER_REF, "Pointer to Req (drsuapi_DsExecuteKCCRequest)",hf_drsuapi_drsuapi_DsExecuteKCC_req);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNT4ChangeLog_req(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsExecuteKCC_req_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNT4ChangeLog_req_, NDR_POINTER_REF, "Pointer to Req (drsuapi_DsGetNT4ChangeLogRequest)",hf_drsuapi_drsuapi_DsGetNT4ChangeLog_req);
+       offset = drsuapi_dissect_DsExecuteKCCRequest(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsExecuteKCC_req, 0);
 
        return offset;
 }
 
+/* IDL: WERROR drsuapi_DsExecuteKCC( */
+/* IDL: [in] [ref] policy_handle *bind_handle, */
+/* IDL: [in] uint32 level, */
+/* IDL: [in] [ref] [switch_is(level)] drsuapi_DsExecuteKCCRequest *req */
+/* IDL: ); */
+
 static int
-drsuapi_dissect_element_DsGetNT4ChangeLog_req_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_DsExecuteKCC_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_DsGetNT4ChangeLogRequest(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNT4ChangeLog_req, 0);
+       guint32 status;
 
-       return offset;
-}
+       di->dcerpc_procedure_name="DsExecuteKCC";
+       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_werror, &status);
 
-static int
-drsuapi_dissect_element_DsGetNT4ChangeLog_level_out(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNT4ChangeLog_level_out_, NDR_POINTER_REF, "Pointer to Level Out (uint32)",hf_drsuapi_drsuapi_DsGetNT4ChangeLog_level_out);
+       if (status != 0)
+               col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str(status, WERR_errors, "Unknown DOS error 0x%08x"));
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNT4ChangeLog_level_out_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_DsExecuteKCC_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNT4ChangeLog_level_out, 0);
-
+       di->dcerpc_procedure_name="DsExecuteKCC";
+       offset = drsuapi_dissect_element_DsExecuteKCC_bind_handle(tvb, offset, pinfo, tree, di, drep);
+       offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
+       offset = drsuapi_dissect_element_DsExecuteKCC_level(tvb, offset, pinfo, tree, di, drep);
+       offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
+       offset = drsuapi_dissect_element_DsExecuteKCC_req(tvb, offset, pinfo, tree, di, drep);
+       offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNT4ChangeLog_info(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaGetInfo_bind_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetNT4ChangeLog_info_, NDR_POINTER_REF, "Pointer to Info (drsuapi_DsGetNT4ChangeLogInfo)",hf_drsuapi_drsuapi_DsGetNT4ChangeLog_info);
+       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaGetInfo_bind_handle_, NDR_POINTER_REF, "Pointer to Bind Handle (policy_handle)",hf_drsuapi_drsuapi_DsReplicaGetInfo_bind_handle);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetNT4ChangeLog_info_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaGetInfo_bind_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_DsGetNT4ChangeLogInfo(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetNT4ChangeLog_info, 0);
+       offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaGetInfo_bind_handle, 0);
 
        return offset;
 }
 
-/* IDL: WERROR drsuapi_DsGetNT4ChangeLog( */
-/* IDL: [in] [ref] policy_handle *bind_handle, */
-/* IDL: [in] uint32 level, */
-/* IDL: [in] [ref] [switch_is(level)] drsuapi_DsGetNT4ChangeLogRequest *req, */
-/* IDL: [out] [ref] uint32 *level_out, */
-/* IDL: [out] [ref] [switch_is(*level_out)] drsuapi_DsGetNT4ChangeLogInfo *info */
-/* IDL: ); */
-
 static int
-drsuapi_dissect_DsGetNT4ChangeLog_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaGetInfo_level(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       guint32 status;
-
-       di->dcerpc_procedure_name="DsGetNT4ChangeLog";
-       offset = drsuapi_dissect_element_DsGetNT4ChangeLog_level_out(tvb, offset, pinfo, tree, di, drep);
-       offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
-
-       offset = drsuapi_dissect_element_DsGetNT4ChangeLog_info(tvb, offset, pinfo, tree, di, drep);
-       offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
-
-       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_werror, &status);
-
-       if (status != 0)
-               col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str(status, WERR_errors, "Unknown DOS error 0x%08x"));
+       offset = drsuapi_dissect_enum_DsReplicaGetInfoLevel(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaGetInfo_level, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_DsGetNT4ChangeLog_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaGetInfo_req(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       di->dcerpc_procedure_name="DsGetNT4ChangeLog";
-       offset = drsuapi_dissect_element_DsGetNT4ChangeLog_bind_handle(tvb, offset, pinfo, tree, di, drep);
-       offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
-       offset = drsuapi_dissect_element_DsGetNT4ChangeLog_level(tvb, offset, pinfo, tree, di, drep);
-       offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
-       offset = drsuapi_dissect_element_DsGetNT4ChangeLog_req(tvb, offset, pinfo, tree, di, drep);
-       offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
+       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaGetInfo_req_, NDR_POINTER_REF, "Pointer to Req (drsuapi_DsReplicaGetInfoRequest)",hf_drsuapi_drsuapi_DsReplicaGetInfo_req);
+
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsCrackNames_bind_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaGetInfo_req_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsCrackNames_bind_handle_, NDR_POINTER_REF, "Pointer to Bind Handle (policy_handle)",hf_drsuapi_drsuapi_DsCrackNames_bind_handle);
+       offset = drsuapi_dissect_DsReplicaGetInfoRequest(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaGetInfo_req, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsCrackNames_bind_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaGetInfo_info_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsCrackNames_bind_handle, 0);
+       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaGetInfo_info_type_, NDR_POINTER_REF, "Pointer to Info Type (drsuapi_DsReplicaInfoType)",hf_drsuapi_drsuapi_DsReplicaGetInfo_info_type);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsCrackNames_level(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaGetInfo_info_type_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsCrackNames_level, 0);
+       offset = drsuapi_dissect_enum_DsReplicaInfoType(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaGetInfo_info_type, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsCrackNames_req(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaGetInfo_info(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsCrackNames_req_, NDR_POINTER_REF, "Pointer to Req (drsuapi_DsNameRequest)",hf_drsuapi_drsuapi_DsCrackNames_req);
+       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaGetInfo_info_, NDR_POINTER_REF, "Pointer to Info (drsuapi_DsReplicaInfo)",hf_drsuapi_drsuapi_DsReplicaGetInfo_info);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsCrackNames_req_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsReplicaGetInfo_info_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_DsNameRequest(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsCrackNames_req, 0);
+       offset = drsuapi_dissect_DsReplicaInfo(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaGetInfo_info, 0);
 
        return offset;
 }
 
+/* IDL: WERROR drsuapi_DsReplicaGetInfo( */
+/* IDL: [in] [ref] policy_handle *bind_handle, */
+/* IDL: [in] drsuapi_DsReplicaGetInfoLevel level, */
+/* IDL: [in] [ref] [switch_is(level)] drsuapi_DsReplicaGetInfoRequest *req, */
+/* IDL: [out] [ref] drsuapi_DsReplicaInfoType *info_type, */
+/* IDL: [out] [ref] [switch_is(*info_type)] drsuapi_DsReplicaInfo *info */
+/* IDL: ); */
+
 static int
-drsuapi_dissect_element_DsCrackNames_level_out(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_DsReplicaGetInfo_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsCrackNames_level_out_, NDR_POINTER_REF, "Pointer to Level Out (uint32)",hf_drsuapi_drsuapi_DsCrackNames_level_out);
+       guint32 status;
 
-       return offset;
-}
+       di->dcerpc_procedure_name="DsReplicaGetInfo";
+       offset = drsuapi_dissect_element_DsReplicaGetInfo_info_type(tvb, offset, pinfo, tree, di, drep);
+       offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
 
-static int
-drsuapi_dissect_element_DsCrackNames_level_out_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsCrackNames_level_out, 0);
+       offset = drsuapi_dissect_element_DsReplicaGetInfo_info(tvb, offset, pinfo, tree, di, drep);
+       offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
 
-       return offset;
-}
+       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_werror, &status);
 
-static int
-drsuapi_dissect_element_DsCrackNames_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsCrackNames_ctr_, NDR_POINTER_REF, "Pointer to Ctr (drsuapi_DsNameCtr)",hf_drsuapi_drsuapi_DsCrackNames_ctr);
+       if (status != 0)
+               col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str(status, WERR_errors, "Unknown DOS error 0x%08x"));
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsCrackNames_ctr_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_DsReplicaGetInfo_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_DsNameCtr(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsCrackNames_ctr, 0);
-
+       di->dcerpc_procedure_name="DsReplicaGetInfo";
+       offset = drsuapi_dissect_element_DsReplicaGetInfo_bind_handle(tvb, offset, pinfo, tree, di, drep);
+       offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaGetInfo_level(tvb, offset, pinfo, tree, di, drep);
+       offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
+       offset = drsuapi_dissect_element_DsReplicaGetInfo_req(tvb, offset, pinfo, tree, di, drep);
+       offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
        return offset;
 }
 
-/* IDL: WERROR drsuapi_DsCrackNames( */
-/* IDL: [in] [ref] policy_handle *bind_handle, */
-/* IDL: [in] uint32 level, */
-/* IDL: [in] [ref] [switch_is(level)] drsuapi_DsNameRequest *req, */
-/* IDL: [out] [ref] uint32 *level_out, */
-/* IDL: [out] [ref] [switch_is(*level_out)] drsuapi_DsNameCtr *ctr */
+/* IDL: WERROR DRSUAPI_ADD_SID_HISTORY( */
+/* IDL:  */
 /* IDL: ); */
 
 static int
-drsuapi_dissect_DsCrackNames_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_DRSUAPI_ADD_SID_HISTORY_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
        guint32 status;
 
-       di->dcerpc_procedure_name="DsCrackNames";
-       offset = drsuapi_dissect_element_DsCrackNames_level_out(tvb, offset, pinfo, tree, di, drep);
-       offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
-
-       offset = drsuapi_dissect_element_DsCrackNames_ctr(tvb, offset, pinfo, tree, di, drep);
-       offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
-
+       di->dcerpc_procedure_name="DRSUAPI_ADD_SID_HISTORY";
        offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_werror, &status);
 
        if (status != 0)
@@ -19064,108 +22129,102 @@ drsuapi_dissect_DsCrackNames_response(tvbuff_t *tvb _U_, int offset _U_, packet_
 }
 
 static int
-drsuapi_dissect_DsCrackNames_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_DRSUAPI_ADD_SID_HISTORY_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       di->dcerpc_procedure_name="DsCrackNames";
-       offset = drsuapi_dissect_element_DsCrackNames_bind_handle(tvb, offset, pinfo, tree, di, drep);
-       offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
-       offset = drsuapi_dissect_element_DsCrackNames_level(tvb, offset, pinfo, tree, di, drep);
-       offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
-       offset = drsuapi_dissect_element_DsCrackNames_req(tvb, offset, pinfo, tree, di, drep);
-       offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
+       di->dcerpc_procedure_name="DRSUAPI_ADD_SID_HISTORY";
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsWriteAccountSpn_bind_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetMemberships2_bind_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsWriteAccountSpn_bind_handle_, NDR_POINTER_REF, "Pointer to Bind Handle (policy_handle)",hf_drsuapi_drsuapi_DsWriteAccountSpn_bind_handle);
+       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetMemberships2_bind_handle_, NDR_POINTER_REF, "Pointer to Bind Handle (policy_handle)",hf_drsuapi_drsuapi_DsGetMemberships2_bind_handle);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsWriteAccountSpn_bind_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetMemberships2_bind_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsWriteAccountSpn_bind_handle, 0);
+       offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetMemberships2_bind_handle, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsWriteAccountSpn_level(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetMemberships2_level(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsWriteAccountSpn_level, 0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetMemberships2_level, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsWriteAccountSpn_req(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetMemberships2_req(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsWriteAccountSpn_req_, NDR_POINTER_REF, "Pointer to Req (drsuapi_DsWriteAccountSpnRequest)",hf_drsuapi_drsuapi_DsWriteAccountSpn_req);
+       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetMemberships2_req_, NDR_POINTER_REF, "Pointer to Req (drsuapi_DsGetMemberships2Request)",hf_drsuapi_drsuapi_DsGetMemberships2_req);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsWriteAccountSpn_req_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetMemberships2_req_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_DsWriteAccountSpnRequest(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsWriteAccountSpn_req, 0);
+       offset = drsuapi_dissect_DsGetMemberships2Request(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetMemberships2_req, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsWriteAccountSpn_level_out(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetMemberships2_level_out(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsWriteAccountSpn_level_out_, NDR_POINTER_REF, "Pointer to Level Out (uint32)",hf_drsuapi_drsuapi_DsWriteAccountSpn_level_out);
+       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetMemberships2_level_out_, NDR_POINTER_REF, "Pointer to Level Out (uint32)",hf_drsuapi_drsuapi_DsGetMemberships2_level_out);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsWriteAccountSpn_level_out_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetMemberships2_level_out_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsWriteAccountSpn_level_out, 0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetMemberships2_level_out, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsWriteAccountSpn_res(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetMemberships2_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsWriteAccountSpn_res_, NDR_POINTER_REF, "Pointer to Res (drsuapi_DsWriteAccountSpnResult)",hf_drsuapi_drsuapi_DsWriteAccountSpn_res);
+       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetMemberships2_ctr_, NDR_POINTER_REF, "Pointer to Ctr (drsuapi_DsGetMemberships2Ctr)",hf_drsuapi_drsuapi_DsGetMemberships2_ctr);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsWriteAccountSpn_res_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_DsGetMemberships2_ctr_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_DsWriteAccountSpnResult(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsWriteAccountSpn_res, 0);
+       offset = drsuapi_dissect_DsGetMemberships2Ctr(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetMemberships2_ctr, 0);
 
        return offset;
 }
 
-/* IDL: WERROR drsuapi_DsWriteAccountSpn( */
+/* IDL: WERROR drsuapi_DsGetMemberships2( */
 /* IDL: [in] [ref] policy_handle *bind_handle, */
 /* IDL: [in] uint32 level, */
-/* IDL: [in] [ref] [switch_is(level)] drsuapi_DsWriteAccountSpnRequest *req, */
+/* IDL: [in] [ref] [switch_is(level)] drsuapi_DsGetMemberships2Request *req, */
 /* IDL: [out] [ref] uint32 *level_out, */
-/* IDL: [out] [ref] [switch_is(*level_out)] drsuapi_DsWriteAccountSpnResult *res */
+/* IDL: [out] [ref] [switch_is(*level_out)] drsuapi_DsGetMemberships2Ctr *ctr */
 /* IDL: ); */
 
 static int
-drsuapi_dissect_DsWriteAccountSpn_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_DsGetMemberships2_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
        guint32 status;
 
-       di->dcerpc_procedure_name="DsWriteAccountSpn";
-       offset = drsuapi_dissect_element_DsWriteAccountSpn_level_out(tvb, offset, pinfo, tree, di, drep);
+       di->dcerpc_procedure_name="DsGetMemberships2";
+       offset = drsuapi_dissect_element_DsGetMemberships2_level_out(tvb, offset, pinfo, tree, di, drep);
        offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
 
-       offset = drsuapi_dissect_element_DsWriteAccountSpn_res(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsGetMemberships2_ctr(tvb, offset, pinfo, tree, di, drep);
        offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
 
        offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_werror, &status);
@@ -19177,141 +22236,160 @@ drsuapi_dissect_DsWriteAccountSpn_response(tvbuff_t *tvb _U_, int offset _U_, pa
 }
 
 static int
-drsuapi_dissect_DsWriteAccountSpn_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_DsGetMemberships2_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       di->dcerpc_procedure_name="DsWriteAccountSpn";
-       offset = drsuapi_dissect_element_DsWriteAccountSpn_bind_handle(tvb, offset, pinfo, tree, di, drep);
+       di->dcerpc_procedure_name="DsGetMemberships2";
+       offset = drsuapi_dissect_element_DsGetMemberships2_bind_handle(tvb, offset, pinfo, tree, di, drep);
        offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
-       offset = drsuapi_dissect_element_DsWriteAccountSpn_level(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsGetMemberships2_level(tvb, offset, pinfo, tree, di, drep);
        offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
-       offset = drsuapi_dissect_element_DsWriteAccountSpn_req(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_DsGetMemberships2_req(tvb, offset, pinfo, tree, di, drep);
        offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
        return offset;
 }
 
+/* IDL: WERROR DRSUAPI_REPLICA_VERIFY_OBJECTS( */
+/* IDL:  */
+/* IDL: ); */
+
 static int
-drsuapi_dissect_element_DsRemoveDSServer_bind_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_DRSUAPI_REPLICA_VERIFY_OBJECTS_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsRemoveDSServer_bind_handle_, NDR_POINTER_REF, "Pointer to Bind Handle (policy_handle)",hf_drsuapi_drsuapi_DsRemoveDSServer_bind_handle);
+       guint32 status;
+
+       di->dcerpc_procedure_name="DRSUAPI_REPLICA_VERIFY_OBJECTS";
+       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_werror, &status);
+
+       if (status != 0)
+               col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str(status, WERR_errors, "Unknown DOS error 0x%08x"));
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsRemoveDSServer_bind_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_DRSUAPI_REPLICA_VERIFY_OBJECTS_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsRemoveDSServer_bind_handle, 0);
-
+       di->dcerpc_procedure_name="DRSUAPI_REPLICA_VERIFY_OBJECTS";
        return offset;
 }
 
+/* IDL: WERROR DRSUAPI_GET_OBJECT_EXISTENCE( */
+/* IDL:  */
+/* IDL: ); */
+
 static int
-drsuapi_dissect_element_DsRemoveDSServer_level(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_DRSUAPI_GET_OBJECT_EXISTENCE_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsRemoveDSServer_level, 0);
+       guint32 status;
+
+       di->dcerpc_procedure_name="DRSUAPI_GET_OBJECT_EXISTENCE";
+       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_werror, &status);
+
+       if (status != 0)
+               col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str(status, WERR_errors, "Unknown DOS error 0x%08x"));
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsRemoveDSServer_req(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_DRSUAPI_GET_OBJECT_EXISTENCE_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsRemoveDSServer_req_, NDR_POINTER_REF, "Pointer to Req (drsuapi_DsRemoveDSServerRequest)",hf_drsuapi_drsuapi_DsRemoveDSServer_req);
-
+       di->dcerpc_procedure_name="DRSUAPI_GET_OBJECT_EXISTENCE";
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsRemoveDSServer_req_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_QuerySitesByCost_bind_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_DsRemoveDSServerRequest(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsRemoveDSServer_req, 0);
+       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_QuerySitesByCost_bind_handle_, NDR_POINTER_REF, "Pointer to Bind Handle (policy_handle)",hf_drsuapi_drsuapi_QuerySitesByCost_bind_handle);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsRemoveDSServer_level_out(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_QuerySitesByCost_bind_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsRemoveDSServer_level_out_, NDR_POINTER_REF, "Pointer to Level Out (uint32)",hf_drsuapi_drsuapi_DsRemoveDSServer_level_out);
+       offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_QuerySitesByCost_bind_handle, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsRemoveDSServer_level_out_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_QuerySitesByCost_level(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsRemoveDSServer_level_out, 0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_QuerySitesByCost_level, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsRemoveDSServer_res(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_QuerySitesByCost_req(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsRemoveDSServer_res_, NDR_POINTER_REF, "Pointer to Res (drsuapi_DsRemoveDSServerResult)",hf_drsuapi_drsuapi_DsRemoveDSServer_res);
+       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_QuerySitesByCost_req_, NDR_POINTER_REF, "Pointer to Req (drsuapi_QuerySitesByCostRequest)",hf_drsuapi_drsuapi_QuerySitesByCost_req);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsRemoveDSServer_res_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_QuerySitesByCost_req_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_DsRemoveDSServerResult(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsRemoveDSServer_res, 0);
+       offset = drsuapi_dissect_QuerySitesByCostRequest(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_QuerySitesByCost_req, 0);
 
        return offset;
 }
 
-/* IDL: WERROR drsuapi_DsRemoveDSServer( */
-/* IDL: [in] [ref] policy_handle *bind_handle, */
-/* IDL: [in] uint32 level, */
-/* IDL: [in] [ref] [switch_is(level)] drsuapi_DsRemoveDSServerRequest *req, */
-/* IDL: [out] [ref] uint32 *level_out, */
-/* IDL: [out] [ref] [switch_is(*level_out)] drsuapi_DsRemoveDSServerResult *res */
-/* IDL: ); */
-
 static int
-drsuapi_dissect_DsRemoveDSServer_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_QuerySitesByCost_level_out(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       guint32 status;
+       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_QuerySitesByCost_level_out_, NDR_POINTER_REF, "Pointer to Level Out (uint32)",hf_drsuapi_drsuapi_QuerySitesByCost_level_out);
 
-       di->dcerpc_procedure_name="DsRemoveDSServer";
-       offset = drsuapi_dissect_element_DsRemoveDSServer_level_out(tvb, offset, pinfo, tree, di, drep);
-       offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
+       return offset;
+}
 
-       offset = drsuapi_dissect_element_DsRemoveDSServer_res(tvb, offset, pinfo, tree, di, drep);
-       offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
+static int
+drsuapi_dissect_element_QuerySitesByCost_level_out_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_QuerySitesByCost_level_out, 0);
 
-       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_werror, &status);
+       return offset;
+}
 
-       if (status != 0)
-               col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str(status, WERR_errors, "Unknown DOS error 0x%08x"));
+static int
+drsuapi_dissect_element_QuerySitesByCost_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_QuerySitesByCost_ctr_, NDR_POINTER_REF, "Pointer to Ctr (drsuapi_QuerySitesByCostCtr)",hf_drsuapi_drsuapi_QuerySitesByCost_ctr);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_DsRemoveDSServer_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_QuerySitesByCost_ctr_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       di->dcerpc_procedure_name="DsRemoveDSServer";
-       offset = drsuapi_dissect_element_DsRemoveDSServer_bind_handle(tvb, offset, pinfo, tree, di, drep);
-       offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
-       offset = drsuapi_dissect_element_DsRemoveDSServer_level(tvb, offset, pinfo, tree, di, drep);
-       offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
-       offset = drsuapi_dissect_element_DsRemoveDSServer_req(tvb, offset, pinfo, tree, di, drep);
-       offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
+       offset = drsuapi_dissect_QuerySitesByCostCtr(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_QuerySitesByCost_ctr, 0);
+
        return offset;
 }
 
-/* IDL: WERROR DRSUAPI_REMOVE_DS_DOMAIN( */
-/* IDL:  */
+/* IDL: WERROR drsuapi_QuerySitesByCost( */
+/* IDL: [in] [ref] policy_handle *bind_handle, */
+/* IDL: [in] uint32 level, */
+/* IDL: [in] [ref] [switch_is(level)] drsuapi_QuerySitesByCostRequest *req, */
+/* IDL: [out] [ref] uint32 *level_out, */
+/* IDL: [out] [ref] [switch_is(*level_out)] drsuapi_QuerySitesByCostCtr *ctr */
 /* IDL: ); */
 
 static int
-drsuapi_dissect_DRSUAPI_REMOVE_DS_DOMAIN_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_QuerySitesByCost_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
        guint32 status;
 
-       di->dcerpc_procedure_name="DRSUAPI_REMOVE_DS_DOMAIN";
+       di->dcerpc_procedure_name="QuerySitesByCost";
+       offset = drsuapi_dissect_element_QuerySitesByCost_level_out(tvb, offset, pinfo, tree, di, drep);
+       offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
+
+       offset = drsuapi_dissect_element_QuerySitesByCost_ctr(tvb, offset, pinfo, tree, di, drep);
+       offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
+
        offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_werror, &status);
 
        if (status != 0)
@@ -19321,102 +22399,108 @@ drsuapi_dissect_DRSUAPI_REMOVE_DS_DOMAIN_response(tvbuff_t *tvb _U_, int offset
 }
 
 static int
-drsuapi_dissect_DRSUAPI_REMOVE_DS_DOMAIN_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_QuerySitesByCost_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       di->dcerpc_procedure_name="DRSUAPI_REMOVE_DS_DOMAIN";
+       di->dcerpc_procedure_name="QuerySitesByCost";
+       offset = drsuapi_dissect_element_QuerySitesByCost_bind_handle(tvb, offset, pinfo, tree, di, drep);
+       offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
+       offset = drsuapi_dissect_element_QuerySitesByCost_level(tvb, offset, pinfo, tree, di, drep);
+       offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
+       offset = drsuapi_dissect_element_QuerySitesByCost_req(tvb, offset, pinfo, tree, di, drep);
+       offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetDomainControllerInfo_bind_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_InitDemotion_bind_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetDomainControllerInfo_bind_handle_, NDR_POINTER_REF, "Pointer to Bind Handle (policy_handle)",hf_drsuapi_drsuapi_DsGetDomainControllerInfo_bind_handle);
+       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_InitDemotion_bind_handle_, NDR_POINTER_REF, "Pointer to Bind Handle (policy_handle)",hf_drsuapi_drsuapi_InitDemotion_bind_handle);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetDomainControllerInfo_bind_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_InitDemotion_bind_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDomainControllerInfo_bind_handle, 0);
+       offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_InitDemotion_bind_handle, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetDomainControllerInfo_level(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_InitDemotion_in_version(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDomainControllerInfo_level, 0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_InitDemotion_in_version, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetDomainControllerInfo_req(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_InitDemotion_req(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetDomainControllerInfo_req_, NDR_POINTER_REF, "Pointer to Req (drsuapi_DsGetDCInfoRequest)",hf_drsuapi_drsuapi_DsGetDomainControllerInfo_req);
+       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_InitDemotion_req_, NDR_POINTER_REF, "Pointer to Req (drsuapi_InitDemotionRequest)",hf_drsuapi_drsuapi_InitDemotion_req);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetDomainControllerInfo_req_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_InitDemotion_req_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_DsGetDCInfoRequest(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDomainControllerInfo_req, 0);
+       offset = drsuapi_dissect_InitDemotionRequest(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_InitDemotion_req, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetDomainControllerInfo_level_out(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_InitDemotion_out_version(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetDomainControllerInfo_level_out_, NDR_POINTER_REF, "Pointer to Level Out (drsuapi_DsGetDCInfoCtrLevels)",hf_drsuapi_drsuapi_DsGetDomainControllerInfo_level_out);
+       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_InitDemotion_out_version_, NDR_POINTER_REF, "Pointer to Out Version (uint32)",hf_drsuapi_drsuapi_InitDemotion_out_version);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetDomainControllerInfo_level_out_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_InitDemotion_out_version_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_enum_DsGetDCInfoCtrLevels(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDomainControllerInfo_level_out, 0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_InitDemotion_out_version, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetDomainControllerInfo_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_InitDemotion_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetDomainControllerInfo_ctr_, NDR_POINTER_REF, "Pointer to Ctr (drsuapi_DsGetDCInfoCtr)",hf_drsuapi_drsuapi_DsGetDomainControllerInfo_ctr);
+       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_InitDemotion_ctr_, NDR_POINTER_REF, "Pointer to Ctr (drsuapi_InitDemotionCtr)",hf_drsuapi_drsuapi_InitDemotion_ctr);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetDomainControllerInfo_ctr_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_InitDemotion_ctr_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_DsGetDCInfoCtr(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetDomainControllerInfo_ctr, 0);
+       offset = drsuapi_dissect_InitDemotionCtr(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_InitDemotion_ctr, 0);
 
        return offset;
 }
 
-/* IDL: WERROR drsuapi_DsGetDomainControllerInfo( */
+/* IDL: WERROR drsuapi_InitDemotion( */
 /* IDL: [in] [ref] policy_handle *bind_handle, */
-/* IDL: [in] uint32 level, */
-/* IDL: [in] [ref] [switch_is(level)] drsuapi_DsGetDCInfoRequest *req, */
-/* IDL: [out] [ref] drsuapi_DsGetDCInfoCtrLevels *level_out, */
-/* IDL: [out] [ref] [switch_is(*level_out)] drsuapi_DsGetDCInfoCtr *ctr */
+/* IDL: [in] uint32 in_version, */
+/* IDL: [in] [ref] [switch_is(in_version)] drsuapi_InitDemotionRequest *req, */
+/* IDL: [out] [ref] uint32 *out_version, */
+/* IDL: [out] [ref] [switch_is(*out_version)] drsuapi_InitDemotionCtr *ctr */
 /* IDL: ); */
 
 static int
-drsuapi_dissect_DsGetDomainControllerInfo_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_InitDemotion_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
        guint32 status;
 
-       di->dcerpc_procedure_name="DsGetDomainControllerInfo";
-       offset = drsuapi_dissect_element_DsGetDomainControllerInfo_level_out(tvb, offset, pinfo, tree, di, drep);
+       di->dcerpc_procedure_name="InitDemotion";
+       offset = drsuapi_dissect_element_InitDemotion_out_version(tvb, offset, pinfo, tree, di, drep);
        offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
 
-       offset = drsuapi_dissect_element_DsGetDomainControllerInfo_ctr(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_InitDemotion_ctr(tvb, offset, pinfo, tree, di, drep);
        offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
 
        offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_werror, &status);
@@ -19428,108 +22512,108 @@ drsuapi_dissect_DsGetDomainControllerInfo_response(tvbuff_t *tvb _U_, int offset
 }
 
 static int
-drsuapi_dissect_DsGetDomainControllerInfo_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_InitDemotion_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       di->dcerpc_procedure_name="DsGetDomainControllerInfo";
-       offset = drsuapi_dissect_element_DsGetDomainControllerInfo_bind_handle(tvb, offset, pinfo, tree, di, drep);
+       di->dcerpc_procedure_name="InitDemotion";
+       offset = drsuapi_dissect_element_InitDemotion_bind_handle(tvb, offset, pinfo, tree, di, drep);
        offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
-       offset = drsuapi_dissect_element_DsGetDomainControllerInfo_level(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_InitDemotion_in_version(tvb, offset, pinfo, tree, di, drep);
        offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
-       offset = drsuapi_dissect_element_DsGetDomainControllerInfo_req(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_InitDemotion_req(tvb, offset, pinfo, tree, di, drep);
        offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsAddEntry_bind_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_ReplicaDemotion_bind_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsAddEntry_bind_handle_, NDR_POINTER_REF, "Pointer to Bind Handle (policy_handle)",hf_drsuapi_drsuapi_DsAddEntry_bind_handle);
+       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_ReplicaDemotion_bind_handle_, NDR_POINTER_REF, "Pointer to Bind Handle (policy_handle)",hf_drsuapi_drsuapi_ReplicaDemotion_bind_handle);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsAddEntry_bind_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_ReplicaDemotion_bind_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntry_bind_handle, 0);
+       offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_ReplicaDemotion_bind_handle, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsAddEntry_level(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_ReplicaDemotion_in_version(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntry_level, 0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_ReplicaDemotion_in_version, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsAddEntry_req(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_ReplicaDemotion_req(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsAddEntry_req_, NDR_POINTER_REF, "Pointer to Req (drsuapi_DsAddEntryRequest)",hf_drsuapi_drsuapi_DsAddEntry_req);
+       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_ReplicaDemotion_req_, NDR_POINTER_REF, "Pointer to Req (drsuapi_ReplicaDemotionRequest)",hf_drsuapi_drsuapi_ReplicaDemotion_req);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsAddEntry_req_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_ReplicaDemotion_req_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_DsAddEntryRequest(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntry_req, 0);
+       offset = drsuapi_dissect_ReplicaDemotionRequest(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_ReplicaDemotion_req, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsAddEntry_level_out(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_ReplicaDemotion_out_version(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsAddEntry_level_out_, NDR_POINTER_REF, "Pointer to Level Out (uint32)",hf_drsuapi_drsuapi_DsAddEntry_level_out);
+       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_ReplicaDemotion_out_version_, NDR_POINTER_REF, "Pointer to Out Version (uint32)",hf_drsuapi_drsuapi_ReplicaDemotion_out_version);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsAddEntry_level_out_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_ReplicaDemotion_out_version_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntry_level_out, 0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_ReplicaDemotion_out_version, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsAddEntry_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_ReplicaDemotion_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsAddEntry_ctr_, NDR_POINTER_REF, "Pointer to Ctr (drsuapi_DsAddEntryCtr)",hf_drsuapi_drsuapi_DsAddEntry_ctr);
+       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_ReplicaDemotion_ctr_, NDR_POINTER_REF, "Pointer to Ctr (drsuapi_ReplicaDemotionCtr)",hf_drsuapi_drsuapi_ReplicaDemotion_ctr);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsAddEntry_ctr_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_ReplicaDemotion_ctr_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_DsAddEntryCtr(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsAddEntry_ctr, 0);
+       offset = drsuapi_dissect_ReplicaDemotionCtr(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_ReplicaDemotion_ctr, 0);
 
        return offset;
 }
 
-/* IDL: WERROR drsuapi_DsAddEntry( */
+/* IDL: WERROR drsuapi_ReplicaDemotion( */
 /* IDL: [in] [ref] policy_handle *bind_handle, */
-/* IDL: [in] uint32 level, */
-/* IDL: [in] [ref] [switch_is(level)] drsuapi_DsAddEntryRequest *req, */
-/* IDL: [out] [ref] uint32 *level_out, */
-/* IDL: [out] [ref] [switch_is(*level_out)] drsuapi_DsAddEntryCtr *ctr */
+/* IDL: [in] uint32 in_version, */
+/* IDL: [in] [ref] [switch_is(in_version)] drsuapi_ReplicaDemotionRequest *req, */
+/* IDL: [out] [ref] uint32 *out_version, */
+/* IDL: [out] [ref] [switch_is(*out_version)] drsuapi_ReplicaDemotionCtr *ctr */
 /* IDL: ); */
 
 static int
-drsuapi_dissect_DsAddEntry_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_ReplicaDemotion_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
        guint32 status;
 
-       di->dcerpc_procedure_name="DsAddEntry";
-       offset = drsuapi_dissect_element_DsAddEntry_level_out(tvb, offset, pinfo, tree, di, drep);
+       di->dcerpc_procedure_name="ReplicaDemotion";
+       offset = drsuapi_dissect_element_ReplicaDemotion_out_version(tvb, offset, pinfo, tree, di, drep);
        offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
 
-       offset = drsuapi_dissect_element_DsAddEntry_ctr(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_ReplicaDemotion_ctr(tvb, offset, pinfo, tree, di, drep);
        offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
 
        offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_werror, &status);
@@ -19541,70 +22625,110 @@ drsuapi_dissect_DsAddEntry_response(tvbuff_t *tvb _U_, int offset _U_, packet_in
 }
 
 static int
-drsuapi_dissect_DsAddEntry_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_ReplicaDemotion_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       di->dcerpc_procedure_name="DsAddEntry";
-       offset = drsuapi_dissect_element_DsAddEntry_bind_handle(tvb, offset, pinfo, tree, di, drep);
+       di->dcerpc_procedure_name="ReplicaDemotion";
+       offset = drsuapi_dissect_element_ReplicaDemotion_bind_handle(tvb, offset, pinfo, tree, di, drep);
        offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
-       offset = drsuapi_dissect_element_DsAddEntry_level(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_ReplicaDemotion_in_version(tvb, offset, pinfo, tree, di, drep);
        offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
-       offset = drsuapi_dissect_element_DsAddEntry_req(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_ReplicaDemotion_req(tvb, offset, pinfo, tree, di, drep);
        offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsExecuteKCC_bind_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_FinishDemotion_bind_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsExecuteKCC_bind_handle_, NDR_POINTER_REF, "Pointer to Bind Handle (policy_handle)",hf_drsuapi_drsuapi_DsExecuteKCC_bind_handle);
+       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_FinishDemotion_bind_handle_, NDR_POINTER_REF, "Pointer to Bind Handle (policy_handle)",hf_drsuapi_drsuapi_FinishDemotion_bind_handle);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsExecuteKCC_bind_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_FinishDemotion_bind_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsExecuteKCC_bind_handle, 0);
+       offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_FinishDemotion_bind_handle, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsExecuteKCC_level(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_FinishDemotion_in_version(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsExecuteKCC_level, 0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_FinishDemotion_in_version, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsExecuteKCC_req(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_FinishDemotion_req(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsExecuteKCC_req_, NDR_POINTER_REF, "Pointer to Req (drsuapi_DsExecuteKCCRequest)",hf_drsuapi_drsuapi_DsExecuteKCC_req);
+       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_FinishDemotion_req_, NDR_POINTER_REF, "Pointer to Req (drsuapi_FinishDemotionRequest)",hf_drsuapi_drsuapi_FinishDemotion_req);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsExecuteKCC_req_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_FinishDemotion_req_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_DsExecuteKCCRequest(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsExecuteKCC_req, 0);
+       offset = drsuapi_dissect_FinishDemotionRequest(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_FinishDemotion_req, 0);
 
        return offset;
 }
 
-/* IDL: WERROR drsuapi_DsExecuteKCC( */
+static int
+drsuapi_dissect_element_FinishDemotion_out_version(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_FinishDemotion_out_version_, NDR_POINTER_REF, "Pointer to Out Version (uint32)",hf_drsuapi_drsuapi_FinishDemotion_out_version);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_FinishDemotion_out_version_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_FinishDemotion_out_version, 0);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_FinishDemotion_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_FinishDemotion_ctr_, NDR_POINTER_REF, "Pointer to Ctr (drsuapi_FinishDemotionCtr)",hf_drsuapi_drsuapi_FinishDemotion_ctr);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_FinishDemotion_ctr_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = drsuapi_dissect_FinishDemotionCtr(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_FinishDemotion_ctr, 0);
+
+       return offset;
+}
+
+/* IDL: WERROR drsuapi_FinishDemotion( */
 /* IDL: [in] [ref] policy_handle *bind_handle, */
-/* IDL: [in] uint32 level, */
-/* IDL: [in] [ref] [switch_is(level)] drsuapi_DsExecuteKCCRequest *req */
+/* IDL: [in] uint32 in_version, */
+/* IDL: [in] [ref] [switch_is(in_version)] drsuapi_FinishDemotionRequest *req, */
+/* IDL: [out] [ref] uint32 *out_version, */
+/* IDL: [out] [ref] [switch_is(*out_version)] drsuapi_FinishDemotionCtr *ctr */
 /* IDL: ); */
 
 static int
-drsuapi_dissect_DsExecuteKCC_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_FinishDemotion_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
        guint32 status;
 
-       di->dcerpc_procedure_name="DsExecuteKCC";
+       di->dcerpc_procedure_name="FinishDemotion";
+       offset = drsuapi_dissect_element_FinishDemotion_out_version(tvb, offset, pinfo, tree, di, drep);
+       offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
+
+       offset = drsuapi_dissect_element_FinishDemotion_ctr(tvb, offset, pinfo, tree, di, drep);
+       offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
+
        offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_werror, &status);
 
        if (status != 0)
@@ -19614,108 +22738,108 @@ drsuapi_dissect_DsExecuteKCC_response(tvbuff_t *tvb _U_, int offset _U_, packet_
 }
 
 static int
-drsuapi_dissect_DsExecuteKCC_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_FinishDemotion_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       di->dcerpc_procedure_name="DsExecuteKCC";
-       offset = drsuapi_dissect_element_DsExecuteKCC_bind_handle(tvb, offset, pinfo, tree, di, drep);
+       di->dcerpc_procedure_name="FinishDemotion";
+       offset = drsuapi_dissect_element_FinishDemotion_bind_handle(tvb, offset, pinfo, tree, di, drep);
        offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
-       offset = drsuapi_dissect_element_DsExecuteKCC_level(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_FinishDemotion_in_version(tvb, offset, pinfo, tree, di, drep);
        offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
-       offset = drsuapi_dissect_element_DsExecuteKCC_req(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_FinishDemotion_req(tvb, offset, pinfo, tree, di, drep);
        offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaGetInfo_bind_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_AddCloneDC_bind_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaGetInfo_bind_handle_, NDR_POINTER_REF, "Pointer to Bind Handle (policy_handle)",hf_drsuapi_drsuapi_DsReplicaGetInfo_bind_handle);
+       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_AddCloneDC_bind_handle_, NDR_POINTER_REF, "Pointer to Bind Handle (policy_handle)",hf_drsuapi_drsuapi_AddCloneDC_bind_handle);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaGetInfo_bind_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_AddCloneDC_bind_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaGetInfo_bind_handle, 0);
+       offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_AddCloneDC_bind_handle, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaGetInfo_level(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_AddCloneDC_in_version(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_enum_DsReplicaGetInfoLevel(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaGetInfo_level, 0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_AddCloneDC_in_version, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaGetInfo_req(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_AddCloneDC_req(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaGetInfo_req_, NDR_POINTER_REF, "Pointer to Req (drsuapi_DsReplicaGetInfoRequest)",hf_drsuapi_drsuapi_DsReplicaGetInfo_req);
+       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_AddCloneDC_req_, NDR_POINTER_REF, "Pointer to Req (drsuapi_AddCloneDCRequest)",hf_drsuapi_drsuapi_AddCloneDC_req);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaGetInfo_req_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_AddCloneDC_req_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_DsReplicaGetInfoRequest(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaGetInfo_req, 0);
+       offset = drsuapi_dissect_AddCloneDCRequest(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_AddCloneDC_req, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaGetInfo_info_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_AddCloneDC_out_version(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaGetInfo_info_type_, NDR_POINTER_REF, "Pointer to Info Type (drsuapi_DsReplicaInfoType)",hf_drsuapi_drsuapi_DsReplicaGetInfo_info_type);
+       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_AddCloneDC_out_version_, NDR_POINTER_REF, "Pointer to Out Version (uint32)",hf_drsuapi_drsuapi_AddCloneDC_out_version);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaGetInfo_info_type_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_AddCloneDC_out_version_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_enum_DsReplicaInfoType(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaGetInfo_info_type, 0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_AddCloneDC_out_version, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaGetInfo_info(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_AddCloneDC_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsReplicaGetInfo_info_, NDR_POINTER_REF, "Pointer to Info (drsuapi_DsReplicaInfo)",hf_drsuapi_drsuapi_DsReplicaGetInfo_info);
+       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_AddCloneDC_ctr_, NDR_POINTER_REF, "Pointer to Ctr (drsuapi_AddCloneDCCtr)",hf_drsuapi_drsuapi_AddCloneDC_ctr);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsReplicaGetInfo_info_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_AddCloneDC_ctr_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_DsReplicaInfo(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsReplicaGetInfo_info, 0);
+       offset = drsuapi_dissect_AddCloneDCCtr(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_AddCloneDC_ctr, 0);
 
        return offset;
 }
 
-/* IDL: WERROR drsuapi_DsReplicaGetInfo( */
+/* IDL: WERROR drsuapi_AddCloneDC( */
 /* IDL: [in] [ref] policy_handle *bind_handle, */
-/* IDL: [in] drsuapi_DsReplicaGetInfoLevel level, */
-/* IDL: [in] [ref] [switch_is(level)] drsuapi_DsReplicaGetInfoRequest *req, */
-/* IDL: [out] [ref] drsuapi_DsReplicaInfoType *info_type, */
-/* IDL: [out] [ref] [switch_is(*info_type)] drsuapi_DsReplicaInfo *info */
+/* IDL: [in] uint32 in_version, */
+/* IDL: [in] [ref] [switch_is(in_version)] drsuapi_AddCloneDCRequest *req, */
+/* IDL: [out] [ref] uint32 *out_version, */
+/* IDL: [out] [ref] [switch_is(*out_version)] drsuapi_AddCloneDCCtr *ctr */
 /* IDL: ); */
 
 static int
-drsuapi_dissect_DsReplicaGetInfo_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_AddCloneDC_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
        guint32 status;
 
-       di->dcerpc_procedure_name="DsReplicaGetInfo";
-       offset = drsuapi_dissect_element_DsReplicaGetInfo_info_type(tvb, offset, pinfo, tree, di, drep);
+       di->dcerpc_procedure_name="AddCloneDC";
+       offset = drsuapi_dissect_element_AddCloneDC_out_version(tvb, offset, pinfo, tree, di, drep);
        offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
 
-       offset = drsuapi_dissect_element_DsReplicaGetInfo_info(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_AddCloneDC_ctr(tvb, offset, pinfo, tree, di, drep);
        offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
 
        offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_werror, &status);
@@ -19727,133 +22851,108 @@ drsuapi_dissect_DsReplicaGetInfo_response(tvbuff_t *tvb _U_, int offset _U_, pac
 }
 
 static int
-drsuapi_dissect_DsReplicaGetInfo_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_AddCloneDC_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       di->dcerpc_procedure_name="DsReplicaGetInfo";
-       offset = drsuapi_dissect_element_DsReplicaGetInfo_bind_handle(tvb, offset, pinfo, tree, di, drep);
+       di->dcerpc_procedure_name="AddCloneDC";
+       offset = drsuapi_dissect_element_AddCloneDC_bind_handle(tvb, offset, pinfo, tree, di, drep);
        offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
-       offset = drsuapi_dissect_element_DsReplicaGetInfo_level(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_AddCloneDC_in_version(tvb, offset, pinfo, tree, di, drep);
        offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
-       offset = drsuapi_dissect_element_DsReplicaGetInfo_req(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_AddCloneDC_req(tvb, offset, pinfo, tree, di, drep);
        offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
        return offset;
 }
 
-/* IDL: WERROR DRSUAPI_ADD_SID_HISTORY( */
-/* IDL:  */
-/* IDL: ); */
-
-static int
-drsuapi_dissect_DRSUAPI_ADD_SID_HISTORY_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       guint32 status;
-
-       di->dcerpc_procedure_name="DRSUAPI_ADD_SID_HISTORY";
-       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_werror, &status);
-
-       if (status != 0)
-               col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str(status, WERR_errors, "Unknown DOS error 0x%08x"));
-
-       return offset;
-}
-
-static int
-drsuapi_dissect_DRSUAPI_ADD_SID_HISTORY_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       di->dcerpc_procedure_name="DRSUAPI_ADD_SID_HISTORY";
-       return offset;
-}
-
 static int
-drsuapi_dissect_element_DsGetMemberships2_bind_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_WriteNgcKey_bind_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetMemberships2_bind_handle_, NDR_POINTER_REF, "Pointer to Bind Handle (policy_handle)",hf_drsuapi_drsuapi_DsGetMemberships2_bind_handle);
+       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_WriteNgcKey_bind_handle_, NDR_POINTER_REF, "Pointer to Bind Handle (policy_handle)",hf_drsuapi_drsuapi_WriteNgcKey_bind_handle);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetMemberships2_bind_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_WriteNgcKey_bind_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetMemberships2_bind_handle, 0);
+       offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_WriteNgcKey_bind_handle, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetMemberships2_level(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_WriteNgcKey_in_version(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetMemberships2_level, 0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_WriteNgcKey_in_version, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetMemberships2_req(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_WriteNgcKey_req(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetMemberships2_req_, NDR_POINTER_REF, "Pointer to Req (drsuapi_DsGetMemberships2Request)",hf_drsuapi_drsuapi_DsGetMemberships2_req);
+       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_WriteNgcKey_req_, NDR_POINTER_REF, "Pointer to Req (drsuapi_WriteNgcKeyRequest)",hf_drsuapi_drsuapi_WriteNgcKey_req);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetMemberships2_req_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_WriteNgcKey_req_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_DsGetMemberships2Request(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetMemberships2_req, 0);
+       offset = drsuapi_dissect_WriteNgcKeyRequest(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_WriteNgcKey_req, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetMemberships2_level_out(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_WriteNgcKey_out_version(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetMemberships2_level_out_, NDR_POINTER_REF, "Pointer to Level Out (uint32)",hf_drsuapi_drsuapi_DsGetMemberships2_level_out);
+       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_WriteNgcKey_out_version_, NDR_POINTER_REF, "Pointer to Out Version (uint32)",hf_drsuapi_drsuapi_WriteNgcKey_out_version);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetMemberships2_level_out_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_WriteNgcKey_out_version_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetMemberships2_level_out, 0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_WriteNgcKey_out_version, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetMemberships2_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_WriteNgcKey_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsGetMemberships2_ctr_, NDR_POINTER_REF, "Pointer to Ctr (drsuapi_DsGetMemberships2Ctr)",hf_drsuapi_drsuapi_DsGetMemberships2_ctr);
+       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_WriteNgcKey_ctr_, NDR_POINTER_REF, "Pointer to Ctr (drsuapi_WriteNgcKeyCtr)",hf_drsuapi_drsuapi_WriteNgcKey_ctr);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_DsGetMemberships2_ctr_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_WriteNgcKey_ctr_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_DsGetMemberships2Ctr(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsGetMemberships2_ctr, 0);
+       offset = drsuapi_dissect_WriteNgcKeyCtr(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_WriteNgcKey_ctr, 0);
 
        return offset;
 }
 
-/* IDL: WERROR drsuapi_DsGetMemberships2( */
+/* IDL: WERROR drsuapi_WriteNgcKey( */
 /* IDL: [in] [ref] policy_handle *bind_handle, */
-/* IDL: [in] uint32 level, */
-/* IDL: [in] [ref] [switch_is(level)] drsuapi_DsGetMemberships2Request *req, */
-/* IDL: [out] [ref] uint32 *level_out, */
-/* IDL: [out] [ref] [switch_is(*level_out)] drsuapi_DsGetMemberships2Ctr *ctr */
+/* IDL: [in] uint32 in_version, */
+/* IDL: [in] [ref] [switch_is(in_version)] drsuapi_WriteNgcKeyRequest *req, */
+/* IDL: [out] [ref] uint32 *out_version, */
+/* IDL: [out] [ref] [switch_is(*out_version)] drsuapi_WriteNgcKeyCtr *ctr */
 /* IDL: ); */
 
 static int
-drsuapi_dissect_DsGetMemberships2_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_WriteNgcKey_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
        guint32 status;
 
-       di->dcerpc_procedure_name="DsGetMemberships2";
-       offset = drsuapi_dissect_element_DsGetMemberships2_level_out(tvb, offset, pinfo, tree, di, drep);
+       di->dcerpc_procedure_name="WriteNgcKey";
+       offset = drsuapi_dissect_element_WriteNgcKey_out_version(tvb, offset, pinfo, tree, di, drep);
        offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
 
-       offset = drsuapi_dissect_element_DsGetMemberships2_ctr(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_WriteNgcKey_ctr(tvb, offset, pinfo, tree, di, drep);
        offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
 
        offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_werror, &status);
@@ -19865,158 +22964,108 @@ drsuapi_dissect_DsGetMemberships2_response(tvbuff_t *tvb _U_, int offset _U_, pa
 }
 
 static int
-drsuapi_dissect_DsGetMemberships2_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_WriteNgcKey_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       di->dcerpc_procedure_name="DsGetMemberships2";
-       offset = drsuapi_dissect_element_DsGetMemberships2_bind_handle(tvb, offset, pinfo, tree, di, drep);
+       di->dcerpc_procedure_name="WriteNgcKey";
+       offset = drsuapi_dissect_element_WriteNgcKey_bind_handle(tvb, offset, pinfo, tree, di, drep);
        offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
-       offset = drsuapi_dissect_element_DsGetMemberships2_level(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_WriteNgcKey_in_version(tvb, offset, pinfo, tree, di, drep);
        offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
-       offset = drsuapi_dissect_element_DsGetMemberships2_req(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_WriteNgcKey_req(tvb, offset, pinfo, tree, di, drep);
        offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
        return offset;
 }
 
-/* IDL: WERROR DRSUAPI_REPLICA_VERIFY_OBJECTS( */
-/* IDL:  */
-/* IDL: ); */
-
-static int
-drsuapi_dissect_DRSUAPI_REPLICA_VERIFY_OBJECTS_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       guint32 status;
-
-       di->dcerpc_procedure_name="DRSUAPI_REPLICA_VERIFY_OBJECTS";
-       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_werror, &status);
-
-       if (status != 0)
-               col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str(status, WERR_errors, "Unknown DOS error 0x%08x"));
-
-       return offset;
-}
-
 static int
-drsuapi_dissect_DRSUAPI_REPLICA_VERIFY_OBJECTS_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       di->dcerpc_procedure_name="DRSUAPI_REPLICA_VERIFY_OBJECTS";
-       return offset;
-}
-
-/* IDL: WERROR DRSUAPI_GET_OBJECT_EXISTENCE( */
-/* IDL:  */
-/* IDL: ); */
-
-static int
-drsuapi_dissect_DRSUAPI_GET_OBJECT_EXISTENCE_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       guint32 status;
-
-       di->dcerpc_procedure_name="DRSUAPI_GET_OBJECT_EXISTENCE";
-       offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_werror, &status);
-
-       if (status != 0)
-               col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str(status, WERR_errors, "Unknown DOS error 0x%08x"));
-
-       return offset;
-}
-
-static int
-drsuapi_dissect_DRSUAPI_GET_OBJECT_EXISTENCE_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
-{
-       di->dcerpc_procedure_name="DRSUAPI_GET_OBJECT_EXISTENCE";
-       return offset;
-}
-
-static int
-drsuapi_dissect_element_QuerySitesByCost_bind_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_ReadNgcKey_bind_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_QuerySitesByCost_bind_handle_, NDR_POINTER_REF, "Pointer to Bind Handle (policy_handle)",hf_drsuapi_drsuapi_QuerySitesByCost_bind_handle);
+       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_ReadNgcKey_bind_handle_, NDR_POINTER_REF, "Pointer to Bind Handle (policy_handle)",hf_drsuapi_drsuapi_ReadNgcKey_bind_handle);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_QuerySitesByCost_bind_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_ReadNgcKey_bind_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_QuerySitesByCost_bind_handle, 0);
+       offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_ReadNgcKey_bind_handle, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_QuerySitesByCost_level(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_ReadNgcKey_in_version(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_QuerySitesByCost_level, 0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_ReadNgcKey_in_version, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_QuerySitesByCost_req(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_ReadNgcKey_req(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_QuerySitesByCost_req_, NDR_POINTER_REF, "Pointer to Req (drsuapi_QuerySitesByCostRequest)",hf_drsuapi_drsuapi_QuerySitesByCost_req);
+       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_ReadNgcKey_req_, NDR_POINTER_REF, "Pointer to Req (drsuapi_ReadNgcKeyRequest)",hf_drsuapi_drsuapi_ReadNgcKey_req);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_QuerySitesByCost_req_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_ReadNgcKey_req_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_QuerySitesByCostRequest(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_QuerySitesByCost_req, 0);
+       offset = drsuapi_dissect_ReadNgcKeyRequest(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_ReadNgcKey_req, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_QuerySitesByCost_level_out(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_ReadNgcKey_out_version(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_QuerySitesByCost_level_out_, NDR_POINTER_REF, "Pointer to Level Out (uint32)",hf_drsuapi_drsuapi_QuerySitesByCost_level_out);
+       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_ReadNgcKey_out_version_, NDR_POINTER_REF, "Pointer to Out Version (uint32)",hf_drsuapi_drsuapi_ReadNgcKey_out_version);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_QuerySitesByCost_level_out_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_ReadNgcKey_out_version_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_QuerySitesByCost_level_out, 0);
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_ReadNgcKey_out_version, 0);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_QuerySitesByCost_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_ReadNgcKey_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_QuerySitesByCost_ctr_, NDR_POINTER_REF, "Pointer to Ctr (drsuapi_QuerySitesByCostCtr)",hf_drsuapi_drsuapi_QuerySitesByCost_ctr);
+       offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_ReadNgcKey_ctr_, NDR_POINTER_REF, "Pointer to Ctr (drsuapi_ReadNgcKeyCtr)",hf_drsuapi_drsuapi_ReadNgcKey_ctr);
 
        return offset;
 }
 
 static int
-drsuapi_dissect_element_QuerySitesByCost_ctr_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_element_ReadNgcKey_ctr_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       offset = drsuapi_dissect_QuerySitesByCostCtr(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_QuerySitesByCost_ctr, 0);
+       offset = drsuapi_dissect_ReadNgcKeyCtr(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_ReadNgcKey_ctr, 0);
 
        return offset;
 }
 
-/* IDL: WERROR drsuapi_QuerySitesByCost( */
+/* IDL: WERROR drsuapi_ReadNgcKey( */
 /* IDL: [in] [ref] policy_handle *bind_handle, */
-/* IDL: [in] uint32 level, */
-/* IDL: [in] [ref] [switch_is(level)] drsuapi_QuerySitesByCostRequest *req, */
-/* IDL: [out] [ref] uint32 *level_out, */
-/* IDL: [out] [ref] [switch_is(*level_out)] drsuapi_QuerySitesByCostCtr *ctr */
+/* IDL: [in] uint32 in_version, */
+/* IDL: [in] [ref] [switch_is(in_version)] drsuapi_ReadNgcKeyRequest *req, */
+/* IDL: [out] [ref] uint32 *out_version, */
+/* IDL: [out] [ref] [switch_is(*out_version)] drsuapi_ReadNgcKeyCtr *ctr */
 /* IDL: ); */
 
 static int
-drsuapi_dissect_QuerySitesByCost_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_ReadNgcKey_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
        guint32 status;
 
-       di->dcerpc_procedure_name="QuerySitesByCost";
-       offset = drsuapi_dissect_element_QuerySitesByCost_level_out(tvb, offset, pinfo, tree, di, drep);
+       di->dcerpc_procedure_name="ReadNgcKey";
+       offset = drsuapi_dissect_element_ReadNgcKey_out_version(tvb, offset, pinfo, tree, di, drep);
        offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
 
-       offset = drsuapi_dissect_element_QuerySitesByCost_ctr(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_ReadNgcKey_ctr(tvb, offset, pinfo, tree, di, drep);
        offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
 
        offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_werror, &status);
@@ -20028,14 +23077,14 @@ drsuapi_dissect_QuerySitesByCost_response(tvbuff_t *tvb _U_, int offset _U_, pac
 }
 
 static int
-drsuapi_dissect_QuerySitesByCost_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+drsuapi_dissect_ReadNgcKey_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
 {
-       di->dcerpc_procedure_name="QuerySitesByCost";
-       offset = drsuapi_dissect_element_QuerySitesByCost_bind_handle(tvb, offset, pinfo, tree, di, drep);
+       di->dcerpc_procedure_name="ReadNgcKey";
+       offset = drsuapi_dissect_element_ReadNgcKey_bind_handle(tvb, offset, pinfo, tree, di, drep);
        offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
-       offset = drsuapi_dissect_element_QuerySitesByCost_level(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_ReadNgcKey_in_version(tvb, offset, pinfo, tree, di, drep);
        offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
-       offset = drsuapi_dissect_element_QuerySitesByCost_req(tvb, offset, pinfo, tree, di, drep);
+       offset = drsuapi_dissect_element_ReadNgcKey_req(tvb, offset, pinfo, tree, di, drep);
        offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
        return offset;
 }
@@ -20092,6 +23141,18 @@ static dcerpc_sub_dissector drsuapi_dissectors[] = {
           drsuapi_dissect_DRSUAPI_GET_OBJECT_EXISTENCE_request, drsuapi_dissect_DRSUAPI_GET_OBJECT_EXISTENCE_response},
        { 24, "QuerySitesByCost",
           drsuapi_dissect_QuerySitesByCost_request, drsuapi_dissect_QuerySitesByCost_response},
+       { 25, "InitDemotion",
+          drsuapi_dissect_InitDemotion_request, drsuapi_dissect_InitDemotion_response},
+       { 26, "ReplicaDemotion",
+          drsuapi_dissect_ReplicaDemotion_request, drsuapi_dissect_ReplicaDemotion_response},
+       { 27, "FinishDemotion",
+          drsuapi_dissect_FinishDemotion_request, drsuapi_dissect_FinishDemotion_response},
+       { 28, "AddCloneDC",
+          drsuapi_dissect_AddCloneDC_request, drsuapi_dissect_AddCloneDC_response},
+       { 29, "WriteNgcKey",
+          drsuapi_dissect_WriteNgcKey_request, drsuapi_dissect_WriteNgcKey_response},
+       { 30, "ReadNgcKey",
+          drsuapi_dissect_ReadNgcKey_request, drsuapi_dissect_ReadNgcKey_response},
        { 0, NULL, NULL, NULL }
 };
 
@@ -20102,6 +23163,32 @@ void proto_register_dcerpc_drsuapi(void)
          { "DN", "drsuapi.objectidentifier.dn", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
        { &hf_drsuapi_String_name,
          { "String", "drsuapi.lsa.string", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_AddCloneDCCtr1_clone_dc_name,
+         { "Clone Dc Name", "drsuapi.drsuapi_AddCloneDCCtr1.clone_dc_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_AddCloneDCCtr1_new_dc_account_password,
+         { "New Dc Account Password", "drsuapi.drsuapi_AddCloneDCCtr1.new_dc_account_password", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_AddCloneDCCtr1_password_length,
+         { "Password Length", "drsuapi.drsuapi_AddCloneDCCtr1.password_length", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_AddCloneDCCtr1_site,
+         { "Site", "drsuapi.drsuapi_AddCloneDCCtr1.site", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_AddCloneDCCtr_ctr1,
+         { "Ctr1", "drsuapi.drsuapi_AddCloneDCCtr.ctr1", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_AddCloneDCRequest1_clone_dc_name,
+         { "Clone Dc Name", "drsuapi.drsuapi_AddCloneDCRequest1.clone_dc_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_AddCloneDCRequest1_site,
+         { "Site", "drsuapi.drsuapi_AddCloneDCRequest1.site", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_AddCloneDCRequest_req1,
+         { "Req1", "drsuapi.drsuapi_AddCloneDCRequest.req1", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_AddCloneDC_bind_handle,
+         { "Bind Handle", "drsuapi.drsuapi_AddCloneDC.bind_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_AddCloneDC_ctr,
+         { "Ctr", "drsuapi.drsuapi_AddCloneDC.ctr", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_AddCloneDC_in_version,
+         { "In Version", "drsuapi.drsuapi_AddCloneDC.in_version", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_AddCloneDC_out_version,
+         { "Out Version", "drsuapi.drsuapi_AddCloneDC.out_version", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_AddCloneDC_req,
+         { "Req", "drsuapi.drsuapi_AddCloneDC.req", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
        { &hf_drsuapi_drsuapi_DrsMoreOptions_DRSUAPI_DRS_GET_TGT,
          { "DRSUAPI DRS GET TGT", "drsuapi.drsuapi_DrsMoreOptions.DRSUAPI_DRS_GET_TGT", FT_BOOLEAN, 32, TFS(&drsuapi_DrsMoreOptions_DRSUAPI_DRS_GET_TGT_tfs), ( 0x00000001 ), NULL, HFILL }},
        { &hf_drsuapi_drsuapi_DrsOptions_DRSUAPI_DRS_ADD_REF,
@@ -20338,10 +23425,76 @@ void proto_register_dcerpc_drsuapi(void)
          { "Ndr Size", "drsuapi.drsuapi_DsAttributeValue.__ndr_size", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
        { &hf_drsuapi_drsuapi_DsAttributeValue_blob,
          { "Blob", "drsuapi.drsuapi_DsAttributeValue.blob", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
-       { &hf_drsuapi_drsuapi_DsBindInfoCtr_data,
-         { "Data", "drsuapi.drsuapi_DsBindInfoCtr.data", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_DsBindInfo24_pid,
+         { "Pid", "drsuapi.drsuapi_DsBindInfo24.pid", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_DsBindInfo24_site_guid,
+         { "Site Guid", "drsuapi.drsuapi_DsBindInfo24.site_guid", FT_GUID, BASE_NONE, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_DsBindInfo24_supported_extensions,
+         { "Supported Extensions", "drsuapi.drsuapi_DsBindInfo24.supported_extensions", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_DsBindInfo28_pid,
+         { "Pid", "drsuapi.drsuapi_DsBindInfo28.pid", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_DsBindInfo28_repl_epoch,
+         { "Repl Epoch", "drsuapi.drsuapi_DsBindInfo28.repl_epoch", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_DsBindInfo28_site_guid,
+         { "Site Guid", "drsuapi.drsuapi_DsBindInfo28.site_guid", FT_GUID, BASE_NONE, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_DsBindInfo28_supported_extensions,
+         { "Supported Extensions", "drsuapi.drsuapi_DsBindInfo28.supported_extensions", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_DsBindInfo32_pid,
+         { "Pid", "drsuapi.drsuapi_DsBindInfo32.pid", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_DsBindInfo32_repl_epoch,
+         { "Repl Epoch", "drsuapi.drsuapi_DsBindInfo32.repl_epoch", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_DsBindInfo32_site_guid,
+         { "Site Guid", "drsuapi.drsuapi_DsBindInfo32.site_guid", FT_GUID, BASE_NONE, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_DsBindInfo32_supported_extensions,
+         { "Supported Extensions", "drsuapi.drsuapi_DsBindInfo32.supported_extensions", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_DsBindInfo32_supported_extensions_ext,
+         { "Supported Extensions Ext", "drsuapi.drsuapi_DsBindInfo32.supported_extensions_ext", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_DsBindInfo48_config_dn_guid,
+         { "Config Dn Guid", "drsuapi.drsuapi_DsBindInfo48.config_dn_guid", FT_GUID, BASE_NONE, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_DsBindInfo48_pid,
+         { "Pid", "drsuapi.drsuapi_DsBindInfo48.pid", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_DsBindInfo48_repl_epoch,
+         { "Repl Epoch", "drsuapi.drsuapi_DsBindInfo48.repl_epoch", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_DsBindInfo48_site_guid,
+         { "Site Guid", "drsuapi.drsuapi_DsBindInfo48.site_guid", FT_GUID, BASE_NONE, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_DsBindInfo48_supported_extensions,
+         { "Supported Extensions", "drsuapi.drsuapi_DsBindInfo48.supported_extensions", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_DsBindInfo48_supported_extensions_ext,
+         { "Supported Extensions Ext", "drsuapi.drsuapi_DsBindInfo48.supported_extensions_ext", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_DsBindInfo52_config_dn_guid,
+         { "Config Dn Guid", "drsuapi.drsuapi_DsBindInfo52.config_dn_guid", FT_GUID, BASE_NONE, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_DsBindInfo52_pid,
+         { "Pid", "drsuapi.drsuapi_DsBindInfo52.pid", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_DsBindInfo52_repl_epoch,
+         { "Repl Epoch", "drsuapi.drsuapi_DsBindInfo52.repl_epoch", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_DsBindInfo52_site_guid,
+         { "Site Guid", "drsuapi.drsuapi_DsBindInfo52.site_guid", FT_GUID, BASE_NONE, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_DsBindInfo52_supported_capabilities_ext,
+         { "Supported Capabilities Ext", "drsuapi.drsuapi_DsBindInfo52.supported_capabilities_ext", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_DsBindInfo52_supported_extensions,
+         { "Supported Extensions", "drsuapi.drsuapi_DsBindInfo52.supported_extensions", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_DsBindInfo52_supported_extensions_ext,
+         { "Supported Extensions Ext", "drsuapi.drsuapi_DsBindInfo52.supported_extensions_ext", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_DsBindInfoCtr___ndr_length,
+         { "Ndr Length", "drsuapi.drsuapi_DsBindInfoCtr.__ndr_length", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_DsBindInfoCtr_info,
+         { "Info", "drsuapi.drsuapi_DsBindInfoCtr.info", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
        { &hf_drsuapi_drsuapi_DsBindInfoCtr_length,
          { "Length", "drsuapi.drsuapi_DsBindInfoCtr.length", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_DsBindInfoFallBack_info,
+         { "Info", "drsuapi.drsuapi_DsBindInfoFallBack.info", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_DsBindInfo_Fallback,
+         { "Fallback", "drsuapi.drsuapi_DsBindInfo.Fallback", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_DsBindInfo_info24,
+         { "Info24", "drsuapi.drsuapi_DsBindInfo.info24", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_DsBindInfo_info28,
+         { "Info28", "drsuapi.drsuapi_DsBindInfo.info28", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_DsBindInfo_info32,
+         { "Info32", "drsuapi.drsuapi_DsBindInfo.info32", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_DsBindInfo_info48,
+         { "Info48", "drsuapi.drsuapi_DsBindInfo.info48", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_DsBindInfo_info52,
+         { "Info52", "drsuapi.drsuapi_DsBindInfo.info52", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
        { &hf_drsuapi_drsuapi_DsBind_bind_guid,
          { "Bind Guid", "drsuapi.drsuapi_DsBind.bind_guid", FT_GUID, BASE_NONE, NULL, 0, NULL, HFILL }},
        { &hf_drsuapi_drsuapi_DsBind_bind_handle,
@@ -21548,6 +24701,50 @@ void proto_register_dcerpc_drsuapi(void)
          { "Address", "drsuapi.drsuapi_DsaAddressListItem_V1.address", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
        { &hf_drsuapi_drsuapi_DsaAddressListItem_V1_next,
          { "Next", "drsuapi.drsuapi_DsaAddressListItem_V1.next", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_FinishDemotionCtr1_op_error,
+         { "Op Error", "drsuapi.drsuapi_FinishDemotionCtr1.op_error", FT_UINT32, BASE_DEC, VALS(WERR_errors), 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_FinishDemotionCtr1_op_failed,
+         { "Op Failed", "drsuapi.drsuapi_FinishDemotionCtr1.op_failed", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_FinishDemotionCtr1_operations_done,
+         { "Operations Done", "drsuapi.drsuapi_FinishDemotionCtr1.operations_done", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_FinishDemotionCtr_ctr1,
+         { "Ctr1", "drsuapi.drsuapi_FinishDemotionCtr.ctr1", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_FinishDemotionRequest1_operations,
+         { "Operations", "drsuapi.drsuapi_FinishDemotionRequest1.operations", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_FinishDemotionRequest1_script_base,
+         { "Script Base", "drsuapi.drsuapi_FinishDemotionRequest1.script_base", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_FinishDemotionRequest1_uuid_helper_dest,
+         { "Uuid Helper Dest", "drsuapi.drsuapi_FinishDemotionRequest1.uuid_helper_dest", FT_GUID, BASE_NONE, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_FinishDemotionRequest_req1,
+         { "Req1", "drsuapi.drsuapi_FinishDemotionRequest.req1", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_FinishDemotion_bind_handle,
+         { "Bind Handle", "drsuapi.drsuapi_FinishDemotion.bind_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_FinishDemotion_ctr,
+         { "Ctr", "drsuapi.drsuapi_FinishDemotion.ctr", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_FinishDemotion_in_version,
+         { "In Version", "drsuapi.drsuapi_FinishDemotion.in_version", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_FinishDemotion_out_version,
+         { "Out Version", "drsuapi.drsuapi_FinishDemotion.out_version", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_FinishDemotion_req,
+         { "Req", "drsuapi.drsuapi_FinishDemotion.req", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_InitDemotionCtr1_op_error,
+         { "Op Error", "drsuapi.drsuapi_InitDemotionCtr1.op_error", FT_UINT32, BASE_DEC, VALS(WERR_errors), 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_InitDemotionCtr_ctr1,
+         { "Ctr1", "drsuapi.drsuapi_InitDemotionCtr.ctr1", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_InitDemotionRequest1_reserved,
+         { "Reserved", "drsuapi.drsuapi_InitDemotionRequest1.reserved", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_InitDemotionRequest_req1,
+         { "Req1", "drsuapi.drsuapi_InitDemotionRequest.req1", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_InitDemotion_bind_handle,
+         { "Bind Handle", "drsuapi.drsuapi_InitDemotion.bind_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_InitDemotion_ctr,
+         { "Ctr", "drsuapi.drsuapi_InitDemotion.ctr", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_InitDemotion_in_version,
+         { "In Version", "drsuapi.drsuapi_InitDemotion.in_version", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_InitDemotion_out_version,
+         { "Out Version", "drsuapi.drsuapi_InitDemotion.out_version", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_InitDemotion_req,
+         { "Req", "drsuapi.drsuapi_InitDemotion.req", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
        { &hf_drsuapi_drsuapi_NameResOp_V1_name_res,
          { "Name Res", "drsuapi.drsuapi_NameResOp_V1.name_res", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
        { &hf_drsuapi_drsuapi_NameResOp_V1_next_rdn,
@@ -21582,6 +24779,50 @@ void proto_register_dcerpc_drsuapi(void)
          { "Level Out", "drsuapi.drsuapi_QuerySitesByCost.level_out", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
        { &hf_drsuapi_drsuapi_QuerySitesByCost_req,
          { "Req", "drsuapi.drsuapi_QuerySitesByCost.req", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_ReadNgcKeyCtr1_ngc_key,
+         { "Ngc Key", "drsuapi.drsuapi_ReadNgcKeyCtr1.ngc_key", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_ReadNgcKeyCtr1_ngc_key_size,
+         { "Ngc Key Size", "drsuapi.drsuapi_ReadNgcKeyCtr1.ngc_key_size", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_ReadNgcKeyCtr1_ret_val,
+         { "Ret Val", "drsuapi.drsuapi_ReadNgcKeyCtr1.ret_val", FT_UINT32, BASE_DEC, VALS(WERR_errors), 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_ReadNgcKeyCtr_ctr1,
+         { "Ctr1", "drsuapi.drsuapi_ReadNgcKeyCtr.ctr1", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_ReadNgcKeyRequest1_account,
+         { "Account", "drsuapi.drsuapi_ReadNgcKeyRequest1.account", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_ReadNgcKeyRequest_req1,
+         { "Req1", "drsuapi.drsuapi_ReadNgcKeyRequest.req1", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_ReadNgcKey_bind_handle,
+         { "Bind Handle", "drsuapi.drsuapi_ReadNgcKey.bind_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_ReadNgcKey_ctr,
+         { "Ctr", "drsuapi.drsuapi_ReadNgcKey.ctr", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_ReadNgcKey_in_version,
+         { "In Version", "drsuapi.drsuapi_ReadNgcKey.in_version", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_ReadNgcKey_out_version,
+         { "Out Version", "drsuapi.drsuapi_ReadNgcKey.out_version", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_ReadNgcKey_req,
+         { "Req", "drsuapi.drsuapi_ReadNgcKey.req", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_ReplicaDemotionCtr1_op_error,
+         { "Op Error", "drsuapi.drsuapi_ReplicaDemotionCtr1.op_error", FT_UINT32, BASE_DEC, VALS(WERR_errors), 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_ReplicaDemotionCtr_ctr1,
+         { "Ctr1", "drsuapi.drsuapi_ReplicaDemotionCtr.ctr1", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_ReplicaDemotionRequest1_flags,
+         { "Flags", "drsuapi.drsuapi_ReplicaDemotionRequest1.flags", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_ReplicaDemotionRequest1_naming_context,
+         { "Naming Context", "drsuapi.drsuapi_ReplicaDemotionRequest1.naming_context", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_ReplicaDemotionRequest1_uuid_helper_dest,
+         { "Uuid Helper Dest", "drsuapi.drsuapi_ReplicaDemotionRequest1.uuid_helper_dest", FT_GUID, BASE_NONE, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_ReplicaDemotionRequest_req1,
+         { "Req1", "drsuapi.drsuapi_ReplicaDemotionRequest.req1", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_ReplicaDemotion_bind_handle,
+         { "Bind Handle", "drsuapi.drsuapi_ReplicaDemotion.bind_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_ReplicaDemotion_ctr,
+         { "Ctr", "drsuapi.drsuapi_ReplicaDemotion.ctr", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_ReplicaDemotion_in_version,
+         { "In Version", "drsuapi.drsuapi_ReplicaDemotion.in_version", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_ReplicaDemotion_out_version,
+         { "Out Version", "drsuapi.drsuapi_ReplicaDemotion.out_version", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_ReplicaDemotion_req,
+         { "Req", "drsuapi.drsuapi_ReplicaDemotion.req", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
        { &hf_drsuapi_drsuapi_SecBufferDesc_buff_count,
          { "Buff Count", "drsuapi.drsuapi_SecBufferDesc.buff_count", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
        { &hf_drsuapi_drsuapi_SecBufferDesc_buffers,
@@ -21594,6 +24835,84 @@ void proto_register_dcerpc_drsuapi(void)
          { "Buf Type", "drsuapi.drsuapi_SecBuffer.buf_type", FT_UINT32, BASE_DEC, VALS(drsuapi_drsuapi_SecBufferType_vals), 0, NULL, HFILL }},
        { &hf_drsuapi_drsuapi_SecBuffer_buffer,
          { "Buffer", "drsuapi.drsuapi_SecBuffer.buffer", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_SupportedExtensionsExt_DRSUAPI_SUPPORTED_EXTENSION_ADAM,
+         { "DRSUAPI SUPPORTED EXTENSION ADAM", "drsuapi.drsuapi_SupportedExtensionsExt.DRSUAPI_SUPPORTED_EXTENSION_ADAM", FT_BOOLEAN, 32, TFS(&drsuapi_SupportedExtensionsExt_DRSUAPI_SUPPORTED_EXTENSION_ADAM_tfs), ( 0x00000001 ), NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_SupportedExtensionsExt_DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V9,
+         { "DRSUAPI SUPPORTED EXTENSION GETCHGREPLY V9", "drsuapi.drsuapi_SupportedExtensionsExt.DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V9", FT_BOOLEAN, 32, TFS(&drsuapi_SupportedExtensionsExt_DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V9_tfs), ( 0x00000100 ), NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_SupportedExtensionsExt_DRSUAPI_SUPPORTED_EXTENSION_LH_BETA2,
+         { "DRSUAPI SUPPORTED EXTENSION LH BETA2", "drsuapi.drsuapi_SupportedExtensionsExt.DRSUAPI_SUPPORTED_EXTENSION_LH_BETA2", FT_BOOLEAN, 32, TFS(&drsuapi_SupportedExtensionsExt_DRSUAPI_SUPPORTED_EXTENSION_LH_BETA2_tfs), ( 0x00000002 ), NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_SupportedExtensionsExt_DRSUAPI_SUPPORTED_EXTENSION_RECYCLE_BIN,
+         { "DRSUAPI SUPPORTED EXTENSION RECYCLE BIN", "drsuapi.drsuapi_SupportedExtensionsExt.DRSUAPI_SUPPORTED_EXTENSION_RECYCLE_BIN", FT_BOOLEAN, 32, TFS(&drsuapi_SupportedExtensionsExt_DRSUAPI_SUPPORTED_EXTENSION_RECYCLE_BIN_tfs), ( 0x00000004 ), NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_SupportedExtensionsExt_DRSUAPI_SUPPORTED_EXTENSION_RPC_CORRELATIONID_1,
+         { "DRSUAPI SUPPORTED EXTENSION RPC CORRELATIONID 1", "drsuapi.drsuapi_SupportedExtensionsExt.DRSUAPI_SUPPORTED_EXTENSION_RPC_CORRELATIONID_1", FT_BOOLEAN, 32, TFS(&drsuapi_SupportedExtensionsExt_DRSUAPI_SUPPORTED_EXTENSION_RPC_CORRELATIONID_1_tfs), ( 0x00000400 ), NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_ADDENTRY,
+         { "DRSUAPI SUPPORTED EXTENSION ADDENTRY", "drsuapi.drsuapi_SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_ADDENTRY", FT_BOOLEAN, 32, TFS(&drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_ADDENTRY_tfs), ( 0x00000080 ), NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_ADDENTRYREPLY_V3,
+         { "DRSUAPI SUPPORTED EXTENSION ADDENTRYREPLY V3", "drsuapi.drsuapi_SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_ADDENTRYREPLY_V3", FT_BOOLEAN, 32, TFS(&drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_ADDENTRYREPLY_V3_tfs), ( 0x08000000 ), NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_ADDENTRY_V2,
+         { "DRSUAPI SUPPORTED EXTENSION ADDENTRY V2", "drsuapi.drsuapi_SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_ADDENTRY_V2", FT_BOOLEAN, 32, TFS(&drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_ADDENTRY_V2_tfs), ( 0x00000200 ), NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_ADD_SID_HISTORY,
+         { "DRSUAPI SUPPORTED EXTENSION ADD SID HISTORY", "drsuapi.drsuapi_SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_ADD_SID_HISTORY", FT_BOOLEAN, 32, TFS(&drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_ADD_SID_HISTORY_tfs), ( 0x00040000 ), NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_ASYNC_REPLICATION,
+         { "DRSUAPI SUPPORTED EXTENSION ASYNC REPLICATION", "drsuapi.drsuapi_SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_ASYNC_REPLICATION", FT_BOOLEAN, 32, TFS(&drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_ASYNC_REPLICATION_tfs), ( 0x00000002 ), NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_BASE,
+         { "DRSUAPI SUPPORTED EXTENSION BASE", "drsuapi.drsuapi_SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_BASE", FT_BOOLEAN, 32, TFS(&drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_BASE_tfs), ( 0x00000001 ), NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_CRYPTO_BIND,
+         { "DRSUAPI SUPPORTED EXTENSION CRYPTO BIND", "drsuapi.drsuapi_SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_CRYPTO_BIND", FT_BOOLEAN, 32, TFS(&drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_CRYPTO_BIND_tfs), ( 0x00002000 ), NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V01,
+         { "DRSUAPI SUPPORTED EXTENSION DCINFO V01", "drsuapi.drsuapi_SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V01", FT_BOOLEAN, 32, TFS(&drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V01_tfs), ( 0x00010000 ), NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V1,
+         { "DRSUAPI SUPPORTED EXTENSION DCINFO V1", "drsuapi.drsuapi_SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V1", FT_BOOLEAN, 32, TFS(&drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V1_tfs), ( 0x00000020 ), NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V2,
+         { "DRSUAPI SUPPORTED EXTENSION DCINFO V2", "drsuapi.drsuapi_SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V2", FT_BOOLEAN, 32, TFS(&drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V2_tfs), ( 0x00000800 ), NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V5,
+         { "DRSUAPI SUPPORTED EXTENSION GETCHGREPLY V5", "drsuapi.drsuapi_SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V5", FT_BOOLEAN, 32, TFS(&drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V5_tfs), ( 0x02000000 ), NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V6,
+         { "DRSUAPI SUPPORTED EXTENSION GETCHGREPLY V6", "drsuapi.drsuapi_SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V6", FT_BOOLEAN, 32, TFS(&drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V6_tfs), ( 0x04000000 ), NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V7,
+         { "DRSUAPI SUPPORTED EXTENSION GETCHGREPLY V7", "drsuapi.drsuapi_SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V7", FT_BOOLEAN, 32, TFS(&drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V7_tfs), ( 0x08000000 ), NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V10,
+         { "DRSUAPI SUPPORTED EXTENSION GETCHGREQ V10", "drsuapi.drsuapi_SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V10", FT_BOOLEAN, 32, TFS(&drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V10_tfs), ( 0x20000000 ), NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V5,
+         { "DRSUAPI SUPPORTED EXTENSION GETCHGREQ V5", "drsuapi.drsuapi_SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V5", FT_BOOLEAN, 32, TFS(&drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V5_tfs), ( 0x00100000 ), NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V6,
+         { "DRSUAPI SUPPORTED EXTENSION GETCHGREQ V6", "drsuapi.drsuapi_SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V6", FT_BOOLEAN, 32, TFS(&drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V6_tfs), ( 0x00400000 ), NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V8,
+         { "DRSUAPI SUPPORTED EXTENSION GETCHGREQ V8", "drsuapi.drsuapi_SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V8", FT_BOOLEAN, 32, TFS(&drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V8_tfs), ( 0x01000000 ), NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_GETCHG_COMPRESS,
+         { "DRSUAPI SUPPORTED EXTENSION GETCHG COMPRESS", "drsuapi.drsuapi_SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_GETCHG_COMPRESS", FT_BOOLEAN, 32, TFS(&drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_GETCHG_COMPRESS_tfs), ( 0x00000010 ), NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_GET_MEMBERSHIPS2,
+         { "DRSUAPI SUPPORTED EXTENSION GET MEMBERSHIPS2", "drsuapi.drsuapi_SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_GET_MEMBERSHIPS2", FT_BOOLEAN, 32, TFS(&drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_GET_MEMBERSHIPS2_tfs), ( 0x00200000 ), NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_GET_REPL_INFO,
+         { "DRSUAPI SUPPORTED EXTENSION GET REPL INFO", "drsuapi.drsuapi_SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_GET_REPL_INFO", FT_BOOLEAN, 32, TFS(&drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_GET_REPL_INFO_tfs), ( 0x00004000 ), NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_INSTANCE_TYPE_NOT_REQ_ON_MOD,
+         { "DRSUAPI SUPPORTED EXTENSION INSTANCE TYPE NOT REQ ON MOD", "drsuapi.drsuapi_SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_INSTANCE_TYPE_NOT_REQ_ON_MOD", FT_BOOLEAN, 32, TFS(&drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_INSTANCE_TYPE_NOT_REQ_ON_MOD_tfs), ( 0x00001000 ), NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_KCC_EXECUTE,
+         { "DRSUAPI SUPPORTED EXTENSION KCC EXECUTE", "drsuapi.drsuapi_SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_KCC_EXECUTE", FT_BOOLEAN, 32, TFS(&drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_KCC_EXECUTE_tfs), ( 0x00000100 ), NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_LINKED_VALUE_REPLICATION,
+         { "DRSUAPI SUPPORTED EXTENSION LINKED VALUE REPLICATION", "drsuapi.drsuapi_SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_LINKED_VALUE_REPLICATION", FT_BOOLEAN, 32, TFS(&drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_LINKED_VALUE_REPLICATION_tfs), ( 0x00000400 ), NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_MOVEREQ_V2,
+         { "DRSUAPI SUPPORTED EXTENSION MOVEREQ V2", "drsuapi.drsuapi_SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_MOVEREQ_V2", FT_BOOLEAN, 32, TFS(&drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_MOVEREQ_V2_tfs), ( 0x00000008 ), NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_NONDOMAIN_NCS,
+         { "DRSUAPI SUPPORTED EXTENSION NONDOMAIN NCS", "drsuapi.drsuapi_SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_NONDOMAIN_NCS", FT_BOOLEAN, 32, TFS(&drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_NONDOMAIN_NCS_tfs), ( 0x00800000 ), NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_POST_BETA3,
+         { "DRSUAPI SUPPORTED EXTENSION POST BETA3", "drsuapi.drsuapi_SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_POST_BETA3", FT_BOOLEAN, 32, TFS(&drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_POST_BETA3_tfs), ( 0x00080000 ), NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_REMOVEAPI,
+         { "DRSUAPI SUPPORTED EXTENSION REMOVEAPI", "drsuapi.drsuapi_SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_REMOVEAPI", FT_BOOLEAN, 32, TFS(&drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_REMOVEAPI_tfs), ( 0x00000004 ), NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_RESERVED_PART2,
+         { "DRSUAPI SUPPORTED EXTENSION RESERVED PART2", "drsuapi.drsuapi_SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_RESERVED_PART2", FT_BOOLEAN, 32, TFS(&drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_RESERVED_PART2_tfs), ( 0x40000000 ), NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_RESERVED_PART3,
+         { "DRSUAPI SUPPORTED EXTENSION RESERVED PART3", "drsuapi.drsuapi_SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_RESERVED_PART3", FT_BOOLEAN, 32, TFS(&drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_RESERVED_PART3_tfs), ( 0x80000000 ), NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_RESTORE_USN_OPTIMIZATION,
+         { "DRSUAPI SUPPORTED EXTENSION RESTORE USN OPTIMIZATION", "drsuapi.drsuapi_SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_RESTORE_USN_OPTIMIZATION", FT_BOOLEAN, 32, TFS(&drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_RESTORE_USN_OPTIMIZATION_tfs), ( 0x00000040 ), NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_STRONG_ENCRYPTION,
+         { "DRSUAPI SUPPORTED EXTENSION STRONG ENCRYPTION", "drsuapi.drsuapi_SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_STRONG_ENCRYPTION", FT_BOOLEAN, 32, TFS(&drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_STRONG_ENCRYPTION_tfs), ( 0x00008000 ), NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_TRANSITIVE_MEMBERSHIP,
+         { "DRSUAPI SUPPORTED EXTENSION TRANSITIVE MEMBERSHIP", "drsuapi.drsuapi_SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_TRANSITIVE_MEMBERSHIP", FT_BOOLEAN, 32, TFS(&drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_TRANSITIVE_MEMBERSHIP_tfs), ( 0x00020000 ), NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_VERIFY_OBJECT,
+         { "DRSUAPI SUPPORTED EXTENSION VERIFY OBJECT", "drsuapi.drsuapi_SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_VERIFY_OBJECT", FT_BOOLEAN, 32, TFS(&drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_VERIFY_OBJECT_tfs), ( 0x08000000 ), NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_XPRESS_COMPRESS,
+         { "DRSUAPI SUPPORTED EXTENSION XPRESS COMPRESS", "drsuapi.drsuapi_SupportedExtensions.DRSUAPI_SUPPORTED_EXTENSION_XPRESS_COMPRESS", FT_BOOLEAN, 32, TFS(&drsuapi_SupportedExtensions_DRSUAPI_SUPPORTED_EXTENSION_XPRESS_COMPRESS_tfs), ( 0x10000000 ), NULL, HFILL }},
        { &hf_drsuapi_drsuapi_VAR_SIZE_BUFFER_WITH_VERSION_buffer,
          { "Buffer", "drsuapi.drsuapi_VAR_SIZE_BUFFER_WITH_VERSION.buffer", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
        { &hf_drsuapi_drsuapi_VAR_SIZE_BUFFER_WITH_VERSION_buffer_size,
@@ -21602,6 +24921,28 @@ void proto_register_dcerpc_drsuapi(void)
          { "Padding", "drsuapi.drsuapi_VAR_SIZE_BUFFER_WITH_VERSION.padding", FT_UINT64, BASE_DEC, NULL, 0, NULL, HFILL }},
        { &hf_drsuapi_drsuapi_VAR_SIZE_BUFFER_WITH_VERSION_version,
          { "Version", "drsuapi.drsuapi_VAR_SIZE_BUFFER_WITH_VERSION.version", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_WriteNgcKeyCtr1_ret_val,
+         { "Ret Val", "drsuapi.drsuapi_WriteNgcKeyCtr1.ret_val", FT_UINT32, BASE_DEC, VALS(WERR_errors), 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_WriteNgcKeyCtr_ctr1,
+         { "Ctr1", "drsuapi.drsuapi_WriteNgcKeyCtr.ctr1", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_WriteNgcKeyRequest1_account,
+         { "Account", "drsuapi.drsuapi_WriteNgcKeyRequest1.account", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_WriteNgcKeyRequest1_ngc_key,
+         { "Ngc Key", "drsuapi.drsuapi_WriteNgcKeyRequest1.ngc_key", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_WriteNgcKeyRequest1_ngc_key_size,
+         { "Ngc Key Size", "drsuapi.drsuapi_WriteNgcKeyRequest1.ngc_key_size", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_WriteNgcKeyRequest_req1,
+         { "Req1", "drsuapi.drsuapi_WriteNgcKeyRequest.req1", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_WriteNgcKey_bind_handle,
+         { "Bind Handle", "drsuapi.drsuapi_WriteNgcKey.bind_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_WriteNgcKey_ctr,
+         { "Ctr", "drsuapi.drsuapi_WriteNgcKey.ctr", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_WriteNgcKey_in_version,
+         { "In Version", "drsuapi.drsuapi_WriteNgcKey.in_version", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_WriteNgcKey_out_version,
+         { "Out Version", "drsuapi.drsuapi_WriteNgcKey.out_version", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
+       { &hf_drsuapi_drsuapi_WriteNgcKey_req,
+         { "Req", "drsuapi.drsuapi_WriteNgcKey.req", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
        { &hf_drsuapi_lsa_String_length,
          { "Length", "drsuapi.lsa_String.length", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
        { &hf_drsuapi_lsa_String_size,
@@ -21755,6 +25096,15 @@ void proto_register_dcerpc_drsuapi(void)
                &ett_drsuapi_drsuapi_DrsMoreOptions,
                &ett_drsuapi_drsuapi_DrsUpdate,
                &ett_drsuapi_drsuapi_VAR_SIZE_BUFFER_WITH_VERSION,
+               &ett_drsuapi_drsuapi_SupportedExtensions,
+               &ett_drsuapi_drsuapi_SupportedExtensionsExt,
+               &ett_drsuapi_drsuapi_DsBindInfo24,
+               &ett_drsuapi_drsuapi_DsBindInfo28,
+               &ett_drsuapi_drsuapi_DsBindInfo32,
+               &ett_drsuapi_drsuapi_DsBindInfo48,
+               &ett_drsuapi_drsuapi_DsBindInfo52,
+               &ett_drsuapi_drsuapi_DsBindInfoFallBack,
+               &ett_drsuapi_drsuapi_DsBindInfo,
                &ett_drsuapi_drsuapi_DsBindInfoCtr,
                &ett_drsuapi_drsuapi_DsReplicaObjectIdentifier,
                &ett_drsuapi_drsuapi_DsReplicaSyncRequest1,
@@ -21897,6 +25247,30 @@ void proto_register_dcerpc_drsuapi(void)
                &ett_drsuapi_drsuapi_QuerySitesByCostCtr,
                &ett_drsuapi_drsuapi_QuerySitesByCostRequest1,
                &ett_drsuapi_drsuapi_QuerySitesByCostRequest,
+               &ett_drsuapi_drsuapi_InitDemotionRequest1,
+               &ett_drsuapi_drsuapi_InitDemotionRequest,
+               &ett_drsuapi_drsuapi_InitDemotionCtr1,
+               &ett_drsuapi_drsuapi_InitDemotionCtr,
+               &ett_drsuapi_drsuapi_ReplicaDemotionRequest1,
+               &ett_drsuapi_drsuapi_ReplicaDemotionRequest,
+               &ett_drsuapi_drsuapi_ReplicaDemotionCtr1,
+               &ett_drsuapi_drsuapi_ReplicaDemotionCtr,
+               &ett_drsuapi_drsuapi_FinishDemotionRequest1,
+               &ett_drsuapi_drsuapi_FinishDemotionRequest,
+               &ett_drsuapi_drsuapi_FinishDemotionCtr1,
+               &ett_drsuapi_drsuapi_FinishDemotionCtr,
+               &ett_drsuapi_drsuapi_AddCloneDCRequest1,
+               &ett_drsuapi_drsuapi_AddCloneDCRequest,
+               &ett_drsuapi_drsuapi_AddCloneDCCtr1,
+               &ett_drsuapi_drsuapi_AddCloneDCCtr,
+               &ett_drsuapi_drsuapi_WriteNgcKeyRequest1,
+               &ett_drsuapi_drsuapi_WriteNgcKeyRequest,
+               &ett_drsuapi_drsuapi_WriteNgcKeyCtr1,
+               &ett_drsuapi_drsuapi_WriteNgcKeyCtr,
+               &ett_drsuapi_drsuapi_ReadNgcKeyRequest1,
+               &ett_drsuapi_drsuapi_ReadNgcKeyRequest,
+               &ett_drsuapi_drsuapi_ReadNgcKeyCtr1,
+               &ett_drsuapi_drsuapi_ReadNgcKeyCtr,
        };
 
        proto_dcerpc_drsuapi = proto_register_protocol("Active Directory Replication", "DRSUAPI", "drsuapi");
index a28d17e854a502952b4acc8d5df9029bc97df0c1..2fd37a026f393ccebe9a10dbe4dbf9604467305f 100644 (file)
@@ -43,6 +43,14 @@ int drsuapi_dissect_bitmap_DrsOptions(tvbuff_t *tvb _U_, int offset _U_, packet_
 int drsuapi_dissect_bitmap_DrsMoreOptions(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
 int drsuapi_dissect_bitmap_DrsUpdate(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
 int drsuapi_dissect_struct_VAR_SIZE_BUFFER_WITH_VERSION(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
+int drsuapi_dissect_bitmap_SupportedExtensions(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
+int drsuapi_dissect_bitmap_SupportedExtensionsExt(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
+int drsuapi_dissect_struct_DsBindInfo24(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
+int drsuapi_dissect_struct_DsBindInfo28(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
+int drsuapi_dissect_struct_DsBindInfo32(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
+int drsuapi_dissect_struct_DsBindInfo48(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
+int drsuapi_dissect_struct_DsBindInfo52(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
+int drsuapi_dissect_struct_DsBindInfoFallBack(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
 int drsuapi_dissect_struct_DsBindInfoCtr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
 int drsuapi_dissect_struct_DsReplicaObjectIdentifier(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
 int drsuapi_dissect_struct_DsReplicaSyncRequest1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
@@ -432,4 +440,16 @@ int drsuapi_dissect_struct_DsGetMemberships2Request1(tvbuff_t *tvb _U_, int offs
 int drsuapi_dissect_struct_DsSiteCostInfo(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
 int drsuapi_dissect_struct_QuerySitesByCostCtr1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
 int drsuapi_dissect_struct_QuerySitesByCostRequest1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
+int drsuapi_dissect_struct_InitDemotionRequest1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
+int drsuapi_dissect_struct_InitDemotionCtr1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
+int drsuapi_dissect_struct_ReplicaDemotionRequest1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
+int drsuapi_dissect_struct_ReplicaDemotionCtr1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
+int drsuapi_dissect_struct_FinishDemotionRequest1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
+int drsuapi_dissect_struct_FinishDemotionCtr1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
+int drsuapi_dissect_struct_AddCloneDCRequest1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
+int drsuapi_dissect_struct_AddCloneDCCtr1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
+int drsuapi_dissect_struct_WriteNgcKeyRequest1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
+int drsuapi_dissect_struct_WriteNgcKeyCtr1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
+int drsuapi_dissect_struct_ReadNgcKeyRequest1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
+int drsuapi_dissect_struct_ReadNgcKeyCtr1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
 #endif /* __PACKET_DCERPC_DRSUAPI_H */
index 91dc3925653ab6f225977d32b0b3b2de79a3d7b3..745a19679ad24773af5450e4a8c830b46652e33b 100644 (file)
@@ -1,5 +1,17 @@
 # Conformance file for drsuapi
 
+MANUAL drsuapi_dissect_struct_DsBindInfoCtr
+
+NOEMIT drsuapi_dissect_element_DsBindInfoCtr_length
+
+MANUAL drsuapi_dissect_DsBindInfo
+NOEMIT drsuapi_dissect_element_DsBindInfo_info24
+NOEMIT drsuapi_dissect_element_DsBindInfo_info28
+NOEMIT drsuapi_dissect_element_DsBindInfo_info32
+NOEMIT drsuapi_dissect_element_DsBindInfo_info48
+NOEMIT drsuapi_dissect_element_DsBindInfo_info52
+NOEMIT drsuapi_dissect_element_DsBindInfo_Fallback
+
 MANUAL drsuapi_dissect_element_DsReplicaObjectIdentifier_sid
 MANUAL drsuapi_dissect_element_DsReplicaAttribute_attid
 MANUAL drsuapi_dissect_element_DsAttributeValue_blob_
@@ -1192,4 +1204,96 @@ drsuapi_dissect_element_DsReplicaObjectIdentifier_dn(tvbuff_t *tvb _U_, int offs
 
        return offset;
 }
+
+/* IDL: struct { */
+/* IDL:        [range(1,10000)] uint32 length; */
+/* IDL:        [size_is(length)] uint8 data[*]; */
+/* IDL: } */
+
+static int
+drsuapi_dissect_element_DsBindInfoCtr_length_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsBindInfoCtr_length, 0);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_DsBindInfo(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
+
+static int
+drsuapi_dissect_element_DsBindInfoCtr_data_(tvbuff_t *tvb, int offset, int length, packet_info *pinfo, proto_tree *tree, dcerpc_info *di, guint8 *drep)
+{
+       offset = drsuapi_dissect_DsBindInfo(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsBindInfoCtr_info, length);
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_element_DsBindInfoCtr_data(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+       offset = dissect_ndr_ucarray_block(tvb, offset, pinfo, tree, di, drep, drsuapi_dissect_element_DsBindInfoCtr_data_);
+
+       return offset;
+}
+
+int
+drsuapi_dissect_struct_DsBindInfoCtr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+{
+       proto_item *item = NULL;
+       proto_tree *tree = NULL;
+       int old_offset;
+
+       ALIGN_TO_4_BYTES;
+
+       old_offset = offset;
+
+       if (parent_tree) {
+               item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+               tree = proto_item_add_subtree(item, ett_drsuapi_drsuapi_DsBindInfoCtr);
+       }
+
+       offset = drsuapi_dissect_element_DsBindInfoCtr_length_(tvb, offset, pinfo, tree, di, drep);
+
+       offset = drsuapi_dissect_element_DsBindInfoCtr_data(tvb, offset, pinfo, tree, di, drep);
+
+
+       proto_item_set_len(item, offset-old_offset);
+
+       if (di->call_data->flags & DCERPC_IS_NDR64) {
+               ALIGN_TO_4_BYTES;
+       }
+
+       return offset;
+}
+
+static int
+drsuapi_dissect_DsBindInfo(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+{
+       proto_item *item = NULL;
+       proto_tree *tree = NULL;
+       int old_offset;
+       guint32 length = param;
+
+       old_offset = offset;
+       if (parent_tree) {
+               tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_DsBindInfo, &item, "drsuapi_DsBindInfo");
+       }
+
+       if (length >= 52) {
+               drsuapi_dissect_struct_DsBindInfo52(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsBindInfo_info52,0);
+       } else if (length >= 48) {
+               drsuapi_dissect_struct_DsBindInfo48(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsBindInfo_info48,0);
+       } else if (length >= 32) {
+               drsuapi_dissect_struct_DsBindInfo32(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsBindInfo_info32,0);
+       } else if (length >= 28) {
+               drsuapi_dissect_struct_DsBindInfo28(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsBindInfo_info28,0);
+       } else if (length >= 24) {
+               drsuapi_dissect_struct_DsBindInfo24(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsBindInfo_info24,0);
+       }
+       offset += length;
+       proto_item_set_len(item, offset-old_offset);
+
+       return offset;
+}
 CODE END
index cf3c5efa1f8edbfe9be10d6a90416e0a27fbbae0..7fb6a941d58205f1425fae967c7424cfd4961f91 100644 (file)
@@ -216,7 +216,6 @@ interface drsuapi
 
        /*****************/
         /* Function 0x00 drsuapi_DsBind() */
-#if 0
         /* MS-DRSR 5.39 DRS_EXTENSIONS_INT */
         typedef [bitmap32bit] bitmap {
                DRSUAPI_SUPPORTED_EXTENSION_BASE                        = 0x00000001,
@@ -377,11 +376,6 @@ interface drsuapi
                [value(length)] uint32 __ndr_length;
                [switch_is(length)] drsuapi_DsBindInfo info;
        } drsuapi_DsBindInfoCtr;
-#endif
-        typedef [flag(NDR_PAHEX)] struct {
-               [range(1,10000)] uint32 length;
-               [size_is(length)] uint8 data[];
-       } drsuapi_DsBindInfoCtr;
 
        /* this is a magic guid you need to pass to DsBind to make drsuapi_DsWriteAccountSpn() work
         *
@@ -2175,4 +2169,174 @@ interface drsuapi
                [out,ref] uint32 *level_out,
                [out,ref] [switch_is(*level_out)] drsuapi_QuerySitesByCostCtr *ctr
        );
+
+       /**********************/
+       /* Function 0x19 (25) */
+       typedef struct {
+               uint32 reserved;
+       } drsuapi_InitDemotionRequest1;
+
+       typedef [switch_type(uint32)] union {
+               [case(1)] drsuapi_InitDemotionRequest1 req1;
+       } drsuapi_InitDemotionRequest;
+
+       typedef struct {
+               WERROR op_error;
+       } drsuapi_InitDemotionCtr1;
+
+       typedef [switch_type(uint32)] union {
+               [case(1)] drsuapi_InitDemotionCtr1 ctr1;
+       } drsuapi_InitDemotionCtr;
+
+       WERROR drsuapi_InitDemotion(
+               [in] policy_handle *bind_handle,
+               [in] uint32 in_version,
+               [in,ref] [switch_is(in_version)] drsuapi_InitDemotionRequest *req,
+               [out,ref] uint32 *out_version,
+               [out,ref] [switch_is(*out_version)] drsuapi_InitDemotionCtr *ctr
+       );
+
+       /**********************/
+       /* Function 0x20 (26) */
+       typedef struct {
+               uint32 flags;
+               GUID uuid_helper_dest;
+               [ref] drsuapi_DsReplicaObjectIdentifier *naming_context;
+       } drsuapi_ReplicaDemotionRequest1;
+
+       typedef [switch_type(uint32)] union {
+               [case(1)] drsuapi_ReplicaDemotionRequest1 req1;
+       } drsuapi_ReplicaDemotionRequest;
+
+       typedef struct {
+               WERROR op_error;
+       } drsuapi_ReplicaDemotionCtr1;
+
+       typedef [switch_type(uint32)] union {
+               [case(1)] drsuapi_ReplicaDemotionCtr1 ctr1;
+       } drsuapi_ReplicaDemotionCtr;
+
+       WERROR drsuapi_ReplicaDemotion(
+               [in] policy_handle *bind_handle,
+               [in] uint32 in_version,
+               [in,ref] [switch_is(in_version)] drsuapi_ReplicaDemotionRequest *req,
+               [out,ref] uint32 *out_version,
+               [out,ref] [switch_is(*out_version)] drsuapi_ReplicaDemotionCtr *ctr
+       );
+
+       /**********************/
+       /* Function 0x21 (27) */
+       typedef struct {
+               uint32 operations;
+               GUID uuid_helper_dest;
+               [charset(UTF16),string] uint16 *script_base;
+       } drsuapi_FinishDemotionRequest1;
+
+       typedef [switch_type(uint32)] union {
+               [case(1)] drsuapi_FinishDemotionRequest1 req1;
+       } drsuapi_FinishDemotionRequest;
+
+       typedef struct {
+               uint32 operations_done;
+               uint32 op_failed;
+               WERROR op_error;
+       } drsuapi_FinishDemotionCtr1;
+
+       typedef [switch_type(uint32)] union {
+               [case(1)] drsuapi_FinishDemotionCtr1 ctr1;
+       } drsuapi_FinishDemotionCtr;
+
+       WERROR drsuapi_FinishDemotion(
+               [in] policy_handle *bind_handle,
+               [in] uint32 in_version,
+               [in,ref] [switch_is(in_version)] drsuapi_FinishDemotionRequest *req,
+               [out,ref] uint32 *out_version,
+               [out,ref] [switch_is(*out_version)] drsuapi_FinishDemotionCtr *ctr
+       );
+
+       /**********************/
+       /* Function 0x22 (28) */
+       typedef struct {
+               [charset(UTF16),string] uint16 *clone_dc_name;
+               [charset(UTF16),string] uint16 *site;
+       } drsuapi_AddCloneDCRequest1;
+
+       typedef [switch_type(uint32)] union {
+               [case(1)] drsuapi_AddCloneDCRequest1 req1;
+       } drsuapi_AddCloneDCRequest;
+
+       typedef struct {
+               [charset(UTF16),string] uint16 *clone_dc_name;
+               [charset(UTF16),string] uint16 *site;
+               [range(0,1024)] uint32 password_length;
+               [charset(UTF16),size_is(password_length)] uint16 *new_dc_account_password;
+       } drsuapi_AddCloneDCCtr1;
+
+       typedef [switch_type(uint32)] union {
+               [case(1)] drsuapi_AddCloneDCCtr1 ctr1;
+       } drsuapi_AddCloneDCCtr;
+
+       WERROR drsuapi_AddCloneDC(
+               [in] policy_handle *bind_handle,
+               [in] uint32 in_version,
+               [in,ref] [switch_is(in_version)] drsuapi_AddCloneDCRequest *req,
+               [out,ref] uint32 *out_version,
+               [out,ref] [switch_is(*out_version)] drsuapi_AddCloneDCCtr *ctr
+       );
+
+       /**********************/
+       /* Function 0x23 (29) */
+       typedef struct {
+               [charset(UTF16),string] uint16 *account;
+               [range(0,0xFFFF)] uint32 ngc_key_size;
+               [flag(NDR_PAHEX),size_is(ngc_key_size)] uint8 *ngc_key;
+       } drsuapi_WriteNgcKeyRequest1;
+
+       typedef [switch_type(uint32)] union {
+               [case(1)] drsuapi_WriteNgcKeyRequest1 req1;
+       } drsuapi_WriteNgcKeyRequest;
+
+       typedef struct {
+               WERROR ret_val;
+       } drsuapi_WriteNgcKeyCtr1;
+
+       typedef [switch_type(uint32)] union {
+               [case(1)] drsuapi_WriteNgcKeyCtr1 ctr1;
+       } drsuapi_WriteNgcKeyCtr;
+
+       WERROR drsuapi_WriteNgcKey(
+               [in] policy_handle *bind_handle,
+               [in] uint32 in_version,
+               [in,ref] [switch_is(in_version)] drsuapi_WriteNgcKeyRequest *req,
+               [out,ref] uint32 *out_version,
+               [out,ref] [switch_is(*out_version)] drsuapi_WriteNgcKeyCtr *ctr
+       );
+
+       /**********************/
+       /* Function 0x24 (30) */
+       typedef struct {
+               [charset(UTF16),string] uint16 *account;
+       } drsuapi_ReadNgcKeyRequest1;
+
+       typedef [switch_type(uint32)] union {
+               [case(1)] drsuapi_ReadNgcKeyRequest1 req1;
+       } drsuapi_ReadNgcKeyRequest;
+
+       typedef struct {
+               WERROR ret_val;
+               [range(0,0xFFFF)] uint32 ngc_key_size;
+               [flag(NDR_PAHEX),size_is(ngc_key_size)] uint8 *ngc_key;
+       } drsuapi_ReadNgcKeyCtr1;
+
+       typedef [switch_type(uint32)] union {
+               [case(1)] drsuapi_ReadNgcKeyCtr1 ctr1;
+       } drsuapi_ReadNgcKeyCtr;
+
+       WERROR drsuapi_ReadNgcKey(
+               [in] policy_handle *bind_handle,
+               [in] uint32 in_version,
+               [in,ref] [switch_is(in_version)] drsuapi_ReadNgcKeyRequest *req,
+               [out,ref] uint32 *out_version,
+               [out,ref] [switch_is(*out_version)] drsuapi_ReadNgcKeyCtr *ctr
+       );
 }